diff --git a/datastore/apiv1/datastorepb/aggregation_result.pb.go b/datastore/apiv1/datastorepb/aggregation_result.pb.go new file mode 100755 index 000000000000..1c411eb7a0ea --- /dev/null +++ b/datastore/apiv1/datastorepb/aggregation_result.pb.go @@ -0,0 +1,315 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/datastore/v1/aggregation_result.proto + +package datastorepb + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + 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) +) + +// The result of a single bucket from a Datastore aggregation query. +// +// The keys of `aggregate_properties` are the same for all results in an +// aggregation query, unlike entity queries which can have different fields +// present for each result. +type AggregationResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The result of the aggregation functions, ex: `COUNT(*) AS total_entities`. + // + // The key is the + // [alias][google.datastore.v1.AggregationQuery.Aggregation.alias] assigned to + // the aggregation function on input and the size of this map equals the + // number of aggregation functions in the query. + AggregateProperties map[string]*Value `protobuf:"bytes,2,rep,name=aggregate_properties,json=aggregateProperties,proto3" json:"aggregate_properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *AggregationResult) Reset() { + *x = AggregationResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_aggregation_result_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationResult) ProtoMessage() {} + +func (x *AggregationResult) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_aggregation_result_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 AggregationResult.ProtoReflect.Descriptor instead. +func (*AggregationResult) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_aggregation_result_proto_rawDescGZIP(), []int{0} +} + +func (x *AggregationResult) GetAggregateProperties() map[string]*Value { + if x != nil { + return x.AggregateProperties + } + return nil +} + +// A batch of aggregation results produced by an aggregation query. +type AggregationResultBatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The aggregation results for this batch. + AggregationResults []*AggregationResult `protobuf:"bytes,1,rep,name=aggregation_results,json=aggregationResults,proto3" json:"aggregation_results,omitempty"` + // The state of the query after the current batch. + // Only COUNT(*) aggregations are supported in the initial launch. Therefore, + // expected result type is limited to `NO_MORE_RESULTS`. + MoreResults QueryResultBatch_MoreResultsType `protobuf:"varint,2,opt,name=more_results,json=moreResults,proto3,enum=google.datastore.v1.QueryResultBatch_MoreResultsType" json:"more_results,omitempty"` + // Read timestamp this batch was returned from. + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater timestamp. Each batch's read timestamp + // is valid for all preceding batches. + ReadTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"` +} + +func (x *AggregationResultBatch) Reset() { + *x = AggregationResultBatch{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_aggregation_result_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationResultBatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationResultBatch) ProtoMessage() {} + +func (x *AggregationResultBatch) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_aggregation_result_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 AggregationResultBatch.ProtoReflect.Descriptor instead. +func (*AggregationResultBatch) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_aggregation_result_proto_rawDescGZIP(), []int{1} +} + +func (x *AggregationResultBatch) GetAggregationResults() []*AggregationResult { + if x != nil { + return x.AggregationResults + } + return nil +} + +func (x *AggregationResultBatch) GetMoreResults() QueryResultBatch_MoreResultsType { + if x != nil { + return x.MoreResults + } + return QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED +} + +func (x *AggregationResultBatch) GetReadTime() *timestamppb.Timestamp { + if x != nil { + return x.ReadTime + } + return nil +} + +var File_google_datastore_v1_aggregation_result_proto protoreflect.FileDescriptor + +var file_google_datastore_v1_aggregation_result_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 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, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x72, 0x0a, + 0x14, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x1a, 0x62, 0x0a, 0x18, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x02, 0x0a, 0x16, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x57, 0x0a, 0x13, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x0c, 0x6d, 0x6f, 0x72, + 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 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, 0x08, 0x72, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0xc7, 0x01, 0x0a, + 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x16, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0xaa, + 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_datastore_v1_aggregation_result_proto_rawDescOnce sync.Once + file_google_datastore_v1_aggregation_result_proto_rawDescData = file_google_datastore_v1_aggregation_result_proto_rawDesc +) + +func file_google_datastore_v1_aggregation_result_proto_rawDescGZIP() []byte { + file_google_datastore_v1_aggregation_result_proto_rawDescOnce.Do(func() { + file_google_datastore_v1_aggregation_result_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_aggregation_result_proto_rawDescData) + }) + return file_google_datastore_v1_aggregation_result_proto_rawDescData +} + +var file_google_datastore_v1_aggregation_result_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_google_datastore_v1_aggregation_result_proto_goTypes = []any{ + (*AggregationResult)(nil), // 0: google.datastore.v1.AggregationResult + (*AggregationResultBatch)(nil), // 1: google.datastore.v1.AggregationResultBatch + nil, // 2: google.datastore.v1.AggregationResult.AggregatePropertiesEntry + (QueryResultBatch_MoreResultsType)(0), // 3: google.datastore.v1.QueryResultBatch.MoreResultsType + (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp + (*Value)(nil), // 5: google.datastore.v1.Value +} +var file_google_datastore_v1_aggregation_result_proto_depIdxs = []int32{ + 2, // 0: google.datastore.v1.AggregationResult.aggregate_properties:type_name -> google.datastore.v1.AggregationResult.AggregatePropertiesEntry + 0, // 1: google.datastore.v1.AggregationResultBatch.aggregation_results:type_name -> google.datastore.v1.AggregationResult + 3, // 2: google.datastore.v1.AggregationResultBatch.more_results:type_name -> google.datastore.v1.QueryResultBatch.MoreResultsType + 4, // 3: google.datastore.v1.AggregationResultBatch.read_time:type_name -> google.protobuf.Timestamp + 5, // 4: google.datastore.v1.AggregationResult.AggregatePropertiesEntry.value:type_name -> google.datastore.v1.Value + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_google_datastore_v1_aggregation_result_proto_init() } +func file_google_datastore_v1_aggregation_result_proto_init() { + if File_google_datastore_v1_aggregation_result_proto != nil { + return + } + file_google_datastore_v1_entity_proto_init() + file_google_datastore_v1_query_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_datastore_v1_aggregation_result_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*AggregationResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_aggregation_result_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*AggregationResultBatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_datastore_v1_aggregation_result_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_datastore_v1_aggregation_result_proto_goTypes, + DependencyIndexes: file_google_datastore_v1_aggregation_result_proto_depIdxs, + MessageInfos: file_google_datastore_v1_aggregation_result_proto_msgTypes, + }.Build() + File_google_datastore_v1_aggregation_result_proto = out.File + file_google_datastore_v1_aggregation_result_proto_rawDesc = nil + file_google_datastore_v1_aggregation_result_proto_goTypes = nil + file_google_datastore_v1_aggregation_result_proto_depIdxs = nil +} diff --git a/datastore/apiv1/datastorepb/datastore.pb.go b/datastore/apiv1/datastorepb/datastore.pb.go new file mode 100755 index 000000000000..9575ec6ff6e8 --- /dev/null +++ b/datastore/apiv1/datastorepb/datastore.pb.go @@ -0,0 +1,3437 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/datastore/v1/datastore.proto + +package datastorepb + +import ( + context "context" + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + 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) +) + +// The modes available for commits. +type CommitRequest_Mode int32 + +const ( + // Unspecified. This value must not be used. + CommitRequest_MODE_UNSPECIFIED CommitRequest_Mode = 0 + // Transactional: The mutations are either all applied, or none are applied. + // Learn about transactions + // [here](https://cloud.google.com/datastore/docs/concepts/transactions). + CommitRequest_TRANSACTIONAL CommitRequest_Mode = 1 + // Non-transactional: The mutations may not apply as all or none. + CommitRequest_NON_TRANSACTIONAL CommitRequest_Mode = 2 +) + +// Enum value maps for CommitRequest_Mode. +var ( + CommitRequest_Mode_name = map[int32]string{ + 0: "MODE_UNSPECIFIED", + 1: "TRANSACTIONAL", + 2: "NON_TRANSACTIONAL", + } + CommitRequest_Mode_value = map[string]int32{ + "MODE_UNSPECIFIED": 0, + "TRANSACTIONAL": 1, + "NON_TRANSACTIONAL": 2, + } +) + +func (x CommitRequest_Mode) Enum() *CommitRequest_Mode { + p := new(CommitRequest_Mode) + *p = x + return p +} + +func (x CommitRequest_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CommitRequest_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_datastore_proto_enumTypes[0].Descriptor() +} + +func (CommitRequest_Mode) Type() protoreflect.EnumType { + return &file_google_datastore_v1_datastore_proto_enumTypes[0] +} + +func (x CommitRequest_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CommitRequest_Mode.Descriptor instead. +func (CommitRequest_Mode) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{10, 0} +} + +// The possible values for read consistencies. +type ReadOptions_ReadConsistency int32 + +const ( + // Unspecified. This value must not be used. + ReadOptions_READ_CONSISTENCY_UNSPECIFIED ReadOptions_ReadConsistency = 0 + // Strong consistency. + ReadOptions_STRONG ReadOptions_ReadConsistency = 1 + // Eventual consistency. + ReadOptions_EVENTUAL ReadOptions_ReadConsistency = 2 +) + +// Enum value maps for ReadOptions_ReadConsistency. +var ( + ReadOptions_ReadConsistency_name = map[int32]string{ + 0: "READ_CONSISTENCY_UNSPECIFIED", + 1: "STRONG", + 2: "EVENTUAL", + } + ReadOptions_ReadConsistency_value = map[string]int32{ + "READ_CONSISTENCY_UNSPECIFIED": 0, + "STRONG": 1, + "EVENTUAL": 2, + } +) + +func (x ReadOptions_ReadConsistency) Enum() *ReadOptions_ReadConsistency { + p := new(ReadOptions_ReadConsistency) + *p = x + return p +} + +func (x ReadOptions_ReadConsistency) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ReadOptions_ReadConsistency) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_datastore_proto_enumTypes[1].Descriptor() +} + +func (ReadOptions_ReadConsistency) Type() protoreflect.EnumType { + return &file_google_datastore_v1_datastore_proto_enumTypes[1] +} + +func (x ReadOptions_ReadConsistency) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ReadOptions_ReadConsistency.Descriptor instead. +func (ReadOptions_ReadConsistency) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{19, 0} +} + +// The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. +type LookupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // The options for this lookup request. + ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions,proto3" json:"read_options,omitempty"` + // Required. Keys of entities to look up. + Keys []*Key `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"` + // The properties to return. Defaults to returning all properties. + // + // If this field is set and an entity has a property not referenced in the + // mask, it will be absent from [LookupResponse.found.entity.properties][]. + // + // The entity's key is always returned. + PropertyMask *PropertyMask `protobuf:"bytes,5,opt,name=property_mask,json=propertyMask,proto3" json:"property_mask,omitempty"` +} + +func (x *LookupRequest) Reset() { + *x = LookupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LookupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LookupRequest) ProtoMessage() {} + +func (x *LookupRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 LookupRequest.ProtoReflect.Descriptor instead. +func (*LookupRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{0} +} + +func (x *LookupRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *LookupRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *LookupRequest) GetReadOptions() *ReadOptions { + if x != nil { + return x.ReadOptions + } + return nil +} + +func (x *LookupRequest) GetKeys() []*Key { + if x != nil { + return x.Keys + } + return nil +} + +func (x *LookupRequest) GetPropertyMask() *PropertyMask { + if x != nil { + return x.PropertyMask + } + return nil +} + +// The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. +type LookupResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Entities found as `ResultType.FULL` entities. The order of results in this + // field is undefined and has no relation to the order of the keys in the + // input. + Found []*EntityResult `protobuf:"bytes,1,rep,name=found,proto3" json:"found,omitempty"` + // Entities not found as `ResultType.KEY_ONLY` entities. The order of results + // in this field is undefined and has no relation to the order of the keys + // in the input. + Missing []*EntityResult `protobuf:"bytes,2,rep,name=missing,proto3" json:"missing,omitempty"` + // A list of keys that were not looked up due to resource constraints. The + // order of results in this field is undefined and has no relation to the + // order of the keys in the input. + Deferred []*Key `protobuf:"bytes,3,rep,name=deferred,proto3" json:"deferred,omitempty"` + // The identifier of the transaction that was started as part of this Lookup + // request. + // + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in + // [LookupRequest.read_options][google.datastore.v1.LookupRequest.read_options]. + Transaction []byte `protobuf:"bytes,5,opt,name=transaction,proto3" json:"transaction,omitempty"` + // The time at which these entities were read or found missing. + ReadTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"` +} + +func (x *LookupResponse) Reset() { + *x = LookupResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LookupResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LookupResponse) ProtoMessage() {} + +func (x *LookupResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 LookupResponse.ProtoReflect.Descriptor instead. +func (*LookupResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{1} +} + +func (x *LookupResponse) GetFound() []*EntityResult { + if x != nil { + return x.Found + } + return nil +} + +func (x *LookupResponse) GetMissing() []*EntityResult { + if x != nil { + return x.Missing + } + return nil +} + +func (x *LookupResponse) GetDeferred() []*Key { + if x != nil { + return x.Deferred + } + return nil +} + +func (x *LookupResponse) GetTransaction() []byte { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *LookupResponse) GetReadTime() *timestamppb.Timestamp { + if x != nil { + return x.ReadTime + } + return nil +} + +// The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +type RunQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Entities are partitioned into subsets, identified by a partition ID. + // Queries are scoped to a single partition. + // This partition ID is normalized with the standard default context + // partition ID. + PartitionId *PartitionId `protobuf:"bytes,2,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` + // The options for this query. + ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions,proto3" json:"read_options,omitempty"` + // The type of query. + // + // Types that are assignable to QueryType: + // + // *RunQueryRequest_Query + // *RunQueryRequest_GqlQuery + QueryType isRunQueryRequest_QueryType `protobuf_oneof:"query_type"` + // The properties to return. + // This field must not be set for a projection query. + // + // See + // [LookupRequest.property_mask][google.datastore.v1.LookupRequest.property_mask]. + PropertyMask *PropertyMask `protobuf:"bytes,10,opt,name=property_mask,json=propertyMask,proto3" json:"property_mask,omitempty"` + // Optional. Explain options for the query. If set, additional query + // statistics will be returned. If not, only query results will be returned. + ExplainOptions *ExplainOptions `protobuf:"bytes,12,opt,name=explain_options,json=explainOptions,proto3" json:"explain_options,omitempty"` +} + +func (x *RunQueryRequest) Reset() { + *x = RunQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunQueryRequest) ProtoMessage() {} + +func (x *RunQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RunQueryRequest.ProtoReflect.Descriptor instead. +func (*RunQueryRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{2} +} + +func (x *RunQueryRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *RunQueryRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *RunQueryRequest) GetPartitionId() *PartitionId { + if x != nil { + return x.PartitionId + } + return nil +} + +func (x *RunQueryRequest) GetReadOptions() *ReadOptions { + if x != nil { + return x.ReadOptions + } + return nil +} + +func (m *RunQueryRequest) GetQueryType() isRunQueryRequest_QueryType { + if m != nil { + return m.QueryType + } + return nil +} + +func (x *RunQueryRequest) GetQuery() *Query { + if x, ok := x.GetQueryType().(*RunQueryRequest_Query); ok { + return x.Query + } + return nil +} + +func (x *RunQueryRequest) GetGqlQuery() *GqlQuery { + if x, ok := x.GetQueryType().(*RunQueryRequest_GqlQuery); ok { + return x.GqlQuery + } + return nil +} + +func (x *RunQueryRequest) GetPropertyMask() *PropertyMask { + if x != nil { + return x.PropertyMask + } + return nil +} + +func (x *RunQueryRequest) GetExplainOptions() *ExplainOptions { + if x != nil { + return x.ExplainOptions + } + return nil +} + +type isRunQueryRequest_QueryType interface { + isRunQueryRequest_QueryType() +} + +type RunQueryRequest_Query struct { + // The query to run. + Query *Query `protobuf:"bytes,3,opt,name=query,proto3,oneof"` +} + +type RunQueryRequest_GqlQuery struct { + // The GQL query to run. This query must be a non-aggregation query. + GqlQuery *GqlQuery `protobuf:"bytes,7,opt,name=gql_query,json=gqlQuery,proto3,oneof"` +} + +func (*RunQueryRequest_Query) isRunQueryRequest_QueryType() {} + +func (*RunQueryRequest_GqlQuery) isRunQueryRequest_QueryType() {} + +// The response for +// [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. +type RunQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A batch of query results (always present). + Batch *QueryResultBatch `protobuf:"bytes,1,opt,name=batch,proto3" json:"batch,omitempty"` + // The parsed form of the `GqlQuery` from the request, if it was set. + Query *Query `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + // The identifier of the transaction that was started as part of this + // RunQuery request. + // + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in + // [RunQueryRequest.read_options][google.datastore.v1.RunQueryRequest.read_options]. + Transaction []byte `protobuf:"bytes,5,opt,name=transaction,proto3" json:"transaction,omitempty"` + // Query explain metrics. This is only present when the + // [RunQueryRequest.explain_options][google.datastore.v1.RunQueryRequest.explain_options] + // is provided, and it is sent only once with the last response in the stream. + ExplainMetrics *ExplainMetrics `protobuf:"bytes,9,opt,name=explain_metrics,json=explainMetrics,proto3" json:"explain_metrics,omitempty"` +} + +func (x *RunQueryResponse) Reset() { + *x = RunQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunQueryResponse) ProtoMessage() {} + +func (x *RunQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RunQueryResponse.ProtoReflect.Descriptor instead. +func (*RunQueryResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{3} +} + +func (x *RunQueryResponse) GetBatch() *QueryResultBatch { + if x != nil { + return x.Batch + } + return nil +} + +func (x *RunQueryResponse) GetQuery() *Query { + if x != nil { + return x.Query + } + return nil +} + +func (x *RunQueryResponse) GetTransaction() []byte { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *RunQueryResponse) GetExplainMetrics() *ExplainMetrics { + if x != nil { + return x.ExplainMetrics + } + return nil +} + +// The request for +// [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +type RunAggregationQueryRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Entities are partitioned into subsets, identified by a partition ID. + // Queries are scoped to a single partition. + // This partition ID is normalized with the standard default context + // partition ID. + PartitionId *PartitionId `protobuf:"bytes,2,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` + // The options for this query. + ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions,proto3" json:"read_options,omitempty"` + // The type of query. + // + // Types that are assignable to QueryType: + // + // *RunAggregationQueryRequest_AggregationQuery + // *RunAggregationQueryRequest_GqlQuery + QueryType isRunAggregationQueryRequest_QueryType `protobuf_oneof:"query_type"` + // Optional. Explain options for the query. If set, additional query + // statistics will be returned. If not, only query results will be returned. + ExplainOptions *ExplainOptions `protobuf:"bytes,11,opt,name=explain_options,json=explainOptions,proto3" json:"explain_options,omitempty"` +} + +func (x *RunAggregationQueryRequest) Reset() { + *x = RunAggregationQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunAggregationQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunAggregationQueryRequest) ProtoMessage() {} + +func (x *RunAggregationQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RunAggregationQueryRequest.ProtoReflect.Descriptor instead. +func (*RunAggregationQueryRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{4} +} + +func (x *RunAggregationQueryRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *RunAggregationQueryRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *RunAggregationQueryRequest) GetPartitionId() *PartitionId { + if x != nil { + return x.PartitionId + } + return nil +} + +func (x *RunAggregationQueryRequest) GetReadOptions() *ReadOptions { + if x != nil { + return x.ReadOptions + } + return nil +} + +func (m *RunAggregationQueryRequest) GetQueryType() isRunAggregationQueryRequest_QueryType { + if m != nil { + return m.QueryType + } + return nil +} + +func (x *RunAggregationQueryRequest) GetAggregationQuery() *AggregationQuery { + if x, ok := x.GetQueryType().(*RunAggregationQueryRequest_AggregationQuery); ok { + return x.AggregationQuery + } + return nil +} + +func (x *RunAggregationQueryRequest) GetGqlQuery() *GqlQuery { + if x, ok := x.GetQueryType().(*RunAggregationQueryRequest_GqlQuery); ok { + return x.GqlQuery + } + return nil +} + +func (x *RunAggregationQueryRequest) GetExplainOptions() *ExplainOptions { + if x != nil { + return x.ExplainOptions + } + return nil +} + +type isRunAggregationQueryRequest_QueryType interface { + isRunAggregationQueryRequest_QueryType() +} + +type RunAggregationQueryRequest_AggregationQuery struct { + // The query to run. + AggregationQuery *AggregationQuery `protobuf:"bytes,3,opt,name=aggregation_query,json=aggregationQuery,proto3,oneof"` +} + +type RunAggregationQueryRequest_GqlQuery struct { + // The GQL query to run. This query must be an aggregation query. + GqlQuery *GqlQuery `protobuf:"bytes,7,opt,name=gql_query,json=gqlQuery,proto3,oneof"` +} + +func (*RunAggregationQueryRequest_AggregationQuery) isRunAggregationQueryRequest_QueryType() {} + +func (*RunAggregationQueryRequest_GqlQuery) isRunAggregationQueryRequest_QueryType() {} + +// The response for +// [Datastore.RunAggregationQuery][google.datastore.v1.Datastore.RunAggregationQuery]. +type RunAggregationQueryResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A batch of aggregation results. Always present. + Batch *AggregationResultBatch `protobuf:"bytes,1,opt,name=batch,proto3" json:"batch,omitempty"` + // The parsed form of the `GqlQuery` from the request, if it was set. + Query *AggregationQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + // The identifier of the transaction that was started as part of this + // RunAggregationQuery request. + // + // Set only when + // [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] + // was set in + // [RunAggregationQueryRequest.read_options][google.datastore.v1.RunAggregationQueryRequest.read_options]. + Transaction []byte `protobuf:"bytes,5,opt,name=transaction,proto3" json:"transaction,omitempty"` + // Query explain metrics. This is only present when the + // [RunAggregationQueryRequest.explain_options][google.datastore.v1.RunAggregationQueryRequest.explain_options] + // is provided, and it is sent only once with the last response in the stream. + ExplainMetrics *ExplainMetrics `protobuf:"bytes,9,opt,name=explain_metrics,json=explainMetrics,proto3" json:"explain_metrics,omitempty"` +} + +func (x *RunAggregationQueryResponse) Reset() { + *x = RunAggregationQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunAggregationQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunAggregationQueryResponse) ProtoMessage() {} + +func (x *RunAggregationQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RunAggregationQueryResponse.ProtoReflect.Descriptor instead. +func (*RunAggregationQueryResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{5} +} + +func (x *RunAggregationQueryResponse) GetBatch() *AggregationResultBatch { + if x != nil { + return x.Batch + } + return nil +} + +func (x *RunAggregationQueryResponse) GetQuery() *AggregationQuery { + if x != nil { + return x.Query + } + return nil +} + +func (x *RunAggregationQueryResponse) GetTransaction() []byte { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *RunAggregationQueryResponse) GetExplainMetrics() *ExplainMetrics { + if x != nil { + return x.ExplainMetrics + } + return nil +} + +// The request for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +type BeginTransactionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Options for a new transaction. + TransactionOptions *TransactionOptions `protobuf:"bytes,10,opt,name=transaction_options,json=transactionOptions,proto3" json:"transaction_options,omitempty"` +} + +func (x *BeginTransactionRequest) Reset() { + *x = BeginTransactionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BeginTransactionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BeginTransactionRequest) ProtoMessage() {} + +func (x *BeginTransactionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 BeginTransactionRequest.ProtoReflect.Descriptor instead. +func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{6} +} + +func (x *BeginTransactionRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *BeginTransactionRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *BeginTransactionRequest) GetTransactionOptions() *TransactionOptions { + if x != nil { + return x.TransactionOptions + } + return nil +} + +// The response for +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. +type BeginTransactionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The transaction identifier (always present). + Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` +} + +func (x *BeginTransactionResponse) Reset() { + *x = BeginTransactionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BeginTransactionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BeginTransactionResponse) ProtoMessage() {} + +func (x *BeginTransactionResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 BeginTransactionResponse.ProtoReflect.Descriptor instead. +func (*BeginTransactionResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{7} +} + +func (x *BeginTransactionResponse) GetTransaction() []byte { + if x != nil { + return x.Transaction + } + return nil +} + +// The request for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. +type RollbackRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Required. The transaction identifier, returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` +} + +func (x *RollbackRequest) Reset() { + *x = RollbackRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RollbackRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RollbackRequest) ProtoMessage() {} + +func (x *RollbackRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RollbackRequest.ProtoReflect.Descriptor instead. +func (*RollbackRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{8} +} + +func (x *RollbackRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *RollbackRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *RollbackRequest) GetTransaction() []byte { + if x != nil { + return x.Transaction + } + return nil +} + +// The response for +// [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. (an empty +// message). +type RollbackResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RollbackResponse) Reset() { + *x = RollbackResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RollbackResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RollbackResponse) ProtoMessage() {} + +func (x *RollbackResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 RollbackResponse.ProtoReflect.Descriptor instead. +func (*RollbackResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{9} +} + +// The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. +type CommitRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // The type of commit to perform. Defaults to `TRANSACTIONAL`. + Mode CommitRequest_Mode `protobuf:"varint,5,opt,name=mode,proto3,enum=google.datastore.v1.CommitRequest_Mode" json:"mode,omitempty"` + // Must be set when mode is `TRANSACTIONAL`. + // + // Types that are assignable to TransactionSelector: + // + // *CommitRequest_Transaction + // *CommitRequest_SingleUseTransaction + TransactionSelector isCommitRequest_TransactionSelector `protobuf_oneof:"transaction_selector"` + // The mutations to perform. + // + // When mode is `TRANSACTIONAL`, mutations affecting a single entity are + // applied in order. The following sequences of mutations affecting a single + // entity are not permitted in a single `Commit` request: + // + // - `insert` followed by `insert` + // - `update` followed by `insert` + // - `upsert` followed by `insert` + // - `delete` followed by `update` + // + // When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single + // entity. + Mutations []*Mutation `protobuf:"bytes,6,rep,name=mutations,proto3" json:"mutations,omitempty"` +} + +func (x *CommitRequest) Reset() { + *x = CommitRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommitRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommitRequest) ProtoMessage() {} + +func (x *CommitRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 CommitRequest.ProtoReflect.Descriptor instead. +func (*CommitRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{10} +} + +func (x *CommitRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *CommitRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *CommitRequest) GetMode() CommitRequest_Mode { + if x != nil { + return x.Mode + } + return CommitRequest_MODE_UNSPECIFIED +} + +func (m *CommitRequest) GetTransactionSelector() isCommitRequest_TransactionSelector { + if m != nil { + return m.TransactionSelector + } + return nil +} + +func (x *CommitRequest) GetTransaction() []byte { + if x, ok := x.GetTransactionSelector().(*CommitRequest_Transaction); ok { + return x.Transaction + } + return nil +} + +func (x *CommitRequest) GetSingleUseTransaction() *TransactionOptions { + if x, ok := x.GetTransactionSelector().(*CommitRequest_SingleUseTransaction); ok { + return x.SingleUseTransaction + } + return nil +} + +func (x *CommitRequest) GetMutations() []*Mutation { + if x != nil { + return x.Mutations + } + return nil +} + +type isCommitRequest_TransactionSelector interface { + isCommitRequest_TransactionSelector() +} + +type CommitRequest_Transaction struct { + // The identifier of the transaction associated with the commit. A + // transaction identifier is returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3,oneof"` +} + +type CommitRequest_SingleUseTransaction struct { + // Options for beginning a new transaction for this request. + // The transaction is committed when the request completes. If specified, + // [TransactionOptions.mode][google.datastore.v1.TransactionOptions] must be + // [TransactionOptions.ReadWrite][google.datastore.v1.TransactionOptions.ReadWrite]. + SingleUseTransaction *TransactionOptions `protobuf:"bytes,10,opt,name=single_use_transaction,json=singleUseTransaction,proto3,oneof"` +} + +func (*CommitRequest_Transaction) isCommitRequest_TransactionSelector() {} + +func (*CommitRequest_SingleUseTransaction) isCommitRequest_TransactionSelector() {} + +// The response for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. +type CommitResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The result of performing the mutations. + // The i-th mutation result corresponds to the i-th mutation in the request. + MutationResults []*MutationResult `protobuf:"bytes,3,rep,name=mutation_results,json=mutationResults,proto3" json:"mutation_results,omitempty"` + // The number of index entries updated during the commit, or zero if none were + // updated. + IndexUpdates int32 `protobuf:"varint,4,opt,name=index_updates,json=indexUpdates,proto3" json:"index_updates,omitempty"` + // The transaction commit timestamp. Not set for non-transactional commits. + CommitTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=commit_time,json=commitTime,proto3" json:"commit_time,omitempty"` +} + +func (x *CommitResponse) Reset() { + *x = CommitResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommitResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommitResponse) ProtoMessage() {} + +func (x *CommitResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 CommitResponse.ProtoReflect.Descriptor instead. +func (*CommitResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{11} +} + +func (x *CommitResponse) GetMutationResults() []*MutationResult { + if x != nil { + return x.MutationResults + } + return nil +} + +func (x *CommitResponse) GetIndexUpdates() int32 { + if x != nil { + return x.IndexUpdates + } + return 0 +} + +func (x *CommitResponse) GetCommitTime() *timestamppb.Timestamp { + if x != nil { + return x.CommitTime + } + return nil +} + +// The request for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +type AllocateIdsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Required. A list of keys with incomplete key paths for which to allocate + // IDs. No key may be reserved/read-only. + Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` +} + +func (x *AllocateIdsRequest) Reset() { + *x = AllocateIdsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AllocateIdsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllocateIdsRequest) ProtoMessage() {} + +func (x *AllocateIdsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 AllocateIdsRequest.ProtoReflect.Descriptor instead. +func (*AllocateIdsRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{12} +} + +func (x *AllocateIdsRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *AllocateIdsRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *AllocateIdsRequest) GetKeys() []*Key { + if x != nil { + return x.Keys + } + return nil +} + +// The response for +// [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. +type AllocateIdsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The keys specified in the request (in the same order), each with + // its key path completed with a newly allocated ID. + Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` +} + +func (x *AllocateIdsResponse) Reset() { + *x = AllocateIdsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AllocateIdsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllocateIdsResponse) ProtoMessage() {} + +func (x *AllocateIdsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 AllocateIdsResponse.ProtoReflect.Descriptor instead. +func (*AllocateIdsResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{13} +} + +func (x *AllocateIdsResponse) GetKeys() []*Key { + if x != nil { + return x.Keys + } + return nil +} + +// The request for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +type ReserveIdsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The ID of the project against which to make the request. + ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // The ID of the database against which to make the request. + // + // '(default)' is not allowed; please use empty string ” to refer the default + // database. + DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // Required. A list of keys with complete key paths whose numeric IDs should + // not be auto-allocated. + Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` +} + +func (x *ReserveIdsRequest) Reset() { + *x = ReserveIdsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReserveIdsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReserveIdsRequest) ProtoMessage() {} + +func (x *ReserveIdsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 ReserveIdsRequest.ProtoReflect.Descriptor instead. +func (*ReserveIdsRequest) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{14} +} + +func (x *ReserveIdsRequest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *ReserveIdsRequest) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *ReserveIdsRequest) GetKeys() []*Key { + if x != nil { + return x.Keys + } + return nil +} + +// The response for +// [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. +type ReserveIdsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReserveIdsResponse) Reset() { + *x = ReserveIdsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReserveIdsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReserveIdsResponse) ProtoMessage() {} + +func (x *ReserveIdsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 ReserveIdsResponse.ProtoReflect.Descriptor instead. +func (*ReserveIdsResponse) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{15} +} + +// A mutation to apply to an entity. +type Mutation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The mutation operation. + // + // For `insert`, `update`, and `upsert`: + // - The entity's key must not be reserved/read-only. + // - No property in the entity may have a reserved name, + // not even a property in an entity in a value. + // - No value in the entity may have meaning 18, + // not even a value in an entity in another value. + // + // Types that are assignable to Operation: + // + // *Mutation_Insert + // *Mutation_Update + // *Mutation_Upsert + // *Mutation_Delete + Operation isMutation_Operation `protobuf_oneof:"operation"` + // When set, the server will detect whether or not this mutation conflicts + // with the current version of the entity on the server. Conflicting mutations + // are not applied, and are marked as such in MutationResult. + // + // Types that are assignable to ConflictDetectionStrategy: + // + // *Mutation_BaseVersion + // *Mutation_UpdateTime + ConflictDetectionStrategy isMutation_ConflictDetectionStrategy `protobuf_oneof:"conflict_detection_strategy"` + // The properties to write in this mutation. + // None of the properties in the mask may have a reserved name, except for + // `__key__`. + // This field is ignored for `delete`. + // + // If the entity already exists, only properties referenced in the mask are + // updated, others are left untouched. + // Properties referenced in the mask but not in the entity are deleted. + PropertyMask *PropertyMask `protobuf:"bytes,9,opt,name=property_mask,json=propertyMask,proto3" json:"property_mask,omitempty"` +} + +func (x *Mutation) Reset() { + *x = Mutation{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Mutation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Mutation) ProtoMessage() {} + +func (x *Mutation) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 Mutation.ProtoReflect.Descriptor instead. +func (*Mutation) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{16} +} + +func (m *Mutation) GetOperation() isMutation_Operation { + if m != nil { + return m.Operation + } + return nil +} + +func (x *Mutation) GetInsert() *Entity { + if x, ok := x.GetOperation().(*Mutation_Insert); ok { + return x.Insert + } + return nil +} + +func (x *Mutation) GetUpdate() *Entity { + if x, ok := x.GetOperation().(*Mutation_Update); ok { + return x.Update + } + return nil +} + +func (x *Mutation) GetUpsert() *Entity { + if x, ok := x.GetOperation().(*Mutation_Upsert); ok { + return x.Upsert + } + return nil +} + +func (x *Mutation) GetDelete() *Key { + if x, ok := x.GetOperation().(*Mutation_Delete); ok { + return x.Delete + } + return nil +} + +func (m *Mutation) GetConflictDetectionStrategy() isMutation_ConflictDetectionStrategy { + if m != nil { + return m.ConflictDetectionStrategy + } + return nil +} + +func (x *Mutation) GetBaseVersion() int64 { + if x, ok := x.GetConflictDetectionStrategy().(*Mutation_BaseVersion); ok { + return x.BaseVersion + } + return 0 +} + +func (x *Mutation) GetUpdateTime() *timestamppb.Timestamp { + if x, ok := x.GetConflictDetectionStrategy().(*Mutation_UpdateTime); ok { + return x.UpdateTime + } + return nil +} + +func (x *Mutation) GetPropertyMask() *PropertyMask { + if x != nil { + return x.PropertyMask + } + return nil +} + +type isMutation_Operation interface { + isMutation_Operation() +} + +type Mutation_Insert struct { + // The entity to insert. The entity must not already exist. + // The entity key's final path element may be incomplete. + Insert *Entity `protobuf:"bytes,4,opt,name=insert,proto3,oneof"` +} + +type Mutation_Update struct { + // The entity to update. The entity must already exist. + // Must have a complete key path. + Update *Entity `protobuf:"bytes,5,opt,name=update,proto3,oneof"` +} + +type Mutation_Upsert struct { + // The entity to upsert. The entity may or may not already exist. + // The entity key's final path element may be incomplete. + Upsert *Entity `protobuf:"bytes,6,opt,name=upsert,proto3,oneof"` +} + +type Mutation_Delete struct { + // The key of the entity to delete. The entity may or may not already exist. + // Must have a complete key path and must not be reserved/read-only. + Delete *Key `protobuf:"bytes,7,opt,name=delete,proto3,oneof"` +} + +func (*Mutation_Insert) isMutation_Operation() {} + +func (*Mutation_Update) isMutation_Operation() {} + +func (*Mutation_Upsert) isMutation_Operation() {} + +func (*Mutation_Delete) isMutation_Operation() {} + +type isMutation_ConflictDetectionStrategy interface { + isMutation_ConflictDetectionStrategy() +} + +type Mutation_BaseVersion struct { + // The version of the entity that this mutation is being applied + // to. If this does not match the current version on the server, the + // mutation conflicts. + BaseVersion int64 `protobuf:"varint,8,opt,name=base_version,json=baseVersion,proto3,oneof"` +} + +type Mutation_UpdateTime struct { + // The update time of the entity that this mutation is being applied + // to. If this does not match the current update time on the server, the + // mutation conflicts. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=update_time,json=updateTime,proto3,oneof"` +} + +func (*Mutation_BaseVersion) isMutation_ConflictDetectionStrategy() {} + +func (*Mutation_UpdateTime) isMutation_ConflictDetectionStrategy() {} + +// The result of applying a mutation. +type MutationResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The automatically allocated key. + // Set only when the mutation allocated a key. + Key *Key `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // The version of the entity on the server after processing the mutation. If + // the mutation doesn't change anything on the server, then the version will + // be the version of the current entity or, if no entity is present, a version + // that is strictly greater than the version of any previous entity and less + // than the version of any possible future entity. + Version int64 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + // The create time of the entity. This field will not be set after a 'delete'. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // The update time of the entity on the server after processing the mutation. + // If the mutation doesn't change anything on the server, then the timestamp + // will be the update timestamp of the current entity. This field will not be + // set after a 'delete'. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Whether a conflict was detected for this mutation. Always false when a + // conflict detection strategy field is not set in the mutation. + ConflictDetected bool `protobuf:"varint,5,opt,name=conflict_detected,json=conflictDetected,proto3" json:"conflict_detected,omitempty"` +} + +func (x *MutationResult) Reset() { + *x = MutationResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MutationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MutationResult) ProtoMessage() {} + +func (x *MutationResult) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 MutationResult.ProtoReflect.Descriptor instead. +func (*MutationResult) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{17} +} + +func (x *MutationResult) GetKey() *Key { + if x != nil { + return x.Key + } + return nil +} + +func (x *MutationResult) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *MutationResult) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *MutationResult) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *MutationResult) GetConflictDetected() bool { + if x != nil { + return x.ConflictDetected + } + return false +} + +// The set of arbitrarily nested property paths used to restrict an operation to +// only a subset of properties in an entity. +type PropertyMask struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The paths to the properties covered by this mask. + // + // A path is a list of property names separated by dots (`.`), for example + // `foo.bar` means the property `bar` inside the entity property `foo` inside + // the entity associated with this path. + // + // If a property name contains a dot `.` or a backslash `\`, then that + // name must be escaped. + // + // A path must not be empty, and may not reference a value inside an + // [array value][google.datastore.v1.Value.array_value]. + Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"` +} + +func (x *PropertyMask) Reset() { + *x = PropertyMask{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropertyMask) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropertyMask) ProtoMessage() {} + +func (x *PropertyMask) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 PropertyMask.ProtoReflect.Descriptor instead. +func (*PropertyMask) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{18} +} + +func (x *PropertyMask) GetPaths() []string { + if x != nil { + return x.Paths + } + return nil +} + +// The options shared by read requests. +type ReadOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // For Cloud Datastore, if read_consistency is not specified, then lookups and + // ancestor queries default to `read_consistency`=`STRONG`, global queries + // default to `read_consistency`=`EVENTUAL`. + // + // For Cloud Firestore in Datastore mode, if read_consistency is not specified + // then lookups and all queries default to `read_consistency`=`STRONG`. + // + // Explicitly setting `read_consistency`=`EVENTUAL` will result in eventually + // consistent lookups & queries in both Cloud Datastore & Cloud Firestore in + // Datastore mode. + // + // Types that are assignable to ConsistencyType: + // + // *ReadOptions_ReadConsistency_ + // *ReadOptions_Transaction + // *ReadOptions_NewTransaction + // *ReadOptions_ReadTime + ConsistencyType isReadOptions_ConsistencyType `protobuf_oneof:"consistency_type"` +} + +func (x *ReadOptions) Reset() { + *x = ReadOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadOptions) ProtoMessage() {} + +func (x *ReadOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 ReadOptions.ProtoReflect.Descriptor instead. +func (*ReadOptions) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{19} +} + +func (m *ReadOptions) GetConsistencyType() isReadOptions_ConsistencyType { + if m != nil { + return m.ConsistencyType + } + return nil +} + +func (x *ReadOptions) GetReadConsistency() ReadOptions_ReadConsistency { + if x, ok := x.GetConsistencyType().(*ReadOptions_ReadConsistency_); ok { + return x.ReadConsistency + } + return ReadOptions_READ_CONSISTENCY_UNSPECIFIED +} + +func (x *ReadOptions) GetTransaction() []byte { + if x, ok := x.GetConsistencyType().(*ReadOptions_Transaction); ok { + return x.Transaction + } + return nil +} + +func (x *ReadOptions) GetNewTransaction() *TransactionOptions { + if x, ok := x.GetConsistencyType().(*ReadOptions_NewTransaction); ok { + return x.NewTransaction + } + return nil +} + +func (x *ReadOptions) GetReadTime() *timestamppb.Timestamp { + if x, ok := x.GetConsistencyType().(*ReadOptions_ReadTime); ok { + return x.ReadTime + } + return nil +} + +type isReadOptions_ConsistencyType interface { + isReadOptions_ConsistencyType() +} + +type ReadOptions_ReadConsistency_ struct { + // The non-transactional read consistency to use. + ReadConsistency ReadOptions_ReadConsistency `protobuf:"varint,1,opt,name=read_consistency,json=readConsistency,proto3,enum=google.datastore.v1.ReadOptions_ReadConsistency,oneof"` +} + +type ReadOptions_Transaction struct { + // The identifier of the transaction in which to read. A + // transaction identifier is returned by a call to + // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. + Transaction []byte `protobuf:"bytes,2,opt,name=transaction,proto3,oneof"` +} + +type ReadOptions_NewTransaction struct { + // Options for beginning a new transaction for this request. + // + // The new transaction identifier will be returned in the corresponding + // response as either + // [LookupResponse.transaction][google.datastore.v1.LookupResponse.transaction] + // or + // [RunQueryResponse.transaction][google.datastore.v1.RunQueryResponse.transaction]. + NewTransaction *TransactionOptions `protobuf:"bytes,3,opt,name=new_transaction,json=newTransaction,proto3,oneof"` +} + +type ReadOptions_ReadTime struct { + // Reads entities as they were at the given time. This value is only + // supported for Cloud Firestore in Datastore mode. + // + // This must be a microsecond precision timestamp within the past one hour, + // or if Point-in-Time Recovery is enabled, can additionally be a whole + // minute timestamp within the past 7 days. + ReadTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=read_time,json=readTime,proto3,oneof"` +} + +func (*ReadOptions_ReadConsistency_) isReadOptions_ConsistencyType() {} + +func (*ReadOptions_Transaction) isReadOptions_ConsistencyType() {} + +func (*ReadOptions_NewTransaction) isReadOptions_ConsistencyType() {} + +func (*ReadOptions_ReadTime) isReadOptions_ConsistencyType() {} + +// Options for beginning a new transaction. +// +// Transactions can be created explicitly with calls to +// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] +// or implicitly by setting +// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] +// in read requests. +type TransactionOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The `mode` of the transaction, indicating whether write operations are + // supported. + // + // Types that are assignable to Mode: + // + // *TransactionOptions_ReadWrite_ + // *TransactionOptions_ReadOnly_ + Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` +} + +func (x *TransactionOptions) Reset() { + *x = TransactionOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionOptions) ProtoMessage() {} + +func (x *TransactionOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 TransactionOptions.ProtoReflect.Descriptor instead. +func (*TransactionOptions) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{20} +} + +func (m *TransactionOptions) GetMode() isTransactionOptions_Mode { + if m != nil { + return m.Mode + } + return nil +} + +func (x *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite { + if x, ok := x.GetMode().(*TransactionOptions_ReadWrite_); ok { + return x.ReadWrite + } + return nil +} + +func (x *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly { + if x, ok := x.GetMode().(*TransactionOptions_ReadOnly_); ok { + return x.ReadOnly + } + return nil +} + +type isTransactionOptions_Mode interface { + isTransactionOptions_Mode() +} + +type TransactionOptions_ReadWrite_ struct { + // The transaction should allow both reads and writes. + ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,1,opt,name=read_write,json=readWrite,proto3,oneof"` +} + +type TransactionOptions_ReadOnly_ struct { + // The transaction should only allow reads. + ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,proto3,oneof"` +} + +func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {} + +func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {} + +// Options specific to read / write transactions. +type TransactionOptions_ReadWrite struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The transaction identifier of the transaction being retried. + PreviousTransaction []byte `protobuf:"bytes,1,opt,name=previous_transaction,json=previousTransaction,proto3" json:"previous_transaction,omitempty"` +} + +func (x *TransactionOptions_ReadWrite) Reset() { + *x = TransactionOptions_ReadWrite{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionOptions_ReadWrite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionOptions_ReadWrite) ProtoMessage() {} + +func (x *TransactionOptions_ReadWrite) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_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 TransactionOptions_ReadWrite.ProtoReflect.Descriptor instead. +func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *TransactionOptions_ReadWrite) GetPreviousTransaction() []byte { + if x != nil { + return x.PreviousTransaction + } + return nil +} + +// Options specific to read-only transactions. +type TransactionOptions_ReadOnly struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Reads entities at the given time. + // + // This must be a microsecond precision timestamp within the past one hour, + // or if Point-in-Time Recovery is enabled, can additionally be a whole + // minute timestamp within the past 7 days. + ReadTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"` +} + +func (x *TransactionOptions_ReadOnly) Reset() { + *x = TransactionOptions_ReadOnly{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionOptions_ReadOnly) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionOptions_ReadOnly) ProtoMessage() {} + +func (x *TransactionOptions_ReadOnly) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_datastore_proto_msgTypes[22] + 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 TransactionOptions_ReadOnly.ProtoReflect.Descriptor instead. +func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_datastore_proto_rawDescGZIP(), []int{20, 1} +} + +func (x *TransactionOptions_ReadOnly) GetReadTime() *timestamppb.Timestamp { + if x != nil { + return x.ReadTime + } + return nil +} + +var File_google_datastore_v1_datastore_proto protoreflect.FileDescriptor + +var file_google_datastore_v1_datastore_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 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, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, + 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 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, 0x22, 0x94, 0x02, 0x0a, 0x0d, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x43, + 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x97, + 0x02, 0x0a, 0x0e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x37, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4b, 0x65, 0x79, 0x52, 0x08, 0x64, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x08, + 0x72, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x03, 0x0a, 0x0f, 0x52, 0x75, 0x6e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, + 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, + 0x72, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x3c, 0x0a, 0x09, 0x67, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x48, 0x00, 0x52, 0x08, 0x67, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x51, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x10, 0x52, 0x75, 0x6e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, + 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xe0, 0x03, 0x0a, 0x1a, 0x52, + 0x75, 0x6e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x43, + 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x61, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3c, + 0x0a, 0x09, 0x67, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x48, 0x00, 0x52, 0x08, 0x67, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x0f, + 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0e, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x0c, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8d, 0x02, + 0x0a, 0x1b, 0x52, 0x75, 0x6e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, + 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x3b, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x4c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0e, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xb8, 0x01, + 0x0a, 0x17, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x58, + 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3c, 0x0a, 0x18, 0x42, 0x65, 0x67, 0x69, + 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x03, 0x0a, 0x0d, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, + 0x12, 0x3b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x5f, 0x0a, 0x16, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x14, 0x73, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x09, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x46, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, + 0x0d, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x16, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0xc2, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x10, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x52, 0x0f, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, + 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6b, + 0x65, 0x79, 0x73, 0x22, 0x43, 0x0a, 0x13, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, + 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x03, 0x0a, + 0x08, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x69, 0x6e, 0x73, + 0x65, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x06, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, + 0x12, 0x35, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, + 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x32, + 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 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, 0x48, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x0b, + 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x63, + 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0xfd, 0x01, 0x0a, 0x0e, 0x4d, + 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x07, 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, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x06, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a, + 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x24, 0x0a, 0x0c, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, + 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, + 0x22, 0x82, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x5d, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x61, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0f, + 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, + 0x22, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 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, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x4f, + 0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x4f, 0x4e, + 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x55, 0x41, 0x4c, 0x10, + 0x02, 0x42, 0x12, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a, 0x0a, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x12, 0x4f, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x61, + 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, + 0x79, 0x1a, 0x3e, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x31, + 0x0a, 0x14, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x13, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x43, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x37, 0x0a, + 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 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, 0x08, 0x72, 0x65, + 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x32, 0xe1, + 0x0d, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0xc0, 0x01, 0x0a, + 0x06, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x6d, 0xda, 0x41, 0x1c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x2c, + 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x6b, 0x65, 0x79, + 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x8a, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x12, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x12, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x12, + 0xa9, 0x01, 0x0a, 0x08, 0x52, 0x75, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x24, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, + 0x72, 0x75, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xd5, 0x01, 0x0a, 0x13, + 0x52, 0x75, 0x6e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, + 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x72, 0x75, 0x6e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x69, 0x64, 0x12, 0xd6, 0x01, 0x0a, 0x10, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, + 0x69, 0x6e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda, 0x41, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, + 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xe6, 0x01, 0x0a, + 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x92, 0x01, 0xda, 0x41, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x2c, 0x6d, 0x6f, 0x64, 0x65, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2c, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xda, 0x41, 0x19, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x2c, 0x6d, 0x6f, 0x64, 0x65, 0x2c, 0x6d, 0x75, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, + 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc2, 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, + 0x63, 0x6b, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x69, 0xda, 0x41, 0x16, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x2c, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, + 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x72, + 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc7, 0x01, 0x0a, 0x0b, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda, + 0x41, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x2c, 0x6b, 0x65, 0x79, + 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x73, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc3, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x49, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0xda, 0x41, 0x0f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x2c, 0x6b, 0x65, 0x79, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, + 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x49, 0x64, 0x73, 0x8a, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x0c, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0x0d, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x1a, 0x76, 0xca, 0x41, 0x18, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x58, 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, 0x2c, 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, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x42, 0xbf, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0e, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, + 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x19, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_datastore_v1_datastore_proto_rawDescOnce sync.Once + file_google_datastore_v1_datastore_proto_rawDescData = file_google_datastore_v1_datastore_proto_rawDesc +) + +func file_google_datastore_v1_datastore_proto_rawDescGZIP() []byte { + file_google_datastore_v1_datastore_proto_rawDescOnce.Do(func() { + file_google_datastore_v1_datastore_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_datastore_proto_rawDescData) + }) + return file_google_datastore_v1_datastore_proto_rawDescData +} + +var file_google_datastore_v1_datastore_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_datastore_v1_datastore_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_google_datastore_v1_datastore_proto_goTypes = []any{ + (CommitRequest_Mode)(0), // 0: google.datastore.v1.CommitRequest.Mode + (ReadOptions_ReadConsistency)(0), // 1: google.datastore.v1.ReadOptions.ReadConsistency + (*LookupRequest)(nil), // 2: google.datastore.v1.LookupRequest + (*LookupResponse)(nil), // 3: google.datastore.v1.LookupResponse + (*RunQueryRequest)(nil), // 4: google.datastore.v1.RunQueryRequest + (*RunQueryResponse)(nil), // 5: google.datastore.v1.RunQueryResponse + (*RunAggregationQueryRequest)(nil), // 6: google.datastore.v1.RunAggregationQueryRequest + (*RunAggregationQueryResponse)(nil), // 7: google.datastore.v1.RunAggregationQueryResponse + (*BeginTransactionRequest)(nil), // 8: google.datastore.v1.BeginTransactionRequest + (*BeginTransactionResponse)(nil), // 9: google.datastore.v1.BeginTransactionResponse + (*RollbackRequest)(nil), // 10: google.datastore.v1.RollbackRequest + (*RollbackResponse)(nil), // 11: google.datastore.v1.RollbackResponse + (*CommitRequest)(nil), // 12: google.datastore.v1.CommitRequest + (*CommitResponse)(nil), // 13: google.datastore.v1.CommitResponse + (*AllocateIdsRequest)(nil), // 14: google.datastore.v1.AllocateIdsRequest + (*AllocateIdsResponse)(nil), // 15: google.datastore.v1.AllocateIdsResponse + (*ReserveIdsRequest)(nil), // 16: google.datastore.v1.ReserveIdsRequest + (*ReserveIdsResponse)(nil), // 17: google.datastore.v1.ReserveIdsResponse + (*Mutation)(nil), // 18: google.datastore.v1.Mutation + (*MutationResult)(nil), // 19: google.datastore.v1.MutationResult + (*PropertyMask)(nil), // 20: google.datastore.v1.PropertyMask + (*ReadOptions)(nil), // 21: google.datastore.v1.ReadOptions + (*TransactionOptions)(nil), // 22: google.datastore.v1.TransactionOptions + (*TransactionOptions_ReadWrite)(nil), // 23: google.datastore.v1.TransactionOptions.ReadWrite + (*TransactionOptions_ReadOnly)(nil), // 24: google.datastore.v1.TransactionOptions.ReadOnly + (*Key)(nil), // 25: google.datastore.v1.Key + (*EntityResult)(nil), // 26: google.datastore.v1.EntityResult + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*PartitionId)(nil), // 28: google.datastore.v1.PartitionId + (*Query)(nil), // 29: google.datastore.v1.Query + (*GqlQuery)(nil), // 30: google.datastore.v1.GqlQuery + (*ExplainOptions)(nil), // 31: google.datastore.v1.ExplainOptions + (*QueryResultBatch)(nil), // 32: google.datastore.v1.QueryResultBatch + (*ExplainMetrics)(nil), // 33: google.datastore.v1.ExplainMetrics + (*AggregationQuery)(nil), // 34: google.datastore.v1.AggregationQuery + (*AggregationResultBatch)(nil), // 35: google.datastore.v1.AggregationResultBatch + (*Entity)(nil), // 36: google.datastore.v1.Entity +} +var file_google_datastore_v1_datastore_proto_depIdxs = []int32{ + 21, // 0: google.datastore.v1.LookupRequest.read_options:type_name -> google.datastore.v1.ReadOptions + 25, // 1: google.datastore.v1.LookupRequest.keys:type_name -> google.datastore.v1.Key + 20, // 2: google.datastore.v1.LookupRequest.property_mask:type_name -> google.datastore.v1.PropertyMask + 26, // 3: google.datastore.v1.LookupResponse.found:type_name -> google.datastore.v1.EntityResult + 26, // 4: google.datastore.v1.LookupResponse.missing:type_name -> google.datastore.v1.EntityResult + 25, // 5: google.datastore.v1.LookupResponse.deferred:type_name -> google.datastore.v1.Key + 27, // 6: google.datastore.v1.LookupResponse.read_time:type_name -> google.protobuf.Timestamp + 28, // 7: google.datastore.v1.RunQueryRequest.partition_id:type_name -> google.datastore.v1.PartitionId + 21, // 8: google.datastore.v1.RunQueryRequest.read_options:type_name -> google.datastore.v1.ReadOptions + 29, // 9: google.datastore.v1.RunQueryRequest.query:type_name -> google.datastore.v1.Query + 30, // 10: google.datastore.v1.RunQueryRequest.gql_query:type_name -> google.datastore.v1.GqlQuery + 20, // 11: google.datastore.v1.RunQueryRequest.property_mask:type_name -> google.datastore.v1.PropertyMask + 31, // 12: google.datastore.v1.RunQueryRequest.explain_options:type_name -> google.datastore.v1.ExplainOptions + 32, // 13: google.datastore.v1.RunQueryResponse.batch:type_name -> google.datastore.v1.QueryResultBatch + 29, // 14: google.datastore.v1.RunQueryResponse.query:type_name -> google.datastore.v1.Query + 33, // 15: google.datastore.v1.RunQueryResponse.explain_metrics:type_name -> google.datastore.v1.ExplainMetrics + 28, // 16: google.datastore.v1.RunAggregationQueryRequest.partition_id:type_name -> google.datastore.v1.PartitionId + 21, // 17: google.datastore.v1.RunAggregationQueryRequest.read_options:type_name -> google.datastore.v1.ReadOptions + 34, // 18: google.datastore.v1.RunAggregationQueryRequest.aggregation_query:type_name -> google.datastore.v1.AggregationQuery + 30, // 19: google.datastore.v1.RunAggregationQueryRequest.gql_query:type_name -> google.datastore.v1.GqlQuery + 31, // 20: google.datastore.v1.RunAggregationQueryRequest.explain_options:type_name -> google.datastore.v1.ExplainOptions + 35, // 21: google.datastore.v1.RunAggregationQueryResponse.batch:type_name -> google.datastore.v1.AggregationResultBatch + 34, // 22: google.datastore.v1.RunAggregationQueryResponse.query:type_name -> google.datastore.v1.AggregationQuery + 33, // 23: google.datastore.v1.RunAggregationQueryResponse.explain_metrics:type_name -> google.datastore.v1.ExplainMetrics + 22, // 24: google.datastore.v1.BeginTransactionRequest.transaction_options:type_name -> google.datastore.v1.TransactionOptions + 0, // 25: google.datastore.v1.CommitRequest.mode:type_name -> google.datastore.v1.CommitRequest.Mode + 22, // 26: google.datastore.v1.CommitRequest.single_use_transaction:type_name -> google.datastore.v1.TransactionOptions + 18, // 27: google.datastore.v1.CommitRequest.mutations:type_name -> google.datastore.v1.Mutation + 19, // 28: google.datastore.v1.CommitResponse.mutation_results:type_name -> google.datastore.v1.MutationResult + 27, // 29: google.datastore.v1.CommitResponse.commit_time:type_name -> google.protobuf.Timestamp + 25, // 30: google.datastore.v1.AllocateIdsRequest.keys:type_name -> google.datastore.v1.Key + 25, // 31: google.datastore.v1.AllocateIdsResponse.keys:type_name -> google.datastore.v1.Key + 25, // 32: google.datastore.v1.ReserveIdsRequest.keys:type_name -> google.datastore.v1.Key + 36, // 33: google.datastore.v1.Mutation.insert:type_name -> google.datastore.v1.Entity + 36, // 34: google.datastore.v1.Mutation.update:type_name -> google.datastore.v1.Entity + 36, // 35: google.datastore.v1.Mutation.upsert:type_name -> google.datastore.v1.Entity + 25, // 36: google.datastore.v1.Mutation.delete:type_name -> google.datastore.v1.Key + 27, // 37: google.datastore.v1.Mutation.update_time:type_name -> google.protobuf.Timestamp + 20, // 38: google.datastore.v1.Mutation.property_mask:type_name -> google.datastore.v1.PropertyMask + 25, // 39: google.datastore.v1.MutationResult.key:type_name -> google.datastore.v1.Key + 27, // 40: google.datastore.v1.MutationResult.create_time:type_name -> google.protobuf.Timestamp + 27, // 41: google.datastore.v1.MutationResult.update_time:type_name -> google.protobuf.Timestamp + 1, // 42: google.datastore.v1.ReadOptions.read_consistency:type_name -> google.datastore.v1.ReadOptions.ReadConsistency + 22, // 43: google.datastore.v1.ReadOptions.new_transaction:type_name -> google.datastore.v1.TransactionOptions + 27, // 44: google.datastore.v1.ReadOptions.read_time:type_name -> google.protobuf.Timestamp + 23, // 45: google.datastore.v1.TransactionOptions.read_write:type_name -> google.datastore.v1.TransactionOptions.ReadWrite + 24, // 46: google.datastore.v1.TransactionOptions.read_only:type_name -> google.datastore.v1.TransactionOptions.ReadOnly + 27, // 47: google.datastore.v1.TransactionOptions.ReadOnly.read_time:type_name -> google.protobuf.Timestamp + 2, // 48: google.datastore.v1.Datastore.Lookup:input_type -> google.datastore.v1.LookupRequest + 4, // 49: google.datastore.v1.Datastore.RunQuery:input_type -> google.datastore.v1.RunQueryRequest + 6, // 50: google.datastore.v1.Datastore.RunAggregationQuery:input_type -> google.datastore.v1.RunAggregationQueryRequest + 8, // 51: google.datastore.v1.Datastore.BeginTransaction:input_type -> google.datastore.v1.BeginTransactionRequest + 12, // 52: google.datastore.v1.Datastore.Commit:input_type -> google.datastore.v1.CommitRequest + 10, // 53: google.datastore.v1.Datastore.Rollback:input_type -> google.datastore.v1.RollbackRequest + 14, // 54: google.datastore.v1.Datastore.AllocateIds:input_type -> google.datastore.v1.AllocateIdsRequest + 16, // 55: google.datastore.v1.Datastore.ReserveIds:input_type -> google.datastore.v1.ReserveIdsRequest + 3, // 56: google.datastore.v1.Datastore.Lookup:output_type -> google.datastore.v1.LookupResponse + 5, // 57: google.datastore.v1.Datastore.RunQuery:output_type -> google.datastore.v1.RunQueryResponse + 7, // 58: google.datastore.v1.Datastore.RunAggregationQuery:output_type -> google.datastore.v1.RunAggregationQueryResponse + 9, // 59: google.datastore.v1.Datastore.BeginTransaction:output_type -> google.datastore.v1.BeginTransactionResponse + 13, // 60: google.datastore.v1.Datastore.Commit:output_type -> google.datastore.v1.CommitResponse + 11, // 61: google.datastore.v1.Datastore.Rollback:output_type -> google.datastore.v1.RollbackResponse + 15, // 62: google.datastore.v1.Datastore.AllocateIds:output_type -> google.datastore.v1.AllocateIdsResponse + 17, // 63: google.datastore.v1.Datastore.ReserveIds:output_type -> google.datastore.v1.ReserveIdsResponse + 56, // [56:64] is the sub-list for method output_type + 48, // [48:56] is the sub-list for method input_type + 48, // [48:48] is the sub-list for extension type_name + 48, // [48:48] is the sub-list for extension extendee + 0, // [0:48] is the sub-list for field type_name +} + +func init() { file_google_datastore_v1_datastore_proto_init() } +func file_google_datastore_v1_datastore_proto_init() { + if File_google_datastore_v1_datastore_proto != nil { + return + } + file_google_datastore_v1_aggregation_result_proto_init() + file_google_datastore_v1_entity_proto_init() + file_google_datastore_v1_query_proto_init() + file_google_datastore_v1_query_profile_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_datastore_v1_datastore_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*LookupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*LookupResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*RunQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*RunQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*RunAggregationQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*RunAggregationQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*BeginTransactionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*BeginTransactionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*RollbackRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*RollbackResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*CommitRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*CommitResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*AllocateIdsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*AllocateIdsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*ReserveIdsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*ReserveIdsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*Mutation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*MutationResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*PropertyMask); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*ReadOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*TransactionOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*TransactionOptions_ReadWrite); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_datastore_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*TransactionOptions_ReadOnly); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_datastore_v1_datastore_proto_msgTypes[2].OneofWrappers = []any{ + (*RunQueryRequest_Query)(nil), + (*RunQueryRequest_GqlQuery)(nil), + } + file_google_datastore_v1_datastore_proto_msgTypes[4].OneofWrappers = []any{ + (*RunAggregationQueryRequest_AggregationQuery)(nil), + (*RunAggregationQueryRequest_GqlQuery)(nil), + } + file_google_datastore_v1_datastore_proto_msgTypes[10].OneofWrappers = []any{ + (*CommitRequest_Transaction)(nil), + (*CommitRequest_SingleUseTransaction)(nil), + } + file_google_datastore_v1_datastore_proto_msgTypes[16].OneofWrappers = []any{ + (*Mutation_Insert)(nil), + (*Mutation_Update)(nil), + (*Mutation_Upsert)(nil), + (*Mutation_Delete)(nil), + (*Mutation_BaseVersion)(nil), + (*Mutation_UpdateTime)(nil), + } + file_google_datastore_v1_datastore_proto_msgTypes[19].OneofWrappers = []any{ + (*ReadOptions_ReadConsistency_)(nil), + (*ReadOptions_Transaction)(nil), + (*ReadOptions_NewTransaction)(nil), + (*ReadOptions_ReadTime)(nil), + } + file_google_datastore_v1_datastore_proto_msgTypes[20].OneofWrappers = []any{ + (*TransactionOptions_ReadWrite_)(nil), + (*TransactionOptions_ReadOnly_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_datastore_v1_datastore_proto_rawDesc, + NumEnums: 2, + NumMessages: 23, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_datastore_v1_datastore_proto_goTypes, + DependencyIndexes: file_google_datastore_v1_datastore_proto_depIdxs, + EnumInfos: file_google_datastore_v1_datastore_proto_enumTypes, + MessageInfos: file_google_datastore_v1_datastore_proto_msgTypes, + }.Build() + File_google_datastore_v1_datastore_proto = out.File + file_google_datastore_v1_datastore_proto_rawDesc = nil + file_google_datastore_v1_datastore_proto_goTypes = nil + file_google_datastore_v1_datastore_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 + +// DatastoreClient is the client API for Datastore service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type DatastoreClient interface { + // Looks up entities by key. + Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) + // Queries for entities. + RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) + // Runs an aggregation query. + RunAggregationQuery(ctx context.Context, in *RunAggregationQueryRequest, opts ...grpc.CallOption) (*RunAggregationQueryResponse, error) + // Begins a new transaction. + BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) + // Commits a transaction, optionally creating, deleting or modifying some + // entities. + Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) + // Rolls back a transaction. + Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) + // Allocates IDs for the given keys, which is useful for referencing an entity + // before it is inserted. + AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) + // Prevents the supplied keys' IDs from being auto-allocated by Cloud + // Datastore. + ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) +} + +type datastoreClient struct { + cc grpc.ClientConnInterface +} + +func NewDatastoreClient(cc grpc.ClientConnInterface) DatastoreClient { + return &datastoreClient{cc} +} + +func (c *datastoreClient) Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) { + out := new(LookupResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/Lookup", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) { + out := new(RunQueryResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/RunQuery", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) RunAggregationQuery(ctx context.Context, in *RunAggregationQueryRequest, opts ...grpc.CallOption) (*RunAggregationQueryResponse, error) { + out := new(RunAggregationQueryResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/RunAggregationQuery", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) { + out := new(BeginTransactionResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/BeginTransaction", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) { + out := new(CommitResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/Commit", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) { + out := new(RollbackResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/Rollback", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) { + out := new(AllocateIdsResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/AllocateIds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *datastoreClient) ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) { + out := new(ReserveIdsResponse) + err := c.cc.Invoke(ctx, "/google.datastore.v1.Datastore/ReserveIds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DatastoreServer is the server API for Datastore service. +type DatastoreServer interface { + // Looks up entities by key. + Lookup(context.Context, *LookupRequest) (*LookupResponse, error) + // Queries for entities. + RunQuery(context.Context, *RunQueryRequest) (*RunQueryResponse, error) + // Runs an aggregation query. + RunAggregationQuery(context.Context, *RunAggregationQueryRequest) (*RunAggregationQueryResponse, error) + // Begins a new transaction. + BeginTransaction(context.Context, *BeginTransactionRequest) (*BeginTransactionResponse, error) + // Commits a transaction, optionally creating, deleting or modifying some + // entities. + Commit(context.Context, *CommitRequest) (*CommitResponse, error) + // Rolls back a transaction. + Rollback(context.Context, *RollbackRequest) (*RollbackResponse, error) + // Allocates IDs for the given keys, which is useful for referencing an entity + // before it is inserted. + AllocateIds(context.Context, *AllocateIdsRequest) (*AllocateIdsResponse, error) + // Prevents the supplied keys' IDs from being auto-allocated by Cloud + // Datastore. + ReserveIds(context.Context, *ReserveIdsRequest) (*ReserveIdsResponse, error) +} + +// UnimplementedDatastoreServer can be embedded to have forward compatible implementations. +type UnimplementedDatastoreServer struct { +} + +func (*UnimplementedDatastoreServer) Lookup(context.Context, *LookupRequest) (*LookupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Lookup not implemented") +} +func (*UnimplementedDatastoreServer) RunQuery(context.Context, *RunQueryRequest) (*RunQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RunQuery not implemented") +} +func (*UnimplementedDatastoreServer) RunAggregationQuery(context.Context, *RunAggregationQueryRequest) (*RunAggregationQueryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RunAggregationQuery not implemented") +} +func (*UnimplementedDatastoreServer) BeginTransaction(context.Context, *BeginTransactionRequest) (*BeginTransactionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BeginTransaction not implemented") +} +func (*UnimplementedDatastoreServer) Commit(context.Context, *CommitRequest) (*CommitResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Commit not implemented") +} +func (*UnimplementedDatastoreServer) Rollback(context.Context, *RollbackRequest) (*RollbackResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Rollback not implemented") +} +func (*UnimplementedDatastoreServer) AllocateIds(context.Context, *AllocateIdsRequest) (*AllocateIdsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllocateIds not implemented") +} +func (*UnimplementedDatastoreServer) ReserveIds(context.Context, *ReserveIdsRequest) (*ReserveIdsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReserveIds not implemented") +} + +func RegisterDatastoreServer(s *grpc.Server, srv DatastoreServer) { + s.RegisterService(&_Datastore_serviceDesc, srv) +} + +func _Datastore_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LookupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).Lookup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/Lookup", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).Lookup(ctx, req.(*LookupRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_RunQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RunQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).RunQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/RunQuery", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).RunQuery(ctx, req.(*RunQueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_RunAggregationQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RunAggregationQueryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).RunAggregationQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/RunAggregationQuery", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).RunAggregationQuery(ctx, req.(*RunAggregationQueryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BeginTransactionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).BeginTransaction(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/BeginTransaction", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CommitRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).Commit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/Commit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).Commit(ctx, req.(*CommitRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_Rollback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RollbackRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).Rollback(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/Rollback", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).Rollback(ctx, req.(*RollbackRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_AllocateIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AllocateIdsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).AllocateIds(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/AllocateIds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).AllocateIds(ctx, req.(*AllocateIdsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Datastore_ReserveIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReserveIdsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatastoreServer).ReserveIds(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.datastore.v1.Datastore/ReserveIds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatastoreServer).ReserveIds(ctx, req.(*ReserveIdsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Datastore_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.datastore.v1.Datastore", + HandlerType: (*DatastoreServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Lookup", + Handler: _Datastore_Lookup_Handler, + }, + { + MethodName: "RunQuery", + Handler: _Datastore_RunQuery_Handler, + }, + { + MethodName: "RunAggregationQuery", + Handler: _Datastore_RunAggregationQuery_Handler, + }, + { + MethodName: "BeginTransaction", + Handler: _Datastore_BeginTransaction_Handler, + }, + { + MethodName: "Commit", + Handler: _Datastore_Commit_Handler, + }, + { + MethodName: "Rollback", + Handler: _Datastore_Rollback_Handler, + }, + { + MethodName: "AllocateIds", + Handler: _Datastore_AllocateIds_Handler, + }, + { + MethodName: "ReserveIds", + Handler: _Datastore_ReserveIds_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/datastore/v1/datastore.proto", +} diff --git a/datastore/apiv1/datastorepb/entity.pb.go b/datastore/apiv1/datastorepb/entity.pb.go new file mode 100755 index 000000000000..752144840e4c --- /dev/null +++ b/datastore/apiv1/datastorepb/entity.pb.go @@ -0,0 +1,966 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/datastore/v1/entity.proto + +package datastorepb + +import ( + reflect "reflect" + sync "sync" + + latlng "google.golang.org/genproto/googleapis/type/latlng" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + 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) +) + +// A partition ID identifies a grouping of entities. The grouping is always +// by project and namespace, however the namespace ID may be empty. +// +// A partition ID contains several dimensions: +// project ID and namespace ID. +// +// Partition dimensions: +// +// - May be `""`. +// - Must be valid UTF-8 bytes. +// - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` +// If the value of any dimension matches regex `__.*__`, the partition is +// reserved/read-only. +// A reserved/read-only partition ID is forbidden in certain documented +// contexts. +// +// Foreign partition IDs (in which the project ID does +// not match the context project ID ) are discouraged. +// Reads and writes of foreign partition IDs may fail if the project is not in +// an active state. +type PartitionId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the project to which the entities belong. + ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // If not empty, the ID of the database to which the entities + // belong. + DatabaseId string `protobuf:"bytes,3,opt,name=database_id,json=databaseId,proto3" json:"database_id,omitempty"` + // If not empty, the ID of the namespace to which the entities belong. + NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` +} + +func (x *PartitionId) Reset() { + *x = PartitionId{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartitionId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionId) ProtoMessage() {} + +func (x *PartitionId) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 PartitionId.ProtoReflect.Descriptor instead. +func (*PartitionId) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{0} +} + +func (x *PartitionId) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *PartitionId) GetDatabaseId() string { + if x != nil { + return x.DatabaseId + } + return "" +} + +func (x *PartitionId) GetNamespaceId() string { + if x != nil { + return x.NamespaceId + } + return "" +} + +// A unique identifier for an entity. +// If a key's partition ID or any of its path kinds or names are +// reserved/read-only, the key is reserved/read-only. +// A reserved/read-only key is forbidden in certain documented contexts. +type Key struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Entities are partitioned into subsets, currently identified by a project + // ID and namespace ID. + // Queries are scoped to a single partition. + PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` + // The entity path. + // An entity path consists of one or more elements composed of a kind and a + // string or numerical identifier, which identify entities. The first + // element identifies a _root entity_, the second element identifies + // a _child_ of the root entity, the third element identifies a child of the + // second entity, and so forth. The entities identified by all prefixes of + // the path are called the element's _ancestors_. + // + // An entity path is always fully complete: *all* of the entity's ancestors + // are required to be in the path along with the entity identifier itself. + // The only exception is that in some documented cases, the identifier in the + // last path element (for the entity) itself may be omitted. For example, + // the last path element of the key of `Mutation.insert` may have no + // identifier. + // + // A path can never be empty, and a path can have at most 100 elements. + Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path,proto3" json:"path,omitempty"` +} + +func (x *Key) Reset() { + *x = Key{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Key) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Key) ProtoMessage() {} + +func (x *Key) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 Key.ProtoReflect.Descriptor instead. +func (*Key) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{1} +} + +func (x *Key) GetPartitionId() *PartitionId { + if x != nil { + return x.PartitionId + } + return nil +} + +func (x *Key) GetPath() []*Key_PathElement { + if x != nil { + return x.Path + } + return nil +} + +// An array value. +type ArrayValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Values in the array. + // The order of values in an array is preserved as long as all values have + // identical settings for 'exclude_from_indexes'. + Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` +} + +func (x *ArrayValue) Reset() { + *x = ArrayValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArrayValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArrayValue) ProtoMessage() {} + +func (x *ArrayValue) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 ArrayValue.ProtoReflect.Descriptor instead. +func (*ArrayValue) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{2} +} + +func (x *ArrayValue) GetValues() []*Value { + if x != nil { + return x.Values + } + return nil +} + +// A message that can hold any of the supported value types and associated +// metadata. +type Value struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Must have a value set. + // + // Types that are assignable to ValueType: + // + // *Value_NullValue + // *Value_BooleanValue + // *Value_IntegerValue + // *Value_DoubleValue + // *Value_TimestampValue + // *Value_KeyValue + // *Value_StringValue + // *Value_BlobValue + // *Value_GeoPointValue + // *Value_EntityValue + // *Value_ArrayValue + ValueType isValue_ValueType `protobuf_oneof:"value_type"` + // The `meaning` field should only be populated for backwards compatibility. + Meaning int32 `protobuf:"varint,14,opt,name=meaning,proto3" json:"meaning,omitempty"` + // If the value should be excluded from all indexes including those defined + // explicitly. + ExcludeFromIndexes bool `protobuf:"varint,19,opt,name=exclude_from_indexes,json=excludeFromIndexes,proto3" json:"exclude_from_indexes,omitempty"` +} + +func (x *Value) Reset() { + *x = Value{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Value) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Value) ProtoMessage() {} + +func (x *Value) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 Value.ProtoReflect.Descriptor instead. +func (*Value) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{3} +} + +func (m *Value) GetValueType() isValue_ValueType { + if m != nil { + return m.ValueType + } + return nil +} + +func (x *Value) GetNullValue() structpb.NullValue { + if x, ok := x.GetValueType().(*Value_NullValue); ok { + return x.NullValue + } + return structpb.NullValue(0) +} + +func (x *Value) GetBooleanValue() bool { + if x, ok := x.GetValueType().(*Value_BooleanValue); ok { + return x.BooleanValue + } + return false +} + +func (x *Value) GetIntegerValue() int64 { + if x, ok := x.GetValueType().(*Value_IntegerValue); ok { + return x.IntegerValue + } + return 0 +} + +func (x *Value) GetDoubleValue() float64 { + if x, ok := x.GetValueType().(*Value_DoubleValue); ok { + return x.DoubleValue + } + return 0 +} + +func (x *Value) GetTimestampValue() *timestamppb.Timestamp { + if x, ok := x.GetValueType().(*Value_TimestampValue); ok { + return x.TimestampValue + } + return nil +} + +func (x *Value) GetKeyValue() *Key { + if x, ok := x.GetValueType().(*Value_KeyValue); ok { + return x.KeyValue + } + return nil +} + +func (x *Value) GetStringValue() string { + if x, ok := x.GetValueType().(*Value_StringValue); ok { + return x.StringValue + } + return "" +} + +func (x *Value) GetBlobValue() []byte { + if x, ok := x.GetValueType().(*Value_BlobValue); ok { + return x.BlobValue + } + return nil +} + +func (x *Value) GetGeoPointValue() *latlng.LatLng { + if x, ok := x.GetValueType().(*Value_GeoPointValue); ok { + return x.GeoPointValue + } + return nil +} + +func (x *Value) GetEntityValue() *Entity { + if x, ok := x.GetValueType().(*Value_EntityValue); ok { + return x.EntityValue + } + return nil +} + +func (x *Value) GetArrayValue() *ArrayValue { + if x, ok := x.GetValueType().(*Value_ArrayValue); ok { + return x.ArrayValue + } + return nil +} + +func (x *Value) GetMeaning() int32 { + if x != nil { + return x.Meaning + } + return 0 +} + +func (x *Value) GetExcludeFromIndexes() bool { + if x != nil { + return x.ExcludeFromIndexes + } + return false +} + +type isValue_ValueType interface { + isValue_ValueType() +} + +type Value_NullValue struct { + // A null value. + NullValue structpb.NullValue `protobuf:"varint,11,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"` +} + +type Value_BooleanValue struct { + // A boolean value. + BooleanValue bool `protobuf:"varint,1,opt,name=boolean_value,json=booleanValue,proto3,oneof"` +} + +type Value_IntegerValue struct { + // An integer value. + IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,proto3,oneof"` +} + +type Value_DoubleValue struct { + // A double value. + DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,proto3,oneof"` +} + +type Value_TimestampValue struct { + // A timestamp value. + // When stored in the Datastore, precise only to microseconds; + // any additional precision is rounded down. + TimestampValue *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=timestamp_value,json=timestampValue,proto3,oneof"` +} + +type Value_KeyValue struct { + // A key value. + KeyValue *Key `protobuf:"bytes,5,opt,name=key_value,json=keyValue,proto3,oneof"` +} + +type Value_StringValue struct { + // A UTF-8 encoded string value. + // When `exclude_from_indexes` is false (it is indexed) , may have at most + // 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes. + StringValue string `protobuf:"bytes,17,opt,name=string_value,json=stringValue,proto3,oneof"` +} + +type Value_BlobValue struct { + // A blob value. + // May have at most 1,000,000 bytes. + // When `exclude_from_indexes` is false, may have at most 1500 bytes. + // In JSON requests, must be base64-encoded. + BlobValue []byte `protobuf:"bytes,18,opt,name=blob_value,json=blobValue,proto3,oneof"` +} + +type Value_GeoPointValue struct { + // A geo point value representing a point on the surface of Earth. + GeoPointValue *latlng.LatLng `protobuf:"bytes,8,opt,name=geo_point_value,json=geoPointValue,proto3,oneof"` +} + +type Value_EntityValue struct { + // An entity value. + // + // - May have no key. + // - May have a key with an incomplete key path. + // - May have a reserved/read-only key. + EntityValue *Entity `protobuf:"bytes,6,opt,name=entity_value,json=entityValue,proto3,oneof"` +} + +type Value_ArrayValue struct { + // An array value. + // Cannot contain another array value. + // A `Value` instance that sets field `array_value` must not set fields + // `meaning` or `exclude_from_indexes`. + ArrayValue *ArrayValue `protobuf:"bytes,9,opt,name=array_value,json=arrayValue,proto3,oneof"` +} + +func (*Value_NullValue) isValue_ValueType() {} + +func (*Value_BooleanValue) isValue_ValueType() {} + +func (*Value_IntegerValue) isValue_ValueType() {} + +func (*Value_DoubleValue) isValue_ValueType() {} + +func (*Value_TimestampValue) isValue_ValueType() {} + +func (*Value_KeyValue) isValue_ValueType() {} + +func (*Value_StringValue) isValue_ValueType() {} + +func (*Value_BlobValue) isValue_ValueType() {} + +func (*Value_GeoPointValue) isValue_ValueType() {} + +func (*Value_EntityValue) isValue_ValueType() {} + +func (*Value_ArrayValue) isValue_ValueType() {} + +// A Datastore data object. +// +// Must not exceed 1 MiB - 4 bytes. +type Entity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The entity's key. + // + // An entity must have a key, unless otherwise documented (for example, + // an entity in `Value.entity_value` may have no key). + // An entity's kind is its key path's last element's kind, + // or null if it has no key. + Key *Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // The entity's properties. + // The map's keys are property names. + // A property name matching regex `__.*__` is reserved. + // A reserved property name is forbidden in certain documented contexts. + // The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot + // be empty. + Properties map[string]*Value `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *Entity) Reset() { + *x = Entity{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Entity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Entity) ProtoMessage() {} + +func (x *Entity) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 Entity.ProtoReflect.Descriptor instead. +func (*Entity) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{4} +} + +func (x *Entity) GetKey() *Key { + if x != nil { + return x.Key + } + return nil +} + +func (x *Entity) GetProperties() map[string]*Value { + if x != nil { + return x.Properties + } + return nil +} + +// A (kind, ID/name) pair used to construct a key path. +// +// If either name or ID is set, the element is complete. +// If neither is set, the element is incomplete. +type Key_PathElement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The kind of the entity. + // + // A kind matching regex `__.*__` is reserved/read-only. + // A kind must not contain more than 1500 bytes when UTF-8 encoded. + // Cannot be `""`. + // + // Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are + // encoded as `__bytes__` where `` is the base-64 encoding of the + // bytes. + Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` + // The type of ID. + // + // Types that are assignable to IdType: + // + // *Key_PathElement_Id + // *Key_PathElement_Name + IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` +} + +func (x *Key_PathElement) Reset() { + *x = Key_PathElement{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_entity_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Key_PathElement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Key_PathElement) ProtoMessage() {} + +func (x *Key_PathElement) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_entity_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 Key_PathElement.ProtoReflect.Descriptor instead. +func (*Key_PathElement) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_entity_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *Key_PathElement) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { + if m != nil { + return m.IdType + } + return nil +} + +func (x *Key_PathElement) GetId() int64 { + if x, ok := x.GetIdType().(*Key_PathElement_Id); ok { + return x.Id + } + return 0 +} + +func (x *Key_PathElement) GetName() string { + if x, ok := x.GetIdType().(*Key_PathElement_Name); ok { + return x.Name + } + return "" +} + +type isKey_PathElement_IdType interface { + isKey_PathElement_IdType() +} + +type Key_PathElement_Id struct { + // The auto-allocated ID of the entity. + // + // Never equal to zero. Values less than zero are discouraged and may not + // be supported in the future. + Id int64 `protobuf:"varint,2,opt,name=id,proto3,oneof"` +} + +type Key_PathElement_Name struct { + // The name of the entity. + // + // A name matching regex `__.*__` is reserved/read-only. + // A name must not be more than 1500 bytes when UTF-8 encoded. + // Cannot be `""`. + // + // Must be valid UTF-8 bytes. Legacy values that are not valid UTF-8 are + // encoded as `__bytes__` where `` is the base-64 encoding of the + // bytes. + Name string `protobuf:"bytes,3,opt,name=name,proto3,oneof"` +} + +func (*Key_PathElement_Id) isKey_PathElement_IdType() {} + +func (*Key_PathElement_Name) isKey_PathElement_IdType() {} + +var File_google_datastore_v1_entity_proto protoreflect.FileDescriptor + +var file_google_datastore_v1_entity_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 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, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, + 0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x70, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x54, 0x0a, 0x0b, 0x50, 0x61, 0x74, + 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x40, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x22, 0x9c, 0x05, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6e, + 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, + 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x62, 0x6f, 0x6f, 0x6c, + 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x25, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, + 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, + 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, + 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x48, + 0x00, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x62, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x67, 0x65, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x0d, 0x67, 0x65, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, + 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, + 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x65, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x22, 0xdc, 0x01, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, + 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0xbc, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, 0xea, + 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, + 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_datastore_v1_entity_proto_rawDescOnce sync.Once + file_google_datastore_v1_entity_proto_rawDescData = file_google_datastore_v1_entity_proto_rawDesc +) + +func file_google_datastore_v1_entity_proto_rawDescGZIP() []byte { + file_google_datastore_v1_entity_proto_rawDescOnce.Do(func() { + file_google_datastore_v1_entity_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_entity_proto_rawDescData) + }) + return file_google_datastore_v1_entity_proto_rawDescData +} + +var file_google_datastore_v1_entity_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_google_datastore_v1_entity_proto_goTypes = []any{ + (*PartitionId)(nil), // 0: google.datastore.v1.PartitionId + (*Key)(nil), // 1: google.datastore.v1.Key + (*ArrayValue)(nil), // 2: google.datastore.v1.ArrayValue + (*Value)(nil), // 3: google.datastore.v1.Value + (*Entity)(nil), // 4: google.datastore.v1.Entity + (*Key_PathElement)(nil), // 5: google.datastore.v1.Key.PathElement + nil, // 6: google.datastore.v1.Entity.PropertiesEntry + (structpb.NullValue)(0), // 7: google.protobuf.NullValue + (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp + (*latlng.LatLng)(nil), // 9: google.type.LatLng +} +var file_google_datastore_v1_entity_proto_depIdxs = []int32{ + 0, // 0: google.datastore.v1.Key.partition_id:type_name -> google.datastore.v1.PartitionId + 5, // 1: google.datastore.v1.Key.path:type_name -> google.datastore.v1.Key.PathElement + 3, // 2: google.datastore.v1.ArrayValue.values:type_name -> google.datastore.v1.Value + 7, // 3: google.datastore.v1.Value.null_value:type_name -> google.protobuf.NullValue + 8, // 4: google.datastore.v1.Value.timestamp_value:type_name -> google.protobuf.Timestamp + 1, // 5: google.datastore.v1.Value.key_value:type_name -> google.datastore.v1.Key + 9, // 6: google.datastore.v1.Value.geo_point_value:type_name -> google.type.LatLng + 4, // 7: google.datastore.v1.Value.entity_value:type_name -> google.datastore.v1.Entity + 2, // 8: google.datastore.v1.Value.array_value:type_name -> google.datastore.v1.ArrayValue + 1, // 9: google.datastore.v1.Entity.key:type_name -> google.datastore.v1.Key + 6, // 10: google.datastore.v1.Entity.properties:type_name -> google.datastore.v1.Entity.PropertiesEntry + 3, // 11: google.datastore.v1.Entity.PropertiesEntry.value:type_name -> google.datastore.v1.Value + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name +} + +func init() { file_google_datastore_v1_entity_proto_init() } +func file_google_datastore_v1_entity_proto_init() { + if File_google_datastore_v1_entity_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_google_datastore_v1_entity_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*PartitionId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_entity_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Key); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_entity_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*ArrayValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_entity_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Value); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_entity_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*Entity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_entity_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Key_PathElement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_datastore_v1_entity_proto_msgTypes[3].OneofWrappers = []any{ + (*Value_NullValue)(nil), + (*Value_BooleanValue)(nil), + (*Value_IntegerValue)(nil), + (*Value_DoubleValue)(nil), + (*Value_TimestampValue)(nil), + (*Value_KeyValue)(nil), + (*Value_StringValue)(nil), + (*Value_BlobValue)(nil), + (*Value_GeoPointValue)(nil), + (*Value_EntityValue)(nil), + (*Value_ArrayValue)(nil), + } + file_google_datastore_v1_entity_proto_msgTypes[5].OneofWrappers = []any{ + (*Key_PathElement_Id)(nil), + (*Key_PathElement_Name)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_datastore_v1_entity_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_datastore_v1_entity_proto_goTypes, + DependencyIndexes: file_google_datastore_v1_entity_proto_depIdxs, + MessageInfos: file_google_datastore_v1_entity_proto_msgTypes, + }.Build() + File_google_datastore_v1_entity_proto = out.File + file_google_datastore_v1_entity_proto_rawDesc = nil + file_google_datastore_v1_entity_proto_goTypes = nil + file_google_datastore_v1_entity_proto_depIdxs = nil +} diff --git a/datastore/apiv1/datastorepb/query.pb.go b/datastore/apiv1/datastorepb/query.pb.go new file mode 100755 index 000000000000..29ff832582b5 --- /dev/null +++ b/datastore/apiv1/datastorepb/query.pb.go @@ -0,0 +1,2396 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/datastore/v1/query.proto + +package datastorepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" +) + +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) +) + +// Specifies what data the 'entity' field contains. +// A `ResultType` is either implied (for example, in `LookupResponse.missing` +// from `datastore.proto`, it is always `KEY_ONLY`) or specified by context +// (for example, in message `QueryResultBatch`, field `entity_result_type` +// specifies a `ResultType` for all the values in field `entity_results`). +type EntityResult_ResultType int32 + +const ( + // Unspecified. This value is never used. + EntityResult_RESULT_TYPE_UNSPECIFIED EntityResult_ResultType = 0 + // The key and properties. + EntityResult_FULL EntityResult_ResultType = 1 + // A projected subset of properties. The entity may have no key. + EntityResult_PROJECTION EntityResult_ResultType = 2 + // Only the key. + EntityResult_KEY_ONLY EntityResult_ResultType = 3 +) + +// Enum value maps for EntityResult_ResultType. +var ( + EntityResult_ResultType_name = map[int32]string{ + 0: "RESULT_TYPE_UNSPECIFIED", + 1: "FULL", + 2: "PROJECTION", + 3: "KEY_ONLY", + } + EntityResult_ResultType_value = map[string]int32{ + "RESULT_TYPE_UNSPECIFIED": 0, + "FULL": 1, + "PROJECTION": 2, + "KEY_ONLY": 3, + } +) + +func (x EntityResult_ResultType) Enum() *EntityResult_ResultType { + p := new(EntityResult_ResultType) + *p = x + return p +} + +func (x EntityResult_ResultType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EntityResult_ResultType) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_query_proto_enumTypes[0].Descriptor() +} + +func (EntityResult_ResultType) Type() protoreflect.EnumType { + return &file_google_datastore_v1_query_proto_enumTypes[0] +} + +func (x EntityResult_ResultType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EntityResult_ResultType.Descriptor instead. +func (EntityResult_ResultType) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{0, 0} +} + +// The sort direction. +type PropertyOrder_Direction int32 + +const ( + // Unspecified. This value must not be used. + PropertyOrder_DIRECTION_UNSPECIFIED PropertyOrder_Direction = 0 + // Ascending. + PropertyOrder_ASCENDING PropertyOrder_Direction = 1 + // Descending. + PropertyOrder_DESCENDING PropertyOrder_Direction = 2 +) + +// Enum value maps for PropertyOrder_Direction. +var ( + PropertyOrder_Direction_name = map[int32]string{ + 0: "DIRECTION_UNSPECIFIED", + 1: "ASCENDING", + 2: "DESCENDING", + } + PropertyOrder_Direction_value = map[string]int32{ + "DIRECTION_UNSPECIFIED": 0, + "ASCENDING": 1, + "DESCENDING": 2, + } +) + +func (x PropertyOrder_Direction) Enum() *PropertyOrder_Direction { + p := new(PropertyOrder_Direction) + *p = x + return p +} + +func (x PropertyOrder_Direction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PropertyOrder_Direction) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_query_proto_enumTypes[1].Descriptor() +} + +func (PropertyOrder_Direction) Type() protoreflect.EnumType { + return &file_google_datastore_v1_query_proto_enumTypes[1] +} + +func (x PropertyOrder_Direction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PropertyOrder_Direction.Descriptor instead. +func (PropertyOrder_Direction) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{6, 0} +} + +// A composite filter operator. +type CompositeFilter_Operator int32 + +const ( + // Unspecified. This value must not be used. + CompositeFilter_OPERATOR_UNSPECIFIED CompositeFilter_Operator = 0 + // The results are required to satisfy each of the combined filters. + CompositeFilter_AND CompositeFilter_Operator = 1 + // Documents are required to satisfy at least one of the combined filters. + CompositeFilter_OR CompositeFilter_Operator = 2 +) + +// Enum value maps for CompositeFilter_Operator. +var ( + CompositeFilter_Operator_name = map[int32]string{ + 0: "OPERATOR_UNSPECIFIED", + 1: "AND", + 2: "OR", + } + CompositeFilter_Operator_value = map[string]int32{ + "OPERATOR_UNSPECIFIED": 0, + "AND": 1, + "OR": 2, + } +) + +func (x CompositeFilter_Operator) Enum() *CompositeFilter_Operator { + p := new(CompositeFilter_Operator) + *p = x + return p +} + +func (x CompositeFilter_Operator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CompositeFilter_Operator) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_query_proto_enumTypes[2].Descriptor() +} + +func (CompositeFilter_Operator) Type() protoreflect.EnumType { + return &file_google_datastore_v1_query_proto_enumTypes[2] +} + +func (x CompositeFilter_Operator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CompositeFilter_Operator.Descriptor instead. +func (CompositeFilter_Operator) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{8, 0} +} + +// A property filter operator. +type PropertyFilter_Operator int32 + +const ( + // Unspecified. This value must not be used. + PropertyFilter_OPERATOR_UNSPECIFIED PropertyFilter_Operator = 0 + // The given `property` is less than the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. + PropertyFilter_LESS_THAN PropertyFilter_Operator = 1 + // The given `property` is less than or equal to the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. + PropertyFilter_LESS_THAN_OR_EQUAL PropertyFilter_Operator = 2 + // The given `property` is greater than the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. + PropertyFilter_GREATER_THAN PropertyFilter_Operator = 3 + // The given `property` is greater than or equal to the given `value`. + // + // Requires: + // + // * That `property` comes first in `order_by`. + PropertyFilter_GREATER_THAN_OR_EQUAL PropertyFilter_Operator = 4 + // The given `property` is equal to the given `value`. + PropertyFilter_EQUAL PropertyFilter_Operator = 5 + // The given `property` is equal to at least one value in the given array. + // + // Requires: + // + // - That `value` is a non-empty `ArrayValue`, subject to disjunction + // limits. + // - No `NOT_IN` is in the same query. + PropertyFilter_IN PropertyFilter_Operator = 6 + // The given `property` is not equal to the given `value`. + // + // Requires: + // + // * No other `NOT_EQUAL` or `NOT_IN` is in the same query. + // * That `property` comes first in the `order_by`. + PropertyFilter_NOT_EQUAL PropertyFilter_Operator = 9 + // Limit the result set to the given entity and its descendants. + // + // Requires: + // + // * That `value` is an entity key. + // * All evaluated disjunctions must have the same `HAS_ANCESTOR` filter. + PropertyFilter_HAS_ANCESTOR PropertyFilter_Operator = 11 + // The value of the `property` is not in the given array. + // + // Requires: + // + // * That `value` is a non-empty `ArrayValue` with at most 10 values. + // * No other `OR`, `IN`, `NOT_IN`, `NOT_EQUAL` is in the same query. + // * That `field` comes first in the `order_by`. + PropertyFilter_NOT_IN PropertyFilter_Operator = 13 +) + +// Enum value maps for PropertyFilter_Operator. +var ( + PropertyFilter_Operator_name = map[int32]string{ + 0: "OPERATOR_UNSPECIFIED", + 1: "LESS_THAN", + 2: "LESS_THAN_OR_EQUAL", + 3: "GREATER_THAN", + 4: "GREATER_THAN_OR_EQUAL", + 5: "EQUAL", + 6: "IN", + 9: "NOT_EQUAL", + 11: "HAS_ANCESTOR", + 13: "NOT_IN", + } + PropertyFilter_Operator_value = map[string]int32{ + "OPERATOR_UNSPECIFIED": 0, + "LESS_THAN": 1, + "LESS_THAN_OR_EQUAL": 2, + "GREATER_THAN": 3, + "GREATER_THAN_OR_EQUAL": 4, + "EQUAL": 5, + "IN": 6, + "NOT_EQUAL": 9, + "HAS_ANCESTOR": 11, + "NOT_IN": 13, + } +) + +func (x PropertyFilter_Operator) Enum() *PropertyFilter_Operator { + p := new(PropertyFilter_Operator) + *p = x + return p +} + +func (x PropertyFilter_Operator) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PropertyFilter_Operator) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_query_proto_enumTypes[3].Descriptor() +} + +func (PropertyFilter_Operator) Type() protoreflect.EnumType { + return &file_google_datastore_v1_query_proto_enumTypes[3] +} + +func (x PropertyFilter_Operator) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PropertyFilter_Operator.Descriptor instead. +func (PropertyFilter_Operator) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{9, 0} +} + +// The possible values for the `more_results` field. +type QueryResultBatch_MoreResultsType int32 + +const ( + // Unspecified. This value is never used. + QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED QueryResultBatch_MoreResultsType = 0 + // There may be additional batches to fetch from this query. + QueryResultBatch_NOT_FINISHED QueryResultBatch_MoreResultsType = 1 + // The query is finished, but there may be more results after the limit. + QueryResultBatch_MORE_RESULTS_AFTER_LIMIT QueryResultBatch_MoreResultsType = 2 + // The query is finished, but there may be more results after the end + // cursor. + QueryResultBatch_MORE_RESULTS_AFTER_CURSOR QueryResultBatch_MoreResultsType = 4 + // The query is finished, and there are no more results. + QueryResultBatch_NO_MORE_RESULTS QueryResultBatch_MoreResultsType = 3 +) + +// Enum value maps for QueryResultBatch_MoreResultsType. +var ( + QueryResultBatch_MoreResultsType_name = map[int32]string{ + 0: "MORE_RESULTS_TYPE_UNSPECIFIED", + 1: "NOT_FINISHED", + 2: "MORE_RESULTS_AFTER_LIMIT", + 4: "MORE_RESULTS_AFTER_CURSOR", + 3: "NO_MORE_RESULTS", + } + QueryResultBatch_MoreResultsType_value = map[string]int32{ + "MORE_RESULTS_TYPE_UNSPECIFIED": 0, + "NOT_FINISHED": 1, + "MORE_RESULTS_AFTER_LIMIT": 2, + "MORE_RESULTS_AFTER_CURSOR": 4, + "NO_MORE_RESULTS": 3, + } +) + +func (x QueryResultBatch_MoreResultsType) Enum() *QueryResultBatch_MoreResultsType { + p := new(QueryResultBatch_MoreResultsType) + *p = x + return p +} + +func (x QueryResultBatch_MoreResultsType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QueryResultBatch_MoreResultsType) Descriptor() protoreflect.EnumDescriptor { + return file_google_datastore_v1_query_proto_enumTypes[4].Descriptor() +} + +func (QueryResultBatch_MoreResultsType) Type() protoreflect.EnumType { + return &file_google_datastore_v1_query_proto_enumTypes[4] +} + +func (x QueryResultBatch_MoreResultsType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QueryResultBatch_MoreResultsType.Descriptor instead. +func (QueryResultBatch_MoreResultsType) EnumDescriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{12, 0} +} + +// The result of fetching an entity from Datastore. +type EntityResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resulting entity. + Entity *Entity `protobuf:"bytes,1,opt,name=entity,proto3" json:"entity,omitempty"` + // The version of the entity, a strictly positive number that monotonically + // increases with changes to the entity. + // + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. + // + // For [missing][google.datastore.v1.LookupResponse.missing] entities in + // `LookupResponse`, this is the version of the snapshot that was used to look + // up the entity, and it is always set except for eventually consistent reads. + Version int64 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` + // The time at which the entity was created. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. + // If this entity is missing, this field will not be set. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // The time at which the entity was last changed. + // This field is set for + // [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity results. + // If this entity is missing, this field will not be set. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // A cursor that points to the position after the result entity. + // Set only when the `EntityResult` is part of a `QueryResultBatch` message. + Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3" json:"cursor,omitempty"` +} + +func (x *EntityResult) Reset() { + *x = EntityResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntityResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntityResult) ProtoMessage() {} + +func (x *EntityResult) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 EntityResult.ProtoReflect.Descriptor instead. +func (*EntityResult) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{0} +} + +func (x *EntityResult) GetEntity() *Entity { + if x != nil { + return x.Entity + } + return nil +} + +func (x *EntityResult) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *EntityResult) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *EntityResult) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *EntityResult) GetCursor() []byte { + if x != nil { + return x.Cursor + } + return nil +} + +// A query for entities. +type Query struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The projection to return. Defaults to returning all properties. + Projection []*Projection `protobuf:"bytes,2,rep,name=projection,proto3" json:"projection,omitempty"` + // The kinds to query (if empty, returns entities of all kinds). + // Currently at most 1 kind may be specified. + Kind []*KindExpression `protobuf:"bytes,3,rep,name=kind,proto3" json:"kind,omitempty"` + // The filter to apply. + Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // The order to apply to the query results (if empty, order is unspecified). + Order []*PropertyOrder `protobuf:"bytes,5,rep,name=order,proto3" json:"order,omitempty"` + // The properties to make distinct. The query results will contain the first + // result for each distinct combination of values for the given properties + // (if empty, all results are returned). + // + // Requires: + // + // * If `order` is specified, the set of distinct on properties must appear + // before the non-distinct on properties in `order`. + DistinctOn []*PropertyReference `protobuf:"bytes,6,rep,name=distinct_on,json=distinctOn,proto3" json:"distinct_on,omitempty"` + // A starting point for the query results. Query cursors are + // returned in query result batches and + // [can only be used to continue the same + // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + StartCursor []byte `protobuf:"bytes,7,opt,name=start_cursor,json=startCursor,proto3" json:"start_cursor,omitempty"` + // An ending point for the query results. Query cursors are + // returned in query result batches and + // [can only be used to limit the same + // query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). + EndCursor []byte `protobuf:"bytes,8,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` + // The number of results to skip. Applies before limit, but after all other + // constraints. Optional. Must be >= 0 if specified. + Offset int32 `protobuf:"varint,10,opt,name=offset,proto3" json:"offset,omitempty"` + // The maximum number of results to return. Applies after all other + // constraints. Optional. + // Unspecified is interpreted as no limit. + // Must be >= 0 if specified. + Limit *wrapperspb.Int32Value `protobuf:"bytes,12,opt,name=limit,proto3" json:"limit,omitempty"` +} + +func (x *Query) Reset() { + *x = Query{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Query) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Query) ProtoMessage() {} + +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *Query) GetProjection() []*Projection { + if x != nil { + return x.Projection + } + return nil +} + +func (x *Query) GetKind() []*KindExpression { + if x != nil { + return x.Kind + } + return nil +} + +func (x *Query) GetFilter() *Filter { + if x != nil { + return x.Filter + } + return nil +} + +func (x *Query) GetOrder() []*PropertyOrder { + if x != nil { + return x.Order + } + return nil +} + +func (x *Query) GetDistinctOn() []*PropertyReference { + if x != nil { + return x.DistinctOn + } + return nil +} + +func (x *Query) GetStartCursor() []byte { + if x != nil { + return x.StartCursor + } + return nil +} + +func (x *Query) GetEndCursor() []byte { + if x != nil { + return x.EndCursor + } + return nil +} + +func (x *Query) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *Query) GetLimit() *wrapperspb.Int32Value { + if x != nil { + return x.Limit + } + return nil +} + +// Datastore query for running an aggregation over a +// [Query][google.datastore.v1.Query]. +type AggregationQuery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The base query to aggregate over. + // + // Types that are assignable to QueryType: + // + // *AggregationQuery_NestedQuery + QueryType isAggregationQuery_QueryType `protobuf_oneof:"query_type"` + // Optional. Series of aggregations to apply over the results of the + // `nested_query`. + // + // Requires: + // + // * A minimum of one and maximum of five aggregations per query. + Aggregations []*AggregationQuery_Aggregation `protobuf:"bytes,3,rep,name=aggregations,proto3" json:"aggregations,omitempty"` +} + +func (x *AggregationQuery) Reset() { + *x = AggregationQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationQuery) ProtoMessage() {} + +func (x *AggregationQuery) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 AggregationQuery.ProtoReflect.Descriptor instead. +func (*AggregationQuery) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (m *AggregationQuery) GetQueryType() isAggregationQuery_QueryType { + if m != nil { + return m.QueryType + } + return nil +} + +func (x *AggregationQuery) GetNestedQuery() *Query { + if x, ok := x.GetQueryType().(*AggregationQuery_NestedQuery); ok { + return x.NestedQuery + } + return nil +} + +func (x *AggregationQuery) GetAggregations() []*AggregationQuery_Aggregation { + if x != nil { + return x.Aggregations + } + return nil +} + +type isAggregationQuery_QueryType interface { + isAggregationQuery_QueryType() +} + +type AggregationQuery_NestedQuery struct { + // Nested query for aggregation + NestedQuery *Query `protobuf:"bytes,1,opt,name=nested_query,json=nestedQuery,proto3,oneof"` +} + +func (*AggregationQuery_NestedQuery) isAggregationQuery_QueryType() {} + +// A representation of a kind. +type KindExpression struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the kind. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *KindExpression) Reset() { + *x = KindExpression{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KindExpression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KindExpression) ProtoMessage() {} + +func (x *KindExpression) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 KindExpression.ProtoReflect.Descriptor instead. +func (*KindExpression) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *KindExpression) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// A reference to a property relative to the kind expressions. +type PropertyReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A reference to a property. + // + // Requires: + // + // * MUST be a dot-delimited (`.`) string of segments, where each segment + // conforms to [entity property name][google.datastore.v1.Entity.properties] + // limitations. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *PropertyReference) Reset() { + *x = PropertyReference{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropertyReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropertyReference) ProtoMessage() {} + +func (x *PropertyReference) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 PropertyReference.ProtoReflect.Descriptor instead. +func (*PropertyReference) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *PropertyReference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// A representation of a property in a projection. +type Projection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The property to project. + Property *PropertyReference `protobuf:"bytes,1,opt,name=property,proto3" json:"property,omitempty"` +} + +func (x *Projection) Reset() { + *x = Projection{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Projection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Projection) ProtoMessage() {} + +func (x *Projection) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 Projection.ProtoReflect.Descriptor instead. +func (*Projection) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *Projection) GetProperty() *PropertyReference { + if x != nil { + return x.Property + } + return nil +} + +// The desired order for a specific property. +type PropertyOrder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The property to order by. + Property *PropertyReference `protobuf:"bytes,1,opt,name=property,proto3" json:"property,omitempty"` + // The direction to order by. Defaults to `ASCENDING`. + Direction PropertyOrder_Direction `protobuf:"varint,2,opt,name=direction,proto3,enum=google.datastore.v1.PropertyOrder_Direction" json:"direction,omitempty"` +} + +func (x *PropertyOrder) Reset() { + *x = PropertyOrder{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropertyOrder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropertyOrder) ProtoMessage() {} + +func (x *PropertyOrder) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 PropertyOrder.ProtoReflect.Descriptor instead. +func (*PropertyOrder) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *PropertyOrder) GetProperty() *PropertyReference { + if x != nil { + return x.Property + } + return nil +} + +func (x *PropertyOrder) GetDirection() PropertyOrder_Direction { + if x != nil { + return x.Direction + } + return PropertyOrder_DIRECTION_UNSPECIFIED +} + +// A holder for any type of filter. +type Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of filter. + // + // Types that are assignable to FilterType: + // + // *Filter_CompositeFilter + // *Filter_PropertyFilter + FilterType isFilter_FilterType `protobuf_oneof:"filter_type"` +} + +func (x *Filter) Reset() { + *x = Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Filter) ProtoMessage() {} + +func (x *Filter) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 Filter.ProtoReflect.Descriptor instead. +func (*Filter) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (m *Filter) GetFilterType() isFilter_FilterType { + if m != nil { + return m.FilterType + } + return nil +} + +func (x *Filter) GetCompositeFilter() *CompositeFilter { + if x, ok := x.GetFilterType().(*Filter_CompositeFilter); ok { + return x.CompositeFilter + } + return nil +} + +func (x *Filter) GetPropertyFilter() *PropertyFilter { + if x, ok := x.GetFilterType().(*Filter_PropertyFilter); ok { + return x.PropertyFilter + } + return nil +} + +type isFilter_FilterType interface { + isFilter_FilterType() +} + +type Filter_CompositeFilter struct { + // A composite filter. + CompositeFilter *CompositeFilter `protobuf:"bytes,1,opt,name=composite_filter,json=compositeFilter,proto3,oneof"` +} + +type Filter_PropertyFilter struct { + // A filter on a property. + PropertyFilter *PropertyFilter `protobuf:"bytes,2,opt,name=property_filter,json=propertyFilter,proto3,oneof"` +} + +func (*Filter_CompositeFilter) isFilter_FilterType() {} + +func (*Filter_PropertyFilter) isFilter_FilterType() {} + +// A filter that merges multiple other filters using the given operator. +type CompositeFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The operator for combining multiple filters. + Op CompositeFilter_Operator `protobuf:"varint,1,opt,name=op,proto3,enum=google.datastore.v1.CompositeFilter_Operator" json:"op,omitempty"` + // The list of filters to combine. + // + // Requires: + // + // * At least one filter is present. + Filters []*Filter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` +} + +func (x *CompositeFilter) Reset() { + *x = CompositeFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompositeFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompositeFilter) ProtoMessage() {} + +func (x *CompositeFilter) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 CompositeFilter.ProtoReflect.Descriptor instead. +func (*CompositeFilter) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{8} +} + +func (x *CompositeFilter) GetOp() CompositeFilter_Operator { + if x != nil { + return x.Op + } + return CompositeFilter_OPERATOR_UNSPECIFIED +} + +func (x *CompositeFilter) GetFilters() []*Filter { + if x != nil { + return x.Filters + } + return nil +} + +// A filter on a specific property. +type PropertyFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The property to filter by. + Property *PropertyReference `protobuf:"bytes,1,opt,name=property,proto3" json:"property,omitempty"` + // The operator to filter by. + Op PropertyFilter_Operator `protobuf:"varint,2,opt,name=op,proto3,enum=google.datastore.v1.PropertyFilter_Operator" json:"op,omitempty"` + // The value to compare the property to. + Value *Value `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *PropertyFilter) Reset() { + *x = PropertyFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PropertyFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PropertyFilter) ProtoMessage() {} + +func (x *PropertyFilter) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 PropertyFilter.ProtoReflect.Descriptor instead. +func (*PropertyFilter) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{9} +} + +func (x *PropertyFilter) GetProperty() *PropertyReference { + if x != nil { + return x.Property + } + return nil +} + +func (x *PropertyFilter) GetOp() PropertyFilter_Operator { + if x != nil { + return x.Op + } + return PropertyFilter_OPERATOR_UNSPECIFIED +} + +func (x *PropertyFilter) GetValue() *Value { + if x != nil { + return x.Value + } + return nil +} + +// A [GQL +// query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). +type GqlQuery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A string of the format described + // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). + QueryString string `protobuf:"bytes,1,opt,name=query_string,json=queryString,proto3" json:"query_string,omitempty"` + // When false, the query string must not contain any literals and instead must + // bind all values. For example, + // `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while + // `SELECT * FROM Kind WHERE a = @value` is. + AllowLiterals bool `protobuf:"varint,2,opt,name=allow_literals,json=allowLiterals,proto3" json:"allow_literals,omitempty"` + // For each non-reserved named binding site in the query string, there must be + // a named parameter with that name, but not necessarily the inverse. + // + // Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex + // `__.*__`, and must not be `""`. + NamedBindings map[string]*GqlQueryParameter `protobuf:"bytes,5,rep,name=named_bindings,json=namedBindings,proto3" json:"named_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Numbered binding site @1 references the first numbered parameter, + // effectively using 1-based indexing, rather than the usual 0. + // + // For each binding site numbered i in `query_string`, there must be an i-th + // numbered parameter. The inverse must also be true. + PositionalBindings []*GqlQueryParameter `protobuf:"bytes,4,rep,name=positional_bindings,json=positionalBindings,proto3" json:"positional_bindings,omitempty"` +} + +func (x *GqlQuery) Reset() { + *x = GqlQuery{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GqlQuery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GqlQuery) ProtoMessage() {} + +func (x *GqlQuery) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 GqlQuery.ProtoReflect.Descriptor instead. +func (*GqlQuery) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{10} +} + +func (x *GqlQuery) GetQueryString() string { + if x != nil { + return x.QueryString + } + return "" +} + +func (x *GqlQuery) GetAllowLiterals() bool { + if x != nil { + return x.AllowLiterals + } + return false +} + +func (x *GqlQuery) GetNamedBindings() map[string]*GqlQueryParameter { + if x != nil { + return x.NamedBindings + } + return nil +} + +func (x *GqlQuery) GetPositionalBindings() []*GqlQueryParameter { + if x != nil { + return x.PositionalBindings + } + return nil +} + +// A binding parameter for a GQL query. +type GqlQueryParameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of parameter. + // + // Types that are assignable to ParameterType: + // + // *GqlQueryParameter_Value + // *GqlQueryParameter_Cursor + ParameterType isGqlQueryParameter_ParameterType `protobuf_oneof:"parameter_type"` +} + +func (x *GqlQueryParameter) Reset() { + *x = GqlQueryParameter{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GqlQueryParameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GqlQueryParameter) ProtoMessage() {} + +func (x *GqlQueryParameter) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 GqlQueryParameter.ProtoReflect.Descriptor instead. +func (*GqlQueryParameter) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{11} +} + +func (m *GqlQueryParameter) GetParameterType() isGqlQueryParameter_ParameterType { + if m != nil { + return m.ParameterType + } + return nil +} + +func (x *GqlQueryParameter) GetValue() *Value { + if x, ok := x.GetParameterType().(*GqlQueryParameter_Value); ok { + return x.Value + } + return nil +} + +func (x *GqlQueryParameter) GetCursor() []byte { + if x, ok := x.GetParameterType().(*GqlQueryParameter_Cursor); ok { + return x.Cursor + } + return nil +} + +type isGqlQueryParameter_ParameterType interface { + isGqlQueryParameter_ParameterType() +} + +type GqlQueryParameter_Value struct { + // A value parameter. + Value *Value `protobuf:"bytes,2,opt,name=value,proto3,oneof"` +} + +type GqlQueryParameter_Cursor struct { + // A query cursor. Query cursors are returned in query + // result batches. + Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3,oneof"` +} + +func (*GqlQueryParameter_Value) isGqlQueryParameter_ParameterType() {} + +func (*GqlQueryParameter_Cursor) isGqlQueryParameter_ParameterType() {} + +// A batch of results produced by a query. +type QueryResultBatch struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of results skipped, typically because of an offset. + SkippedResults int32 `protobuf:"varint,6,opt,name=skipped_results,json=skippedResults,proto3" json:"skipped_results,omitempty"` + // A cursor that points to the position after the last skipped result. + // Will be set when `skipped_results` != 0. + SkippedCursor []byte `protobuf:"bytes,3,opt,name=skipped_cursor,json=skippedCursor,proto3" json:"skipped_cursor,omitempty"` + // The result type for every entity in `entity_results`. + EntityResultType EntityResult_ResultType `protobuf:"varint,1,opt,name=entity_result_type,json=entityResultType,proto3,enum=google.datastore.v1.EntityResult_ResultType" json:"entity_result_type,omitempty"` + // The results for this batch. + EntityResults []*EntityResult `protobuf:"bytes,2,rep,name=entity_results,json=entityResults,proto3" json:"entity_results,omitempty"` + // A cursor that points to the position after the last result in the batch. + EndCursor []byte `protobuf:"bytes,4,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` + // The state of the query after the current batch. + MoreResults QueryResultBatch_MoreResultsType `protobuf:"varint,5,opt,name=more_results,json=moreResults,proto3,enum=google.datastore.v1.QueryResultBatch_MoreResultsType" json:"more_results,omitempty"` + // The version number of the snapshot this batch was returned from. + // This applies to the range of results from the query's `start_cursor` (or + // the beginning of the query if no cursor was given) to this batch's + // `end_cursor` (not the query's `end_cursor`). + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater snapshot version number. Each batch's snapshot version + // is valid for all preceding batches. + // The value will be zero for eventually consistent queries. + SnapshotVersion int64 `protobuf:"varint,7,opt,name=snapshot_version,json=snapshotVersion,proto3" json:"snapshot_version,omitempty"` + // Read timestamp this batch was returned from. + // This applies to the range of results from the query's `start_cursor` (or + // the beginning of the query if no cursor was given) to this batch's + // `end_cursor` (not the query's `end_cursor`). + // + // In a single transaction, subsequent query result batches for the same query + // can have a greater timestamp. Each batch's read timestamp + // is valid for all preceding batches. + // This value will not be set for eventually consistent queries in Cloud + // Datastore. + ReadTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=read_time,json=readTime,proto3" json:"read_time,omitempty"` +} + +func (x *QueryResultBatch) Reset() { + *x = QueryResultBatch{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryResultBatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryResultBatch) ProtoMessage() {} + +func (x *QueryResultBatch) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 QueryResultBatch.ProtoReflect.Descriptor instead. +func (*QueryResultBatch) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{12} +} + +func (x *QueryResultBatch) GetSkippedResults() int32 { + if x != nil { + return x.SkippedResults + } + return 0 +} + +func (x *QueryResultBatch) GetSkippedCursor() []byte { + if x != nil { + return x.SkippedCursor + } + return nil +} + +func (x *QueryResultBatch) GetEntityResultType() EntityResult_ResultType { + if x != nil { + return x.EntityResultType + } + return EntityResult_RESULT_TYPE_UNSPECIFIED +} + +func (x *QueryResultBatch) GetEntityResults() []*EntityResult { + if x != nil { + return x.EntityResults + } + return nil +} + +func (x *QueryResultBatch) GetEndCursor() []byte { + if x != nil { + return x.EndCursor + } + return nil +} + +func (x *QueryResultBatch) GetMoreResults() QueryResultBatch_MoreResultsType { + if x != nil { + return x.MoreResults + } + return QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED +} + +func (x *QueryResultBatch) GetSnapshotVersion() int64 { + if x != nil { + return x.SnapshotVersion + } + return 0 +} + +func (x *QueryResultBatch) GetReadTime() *timestamppb.Timestamp { + if x != nil { + return x.ReadTime + } + return nil +} + +// Defines an aggregation that produces a single result. +type AggregationQuery_Aggregation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of aggregation to perform, required. + // + // Types that are assignable to Operator: + // + // *AggregationQuery_Aggregation_Count_ + // *AggregationQuery_Aggregation_Sum_ + // *AggregationQuery_Aggregation_Avg_ + Operator isAggregationQuery_Aggregation_Operator `protobuf_oneof:"operator"` + // Optional. Optional name of the property to store the result of the + // aggregation. + // + // If not provided, Datastore will pick a default name following the format + // `property_`. For example: + // + // ``` + // AGGREGATE + // + // COUNT_UP_TO(1) AS count_up_to_1, + // COUNT_UP_TO(2), + // COUNT_UP_TO(3) AS count_up_to_3, + // COUNT(*) + // + // OVER ( + // + // ... + // + // ); + // ``` + // + // becomes: + // + // ``` + // AGGREGATE + // + // COUNT_UP_TO(1) AS count_up_to_1, + // COUNT_UP_TO(2) AS property_1, + // COUNT_UP_TO(3) AS count_up_to_3, + // COUNT(*) AS property_2 + // + // OVER ( + // + // ... + // + // ); + // ``` + // + // Requires: + // + // * Must be unique across all aggregation aliases. + // * Conform to [entity property + // name][google.datastore.v1.Entity.properties] limitations. + Alias string `protobuf:"bytes,7,opt,name=alias,proto3" json:"alias,omitempty"` +} + +func (x *AggregationQuery_Aggregation) Reset() { + *x = AggregationQuery_Aggregation{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationQuery_Aggregation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationQuery_Aggregation) ProtoMessage() {} + +func (x *AggregationQuery_Aggregation) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 AggregationQuery_Aggregation.ProtoReflect.Descriptor instead. +func (*AggregationQuery_Aggregation) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{2, 0} +} + +func (m *AggregationQuery_Aggregation) GetOperator() isAggregationQuery_Aggregation_Operator { + if m != nil { + return m.Operator + } + return nil +} + +func (x *AggregationQuery_Aggregation) GetCount() *AggregationQuery_Aggregation_Count { + if x, ok := x.GetOperator().(*AggregationQuery_Aggregation_Count_); ok { + return x.Count + } + return nil +} + +func (x *AggregationQuery_Aggregation) GetSum() *AggregationQuery_Aggregation_Sum { + if x, ok := x.GetOperator().(*AggregationQuery_Aggregation_Sum_); ok { + return x.Sum + } + return nil +} + +func (x *AggregationQuery_Aggregation) GetAvg() *AggregationQuery_Aggregation_Avg { + if x, ok := x.GetOperator().(*AggregationQuery_Aggregation_Avg_); ok { + return x.Avg + } + return nil +} + +func (x *AggregationQuery_Aggregation) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +type isAggregationQuery_Aggregation_Operator interface { + isAggregationQuery_Aggregation_Operator() +} + +type AggregationQuery_Aggregation_Count_ struct { + // Count aggregator. + Count *AggregationQuery_Aggregation_Count `protobuf:"bytes,1,opt,name=count,proto3,oneof"` +} + +type AggregationQuery_Aggregation_Sum_ struct { + // Sum aggregator. + Sum *AggregationQuery_Aggregation_Sum `protobuf:"bytes,2,opt,name=sum,proto3,oneof"` +} + +type AggregationQuery_Aggregation_Avg_ struct { + // Average aggregator. + Avg *AggregationQuery_Aggregation_Avg `protobuf:"bytes,3,opt,name=avg,proto3,oneof"` +} + +func (*AggregationQuery_Aggregation_Count_) isAggregationQuery_Aggregation_Operator() {} + +func (*AggregationQuery_Aggregation_Sum_) isAggregationQuery_Aggregation_Operator() {} + +func (*AggregationQuery_Aggregation_Avg_) isAggregationQuery_Aggregation_Operator() {} + +// Count of entities that match the query. +// +// The `COUNT(*)` aggregation function operates on the entire entity +// so it does not require a field reference. +type AggregationQuery_Aggregation_Count struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Optional constraint on the maximum number of entities to + // count. + // + // This provides a way to set an upper bound on the number of entities + // to scan, limiting latency, and cost. + // + // Unspecified is interpreted as no bound. + // + // If a zero value is provided, a count result of zero should always be + // expected. + // + // High-Level Example: + // + // ``` + // AGGREGATE COUNT_UP_TO(1000) OVER ( SELECT * FROM k ); + // ``` + // + // Requires: + // + // * Must be non-negative when present. + UpTo *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=up_to,json=upTo,proto3" json:"up_to,omitempty"` +} + +func (x *AggregationQuery_Aggregation_Count) Reset() { + *x = AggregationQuery_Aggregation_Count{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationQuery_Aggregation_Count) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationQuery_Aggregation_Count) ProtoMessage() {} + +func (x *AggregationQuery_Aggregation_Count) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 AggregationQuery_Aggregation_Count.ProtoReflect.Descriptor instead. +func (*AggregationQuery_Aggregation_Count) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{2, 0, 0} +} + +func (x *AggregationQuery_Aggregation_Count) GetUpTo() *wrapperspb.Int64Value { + if x != nil { + return x.UpTo + } + return nil +} + +// Sum of the values of the requested property. +// +// * Only numeric values will be aggregated. All non-numeric values +// including `NULL` are skipped. +// +// * If the aggregated values contain `NaN`, returns `NaN`. Infinity math +// follows IEEE-754 standards. +// +// * If the aggregated value set is empty, returns 0. +// +// * Returns a 64-bit integer if all aggregated numbers are integers and the +// sum result does not overflow. Otherwise, the result is returned as a +// double. Note that even if all the aggregated values are integers, the +// result is returned as a double if it cannot fit within a 64-bit signed +// integer. When this occurs, the returned value will lose precision. +// +// * When underflow occurs, floating-point aggregation is non-deterministic. +// This means that running the same query repeatedly without any changes to +// the underlying values could produce slightly different results each +// time. In those cases, values should be stored as integers over +// floating-point numbers. +type AggregationQuery_Aggregation_Sum struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The property to aggregate on. + Property *PropertyReference `protobuf:"bytes,1,opt,name=property,proto3" json:"property,omitempty"` +} + +func (x *AggregationQuery_Aggregation_Sum) Reset() { + *x = AggregationQuery_Aggregation_Sum{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationQuery_Aggregation_Sum) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationQuery_Aggregation_Sum) ProtoMessage() {} + +func (x *AggregationQuery_Aggregation_Sum) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 AggregationQuery_Aggregation_Sum.ProtoReflect.Descriptor instead. +func (*AggregationQuery_Aggregation_Sum) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{2, 0, 1} +} + +func (x *AggregationQuery_Aggregation_Sum) GetProperty() *PropertyReference { + if x != nil { + return x.Property + } + return nil +} + +// Average of the values of the requested property. +// +// * Only numeric values will be aggregated. All non-numeric values +// including `NULL` are skipped. +// +// * If the aggregated values contain `NaN`, returns `NaN`. Infinity math +// follows IEEE-754 standards. +// +// * If the aggregated value set is empty, returns `NULL`. +// +// * Always returns the result as a double. +type AggregationQuery_Aggregation_Avg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The property to aggregate on. + Property *PropertyReference `protobuf:"bytes,1,opt,name=property,proto3" json:"property,omitempty"` +} + +func (x *AggregationQuery_Aggregation_Avg) Reset() { + *x = AggregationQuery_Aggregation_Avg{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AggregationQuery_Aggregation_Avg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregationQuery_Aggregation_Avg) ProtoMessage() {} + +func (x *AggregationQuery_Aggregation_Avg) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_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 AggregationQuery_Aggregation_Avg.ProtoReflect.Descriptor instead. +func (*AggregationQuery_Aggregation_Avg) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_proto_rawDescGZIP(), []int{2, 0, 2} +} + +func (x *AggregationQuery_Aggregation_Avg) GetProperty() *PropertyReference { + if x != nil { + return x.Property + } + return nil +} + +var File_google_datastore_v1_query_proto protoreflect.FileDescriptor + +var file_google_datastore_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, + 0x69, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x02, 0x0a, 0x0c, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x51, 0x0a, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, + 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4b, 0x45, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x22, + 0xc6, 0x03, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, + 0x69, 0x6e, 0x64, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, + 0x0a, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x4f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb1, 0x05, 0x0a, 0x10, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, + 0x0c, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, + 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x5a, + 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x61, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xf1, 0x03, 0x0a, 0x0b, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x03, 0x73, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x49, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x76, 0x67, 0x48, 0x00, 0x52, 0x03, 0x61, 0x76, + 0x67, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x1a, 0x3e, 0x0a, 0x05, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x05, 0x75, 0x70, 0x5f, 0x74, 0x6f, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x75, 0x70, 0x54, 0x6f, 0x1a, 0x49, 0x0a, 0x03, + 0x53, 0x75, 0x6d, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0x49, 0x0a, 0x03, 0x41, 0x76, 0x67, 0x12, 0x42, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0c, + 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x24, 0x0a, 0x0e, + 0x4b, 0x69, 0x6e, 0x64, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x0a, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0xe6, 0x01, + 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x45, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x53, 0x43, 0x45, 0x4e, + 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4e, + 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x51, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x35, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x35, 0x0a, + 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, + 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, + 0x4f, 0x52, 0x10, 0x02, 0x22, 0xff, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x02, 0x6f, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x08, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, + 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, + 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x47, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, + 0x51, 0x55, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, + 0x05, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x41, 0x53, 0x5f, + 0x41, 0x4e, 0x43, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, + 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x0d, 0x22, 0xf0, 0x02, 0x0a, 0x08, 0x47, 0x71, 0x6c, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x57, 0x0a, + 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x71, 0x6c, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x71, 0x6c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x12, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, + 0x68, 0x0a, 0x12, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x71, 0x6c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x73, 0x0a, 0x11, 0x47, 0x71, 0x6c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x80, + 0x05, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6b, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x12, 0x5a, 0x0a, 0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x48, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x64, + 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x65, + 0x6e, 0x64, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x12, 0x58, 0x0a, 0x0c, 0x6d, 0x6f, 0x72, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, + 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x08, 0x72, 0x65, + 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x4d, 0x6f, 0x72, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x4f, + 0x52, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x4f, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, + 0x41, 0x46, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, + 0x19, 0x4d, 0x4f, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x5f, 0x41, 0x46, + 0x54, 0x45, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x53, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, + 0x4e, 0x4f, 0x5f, 0x4d, 0x4f, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, + 0x03, 0x42, 0xbb, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, + 0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_datastore_v1_query_proto_rawDescOnce sync.Once + file_google_datastore_v1_query_proto_rawDescData = file_google_datastore_v1_query_proto_rawDesc +) + +func file_google_datastore_v1_query_proto_rawDescGZIP() []byte { + file_google_datastore_v1_query_proto_rawDescOnce.Do(func() { + file_google_datastore_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_query_proto_rawDescData) + }) + return file_google_datastore_v1_query_proto_rawDescData +} + +var file_google_datastore_v1_query_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_google_datastore_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_google_datastore_v1_query_proto_goTypes = []any{ + (EntityResult_ResultType)(0), // 0: google.datastore.v1.EntityResult.ResultType + (PropertyOrder_Direction)(0), // 1: google.datastore.v1.PropertyOrder.Direction + (CompositeFilter_Operator)(0), // 2: google.datastore.v1.CompositeFilter.Operator + (PropertyFilter_Operator)(0), // 3: google.datastore.v1.PropertyFilter.Operator + (QueryResultBatch_MoreResultsType)(0), // 4: google.datastore.v1.QueryResultBatch.MoreResultsType + (*EntityResult)(nil), // 5: google.datastore.v1.EntityResult + (*Query)(nil), // 6: google.datastore.v1.Query + (*AggregationQuery)(nil), // 7: google.datastore.v1.AggregationQuery + (*KindExpression)(nil), // 8: google.datastore.v1.KindExpression + (*PropertyReference)(nil), // 9: google.datastore.v1.PropertyReference + (*Projection)(nil), // 10: google.datastore.v1.Projection + (*PropertyOrder)(nil), // 11: google.datastore.v1.PropertyOrder + (*Filter)(nil), // 12: google.datastore.v1.Filter + (*CompositeFilter)(nil), // 13: google.datastore.v1.CompositeFilter + (*PropertyFilter)(nil), // 14: google.datastore.v1.PropertyFilter + (*GqlQuery)(nil), // 15: google.datastore.v1.GqlQuery + (*GqlQueryParameter)(nil), // 16: google.datastore.v1.GqlQueryParameter + (*QueryResultBatch)(nil), // 17: google.datastore.v1.QueryResultBatch + (*AggregationQuery_Aggregation)(nil), // 18: google.datastore.v1.AggregationQuery.Aggregation + (*AggregationQuery_Aggregation_Count)(nil), // 19: google.datastore.v1.AggregationQuery.Aggregation.Count + (*AggregationQuery_Aggregation_Sum)(nil), // 20: google.datastore.v1.AggregationQuery.Aggregation.Sum + (*AggregationQuery_Aggregation_Avg)(nil), // 21: google.datastore.v1.AggregationQuery.Aggregation.Avg + nil, // 22: google.datastore.v1.GqlQuery.NamedBindingsEntry + (*Entity)(nil), // 23: google.datastore.v1.Entity + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*wrapperspb.Int32Value)(nil), // 25: google.protobuf.Int32Value + (*Value)(nil), // 26: google.datastore.v1.Value + (*wrapperspb.Int64Value)(nil), // 27: google.protobuf.Int64Value +} +var file_google_datastore_v1_query_proto_depIdxs = []int32{ + 23, // 0: google.datastore.v1.EntityResult.entity:type_name -> google.datastore.v1.Entity + 24, // 1: google.datastore.v1.EntityResult.create_time:type_name -> google.protobuf.Timestamp + 24, // 2: google.datastore.v1.EntityResult.update_time:type_name -> google.protobuf.Timestamp + 10, // 3: google.datastore.v1.Query.projection:type_name -> google.datastore.v1.Projection + 8, // 4: google.datastore.v1.Query.kind:type_name -> google.datastore.v1.KindExpression + 12, // 5: google.datastore.v1.Query.filter:type_name -> google.datastore.v1.Filter + 11, // 6: google.datastore.v1.Query.order:type_name -> google.datastore.v1.PropertyOrder + 9, // 7: google.datastore.v1.Query.distinct_on:type_name -> google.datastore.v1.PropertyReference + 25, // 8: google.datastore.v1.Query.limit:type_name -> google.protobuf.Int32Value + 6, // 9: google.datastore.v1.AggregationQuery.nested_query:type_name -> google.datastore.v1.Query + 18, // 10: google.datastore.v1.AggregationQuery.aggregations:type_name -> google.datastore.v1.AggregationQuery.Aggregation + 9, // 11: google.datastore.v1.Projection.property:type_name -> google.datastore.v1.PropertyReference + 9, // 12: google.datastore.v1.PropertyOrder.property:type_name -> google.datastore.v1.PropertyReference + 1, // 13: google.datastore.v1.PropertyOrder.direction:type_name -> google.datastore.v1.PropertyOrder.Direction + 13, // 14: google.datastore.v1.Filter.composite_filter:type_name -> google.datastore.v1.CompositeFilter + 14, // 15: google.datastore.v1.Filter.property_filter:type_name -> google.datastore.v1.PropertyFilter + 2, // 16: google.datastore.v1.CompositeFilter.op:type_name -> google.datastore.v1.CompositeFilter.Operator + 12, // 17: google.datastore.v1.CompositeFilter.filters:type_name -> google.datastore.v1.Filter + 9, // 18: google.datastore.v1.PropertyFilter.property:type_name -> google.datastore.v1.PropertyReference + 3, // 19: google.datastore.v1.PropertyFilter.op:type_name -> google.datastore.v1.PropertyFilter.Operator + 26, // 20: google.datastore.v1.PropertyFilter.value:type_name -> google.datastore.v1.Value + 22, // 21: google.datastore.v1.GqlQuery.named_bindings:type_name -> google.datastore.v1.GqlQuery.NamedBindingsEntry + 16, // 22: google.datastore.v1.GqlQuery.positional_bindings:type_name -> google.datastore.v1.GqlQueryParameter + 26, // 23: google.datastore.v1.GqlQueryParameter.value:type_name -> google.datastore.v1.Value + 0, // 24: google.datastore.v1.QueryResultBatch.entity_result_type:type_name -> google.datastore.v1.EntityResult.ResultType + 5, // 25: google.datastore.v1.QueryResultBatch.entity_results:type_name -> google.datastore.v1.EntityResult + 4, // 26: google.datastore.v1.QueryResultBatch.more_results:type_name -> google.datastore.v1.QueryResultBatch.MoreResultsType + 24, // 27: google.datastore.v1.QueryResultBatch.read_time:type_name -> google.protobuf.Timestamp + 19, // 28: google.datastore.v1.AggregationQuery.Aggregation.count:type_name -> google.datastore.v1.AggregationQuery.Aggregation.Count + 20, // 29: google.datastore.v1.AggregationQuery.Aggregation.sum:type_name -> google.datastore.v1.AggregationQuery.Aggregation.Sum + 21, // 30: google.datastore.v1.AggregationQuery.Aggregation.avg:type_name -> google.datastore.v1.AggregationQuery.Aggregation.Avg + 27, // 31: google.datastore.v1.AggregationQuery.Aggregation.Count.up_to:type_name -> google.protobuf.Int64Value + 9, // 32: google.datastore.v1.AggregationQuery.Aggregation.Sum.property:type_name -> google.datastore.v1.PropertyReference + 9, // 33: google.datastore.v1.AggregationQuery.Aggregation.Avg.property:type_name -> google.datastore.v1.PropertyReference + 16, // 34: google.datastore.v1.GqlQuery.NamedBindingsEntry.value:type_name -> google.datastore.v1.GqlQueryParameter + 35, // [35:35] is the sub-list for method output_type + 35, // [35:35] 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_datastore_v1_query_proto_init() } +func file_google_datastore_v1_query_proto_init() { + if File_google_datastore_v1_query_proto != nil { + return + } + file_google_datastore_v1_entity_proto_init() + if !protoimpl.UnsafeEnabled { + file_google_datastore_v1_query_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*EntityResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Query); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*AggregationQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*KindExpression); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*PropertyReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Projection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*PropertyOrder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*CompositeFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*PropertyFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*GqlQuery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*GqlQueryParameter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*QueryResultBatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*AggregationQuery_Aggregation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*AggregationQuery_Aggregation_Count); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*AggregationQuery_Aggregation_Sum); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*AggregationQuery_Aggregation_Avg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_datastore_v1_query_proto_msgTypes[2].OneofWrappers = []any{ + (*AggregationQuery_NestedQuery)(nil), + } + file_google_datastore_v1_query_proto_msgTypes[7].OneofWrappers = []any{ + (*Filter_CompositeFilter)(nil), + (*Filter_PropertyFilter)(nil), + } + file_google_datastore_v1_query_proto_msgTypes[11].OneofWrappers = []any{ + (*GqlQueryParameter_Value)(nil), + (*GqlQueryParameter_Cursor)(nil), + } + file_google_datastore_v1_query_proto_msgTypes[13].OneofWrappers = []any{ + (*AggregationQuery_Aggregation_Count_)(nil), + (*AggregationQuery_Aggregation_Sum_)(nil), + (*AggregationQuery_Aggregation_Avg_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_datastore_v1_query_proto_rawDesc, + NumEnums: 5, + NumMessages: 18, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_datastore_v1_query_proto_goTypes, + DependencyIndexes: file_google_datastore_v1_query_proto_depIdxs, + EnumInfos: file_google_datastore_v1_query_proto_enumTypes, + MessageInfos: file_google_datastore_v1_query_proto_msgTypes, + }.Build() + File_google_datastore_v1_query_proto = out.File + file_google_datastore_v1_query_proto_rawDesc = nil + file_google_datastore_v1_query_proto_goTypes = nil + file_google_datastore_v1_query_proto_depIdxs = nil +} diff --git a/datastore/apiv1/datastorepb/query_profile.pb.go b/datastore/apiv1/datastorepb/query_profile.pb.go new file mode 100755 index 000000000000..9651b37db87e --- /dev/null +++ b/datastore/apiv1/datastorepb/query_profile.pb.go @@ -0,0 +1,467 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/datastore/v1/query_profile.proto + +package datastorepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + structpb "google.golang.org/protobuf/types/known/structpb" +) + +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) +) + +// Explain options for the query. +type ExplainOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Whether to execute this query. + // + // When false (the default), the query will be planned, returning only + // metrics from the planning stages. + // + // When true, the query will be planned and executed, returning the full + // query results along with both planning and execution stage metrics. + Analyze bool `protobuf:"varint,1,opt,name=analyze,proto3" json:"analyze,omitempty"` +} + +func (x *ExplainOptions) Reset() { + *x = ExplainOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_profile_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExplainOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExplainOptions) ProtoMessage() {} + +func (x *ExplainOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_profile_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 ExplainOptions.ProtoReflect.Descriptor instead. +func (*ExplainOptions) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_profile_proto_rawDescGZIP(), []int{0} +} + +func (x *ExplainOptions) GetAnalyze() bool { + if x != nil { + return x.Analyze + } + return false +} + +// Explain metrics for the query. +type ExplainMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Planning phase information for the query. + PlanSummary *PlanSummary `protobuf:"bytes,1,opt,name=plan_summary,json=planSummary,proto3" json:"plan_summary,omitempty"` + // Aggregated stats from the execution of the query. Only present when + // [ExplainOptions.analyze][google.datastore.v1.ExplainOptions.analyze] is set + // to true. + ExecutionStats *ExecutionStats `protobuf:"bytes,2,opt,name=execution_stats,json=executionStats,proto3" json:"execution_stats,omitempty"` +} + +func (x *ExplainMetrics) Reset() { + *x = ExplainMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_profile_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExplainMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExplainMetrics) ProtoMessage() {} + +func (x *ExplainMetrics) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_profile_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 ExplainMetrics.ProtoReflect.Descriptor instead. +func (*ExplainMetrics) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_profile_proto_rawDescGZIP(), []int{1} +} + +func (x *ExplainMetrics) GetPlanSummary() *PlanSummary { + if x != nil { + return x.PlanSummary + } + return nil +} + +func (x *ExplainMetrics) GetExecutionStats() *ExecutionStats { + if x != nil { + return x.ExecutionStats + } + return nil +} + +// Planning phase information for the query. +type PlanSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The indexes selected for the query. For example: + // + // [ + // {"query_scope": "Collection", "properties": "(foo ASC, __name__ ASC)"}, + // {"query_scope": "Collection", "properties": "(bar ASC, __name__ ASC)"} + // ] + IndexesUsed []*structpb.Struct `protobuf:"bytes,1,rep,name=indexes_used,json=indexesUsed,proto3" json:"indexes_used,omitempty"` +} + +func (x *PlanSummary) Reset() { + *x = PlanSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_profile_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlanSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlanSummary) ProtoMessage() {} + +func (x *PlanSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_profile_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 PlanSummary.ProtoReflect.Descriptor instead. +func (*PlanSummary) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_profile_proto_rawDescGZIP(), []int{2} +} + +func (x *PlanSummary) GetIndexesUsed() []*structpb.Struct { + if x != nil { + return x.IndexesUsed + } + return nil +} + +// Execution statistics for the query. +type ExecutionStats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total number of results returned, including documents, projections, + // aggregation results, keys. + ResultsReturned int64 `protobuf:"varint,1,opt,name=results_returned,json=resultsReturned,proto3" json:"results_returned,omitempty"` + // Total time to execute the query in the backend. + ExecutionDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=execution_duration,json=executionDuration,proto3" json:"execution_duration,omitempty"` + // Total billable read operations. + ReadOperations int64 `protobuf:"varint,4,opt,name=read_operations,json=readOperations,proto3" json:"read_operations,omitempty"` + // Debugging statistics from the execution of the query. Note that the + // debugging stats are subject to change as Firestore evolves. It could + // include: + // + // { + // "indexes_entries_scanned": "1000", + // "documents_scanned": "20", + // "billing_details" : { + // "documents_billable": "20", + // "index_entries_billable": "1000", + // "min_query_cost": "0" + // } + // } + DebugStats *structpb.Struct `protobuf:"bytes,5,opt,name=debug_stats,json=debugStats,proto3" json:"debug_stats,omitempty"` +} + +func (x *ExecutionStats) Reset() { + *x = ExecutionStats{} + if protoimpl.UnsafeEnabled { + mi := &file_google_datastore_v1_query_profile_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutionStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionStats) ProtoMessage() {} + +func (x *ExecutionStats) ProtoReflect() protoreflect.Message { + mi := &file_google_datastore_v1_query_profile_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 ExecutionStats.ProtoReflect.Descriptor instead. +func (*ExecutionStats) Descriptor() ([]byte, []int) { + return file_google_datastore_v1_query_profile_proto_rawDescGZIP(), []int{3} +} + +func (x *ExecutionStats) GetResultsReturned() int64 { + if x != nil { + return x.ResultsReturned + } + return 0 +} + +func (x *ExecutionStats) GetExecutionDuration() *durationpb.Duration { + if x != nil { + return x.ExecutionDuration + } + return nil +} + +func (x *ExecutionStats) GetReadOperations() int64 { + if x != nil { + return x.ReadOperations + } + return 0 +} + +func (x *ExecutionStats) GetDebugStats() *structpb.Struct { + if x != nil { + return x.DebugStats + } + return nil +} + +var File_google_datastore_v1_query_profile_proto protoreflect.FileDescriptor + +var file_google_datastore_v1_query_profile_proto_rawDesc = []byte{ + 0x0a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 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, + 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, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2f, 0x0a, + 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1d, 0x0a, 0x07, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x22, 0xa3, + 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, + 0x61, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x6e, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x22, 0x49, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x6e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x12, 0x3a, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x5f, 0x75, + 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x55, 0x73, 0x65, 0x64, 0x22, + 0xe8, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x48, 0x0a, + 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x38, 0x0a, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, + 0x64, 0x65, 0x62, 0x75, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0xc2, 0x01, 0x0a, 0x17, 0x63, + 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, + 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x56, 0x31, + 0xea, 0x02, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_datastore_v1_query_profile_proto_rawDescOnce sync.Once + file_google_datastore_v1_query_profile_proto_rawDescData = file_google_datastore_v1_query_profile_proto_rawDesc +) + +func file_google_datastore_v1_query_profile_proto_rawDescGZIP() []byte { + file_google_datastore_v1_query_profile_proto_rawDescOnce.Do(func() { + file_google_datastore_v1_query_profile_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_datastore_v1_query_profile_proto_rawDescData) + }) + return file_google_datastore_v1_query_profile_proto_rawDescData +} + +var file_google_datastore_v1_query_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_google_datastore_v1_query_profile_proto_goTypes = []any{ + (*ExplainOptions)(nil), // 0: google.datastore.v1.ExplainOptions + (*ExplainMetrics)(nil), // 1: google.datastore.v1.ExplainMetrics + (*PlanSummary)(nil), // 2: google.datastore.v1.PlanSummary + (*ExecutionStats)(nil), // 3: google.datastore.v1.ExecutionStats + (*structpb.Struct)(nil), // 4: google.protobuf.Struct + (*durationpb.Duration)(nil), // 5: google.protobuf.Duration +} +var file_google_datastore_v1_query_profile_proto_depIdxs = []int32{ + 2, // 0: google.datastore.v1.ExplainMetrics.plan_summary:type_name -> google.datastore.v1.PlanSummary + 3, // 1: google.datastore.v1.ExplainMetrics.execution_stats:type_name -> google.datastore.v1.ExecutionStats + 4, // 2: google.datastore.v1.PlanSummary.indexes_used:type_name -> google.protobuf.Struct + 5, // 3: google.datastore.v1.ExecutionStats.execution_duration:type_name -> google.protobuf.Duration + 4, // 4: google.datastore.v1.ExecutionStats.debug_stats:type_name -> google.protobuf.Struct + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_google_datastore_v1_query_profile_proto_init() } +func file_google_datastore_v1_query_profile_proto_init() { + if File_google_datastore_v1_query_profile_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_google_datastore_v1_query_profile_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ExplainOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_profile_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*ExplainMetrics); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_profile_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*PlanSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_datastore_v1_query_profile_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*ExecutionStats); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_datastore_v1_query_profile_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_datastore_v1_query_profile_proto_goTypes, + DependencyIndexes: file_google_datastore_v1_query_profile_proto_depIdxs, + MessageInfos: file_google_datastore_v1_query_profile_proto_msgTypes, + }.Build() + File_google_datastore_v1_query_profile_proto = out.File + file_google_datastore_v1_query_profile_proto_rawDesc = nil + file_google_datastore_v1_query_profile_proto_goTypes = nil + file_google_datastore_v1_query_profile_proto_depIdxs = nil +} diff --git a/gkeconnect/gateway/apiv1beta1/doc.go b/gkeconnect/gateway/apiv1beta1/doc.go index 4648577703ef..df19d88ed442 100755 --- a/gkeconnect/gateway/apiv1beta1/doc.go +++ b/gkeconnect/gateway/apiv1beta1/doc.go @@ -44,7 +44,7 @@ // // - It may require correct/in-range values for request initialization. // // - It may require specifying regional endpoints when creating the service client as shown in: // // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options -// c, err := gateway.NewClient(ctx) +// c, err := gateway.NewGatewayControlClient(ctx) // if err != nil { // // TODO: Handle error. // } @@ -64,17 +64,17 @@ // // - It may require correct/in-range values for request initialization. // // - It may require specifying regional endpoints when creating the service client as shown in: // // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options -// c, err := gateway.NewClient(ctx) +// c, err := gateway.NewGatewayControlClient(ctx) // if err != nil { // // TODO: Handle error. // } // defer c.Close() // -// req := &httpbodypb.HttpBody{ +// req := &gatewaypb.GenerateCredentialsRequest{ // // TODO: Fill request struct fields. -// // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. +// // See https://pkg.go.dev/cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb#GenerateCredentialsRequest. // } -// resp, err := c.DeleteResource(ctx, req) +// resp, err := c.GenerateCredentials(ctx, req) // if err != nil { // // TODO: Handle error. // } @@ -83,7 +83,7 @@ // // # Use of Context // -// The ctx passed to NewClient is used for authentication requests and +// The ctx passed to NewGatewayControlClient is used for authentication requests and // for creating the underlying connection, but is not used for subsequent calls. // Individual methods on the client use the ctx given to them. // diff --git a/gkeconnect/gateway/apiv1beta1/gapic_metadata.json b/gkeconnect/gateway/apiv1beta1/gapic_metadata.json index 36a56d19988f..d30199a43926 100644 --- a/gkeconnect/gateway/apiv1beta1/gapic_metadata.json +++ b/gkeconnect/gateway/apiv1beta1/gapic_metadata.json @@ -5,64 +5,24 @@ "protoPackage": "google.cloud.gkeconnect.gateway.v1beta1", "libraryPackage": "cloud.google.com/go/gkeconnect/gateway/apiv1beta1", "services": { - "GatewayService": { + "GatewayControl": { "clients": { "grpc": { - "libraryClient": "Client", + "libraryClient": "GatewayControlClient", "rpcs": { - "DeleteResource": { + "GenerateCredentials": { "methods": [ - "DeleteResource" - ] - }, - "GetResource": { - "methods": [ - "GetResource" - ] - }, - "PatchResource": { - "methods": [ - "PatchResource" - ] - }, - "PostResource": { - "methods": [ - "PostResource" - ] - }, - "PutResource": { - "methods": [ - "PutResource" + "GenerateCredentials" ] } } }, "rest": { - "libraryClient": "Client", + "libraryClient": "GatewayControlClient", "rpcs": { - "DeleteResource": { - "methods": [ - "DeleteResource" - ] - }, - "GetResource": { - "methods": [ - "GetResource" - ] - }, - "PatchResource": { - "methods": [ - "PatchResource" - ] - }, - "PostResource": { - "methods": [ - "PostResource" - ] - }, - "PutResource": { + "GenerateCredentials": { "methods": [ - "PutResource" + "GenerateCredentials" ] } } diff --git a/gkeconnect/gateway/apiv1beta1/gateway_client.go b/gkeconnect/gateway/apiv1beta1/gateway_client.go deleted file mode 100755 index f3de07290eed..000000000000 --- a/gkeconnect/gateway/apiv1beta1/gateway_client.go +++ /dev/null @@ -1,698 +0,0 @@ -// Copyright 2024 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 -// -// https://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_gapic. DO NOT EDIT. - -package gateway - -import ( - "context" - "fmt" - "io" - "math" - "net/http" - "net/url" - - gatewaypb "cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb" - gax "github.com/googleapis/gax-go/v2" - "google.golang.org/api/googleapi" - "google.golang.org/api/option" - "google.golang.org/api/option/internaloption" - gtransport "google.golang.org/api/transport/grpc" - httptransport "google.golang.org/api/transport/http" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" - "google.golang.org/grpc" -) - -var newClientHook clientHook - -// CallOptions contains the retry settings for each method of Client. -type CallOptions struct { - GetResource []gax.CallOption - PostResource []gax.CallOption - DeleteResource []gax.CallOption - PutResource []gax.CallOption - PatchResource []gax.CallOption -} - -func defaultGRPCClientOptions() []option.ClientOption { - return []option.ClientOption{ - internaloption.WithDefaultEndpoint("connectgateway.googleapis.com:443"), - internaloption.WithDefaultEndpointTemplate("connectgateway.UNIVERSE_DOMAIN:443"), - internaloption.WithDefaultMTLSEndpoint("connectgateway.mtls.googleapis.com:443"), - internaloption.WithDefaultUniverseDomain("googleapis.com"), - internaloption.WithDefaultAudience("https://connectgateway.googleapis.com/"), - internaloption.WithDefaultScopes(DefaultAuthScopes()...), - internaloption.EnableJwtWithScope(), - internaloption.EnableNewAuthLibrary(), - option.WithGRPCDialOption(grpc.WithDefaultCallOptions( - grpc.MaxCallRecvMsgSize(math.MaxInt32))), - } -} - -func defaultCallOptions() *CallOptions { - return &CallOptions{ - GetResource: []gax.CallOption{}, - PostResource: []gax.CallOption{}, - DeleteResource: []gax.CallOption{}, - PutResource: []gax.CallOption{}, - PatchResource: []gax.CallOption{}, - } -} - -func defaultRESTCallOptions() *CallOptions { - return &CallOptions{ - GetResource: []gax.CallOption{}, - PostResource: []gax.CallOption{}, - DeleteResource: []gax.CallOption{}, - PutResource: []gax.CallOption{}, - PatchResource: []gax.CallOption{}, - } -} - -// internalClient is an interface that defines the methods available from Connect Gateway API. -type internalClient interface { - Close() error - setGoogleClientInfo(...string) - Connection() *grpc.ClientConn - GetResource(context.Context, *httpbodypb.HttpBody, ...gax.CallOption) (*httpbodypb.HttpBody, error) - PostResource(context.Context, *httpbodypb.HttpBody, ...gax.CallOption) (*httpbodypb.HttpBody, error) - DeleteResource(context.Context, *httpbodypb.HttpBody, ...gax.CallOption) (*httpbodypb.HttpBody, error) - PutResource(context.Context, *httpbodypb.HttpBody, ...gax.CallOption) (*httpbodypb.HttpBody, error) - PatchResource(context.Context, *httpbodypb.HttpBody, ...gax.CallOption) (*httpbodypb.HttpBody, error) -} - -// Client is a client for interacting with Connect Gateway API. -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -// -// Gateway service is a public API which works as a Kubernetes resource model -// proxy between end users and registered Kubernetes clusters. Each RPC in this -// service matches with an HTTP verb. End user will initiate kubectl commands -// against the Gateway service, and Gateway service will forward user requests -// to clusters. -type Client struct { - // The internal transport-dependent client. - internalClient internalClient - - // The call options for this service. - CallOptions *CallOptions -} - -// Wrapper methods routed to the internal client. - -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *Client) Close() error { - return c.internalClient.Close() -} - -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *Client) setGoogleClientInfo(keyval ...string) { - c.internalClient.setGoogleClientInfo(keyval...) -} - -// Connection returns a connection to the API service. -// -// Deprecated: Connections are now pooled so this method does not always -// return the same resource. -func (c *Client) Connection() *grpc.ClientConn { - return c.internalClient.Connection() -} - -// GetResource getResource performs an HTTP GET request on the Kubernetes API Server. -func (c *Client) GetResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - return c.internalClient.GetResource(ctx, req, opts...) -} - -// PostResource postResource performs an HTTP POST on the Kubernetes API Server. -func (c *Client) PostResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - return c.internalClient.PostResource(ctx, req, opts...) -} - -// DeleteResource deleteResource performs an HTTP DELETE on the Kubernetes API Server. -func (c *Client) DeleteResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - return c.internalClient.DeleteResource(ctx, req, opts...) -} - -// PutResource putResource performs an HTTP PUT on the Kubernetes API Server. -func (c *Client) PutResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - return c.internalClient.PutResource(ctx, req, opts...) -} - -// PatchResource patchResource performs an HTTP PATCH on the Kubernetes API Server. -func (c *Client) PatchResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - return c.internalClient.PatchResource(ctx, req, opts...) -} - -// gRPCClient is a client for interacting with Connect Gateway API over gRPC transport. -// -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -type gRPCClient struct { - // Connection pool of gRPC connections to the service. - connPool gtransport.ConnPool - - // Points back to the CallOptions field of the containing Client - CallOptions **CallOptions - - // The gRPC API client. - client gatewaypb.GatewayServiceClient - - // The x-goog-* metadata to be sent with each request. - xGoogHeaders []string -} - -// NewClient creates a new gateway service client based on gRPC. -// The returned client must be Closed when it is done being used to clean up its underlying connections. -// -// Gateway service is a public API which works as a Kubernetes resource model -// proxy between end users and registered Kubernetes clusters. Each RPC in this -// service matches with an HTTP verb. End user will initiate kubectl commands -// against the Gateway service, and Gateway service will forward user requests -// to clusters. -func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - clientOpts := defaultGRPCClientOptions() - if newClientHook != nil { - hookOpts, err := newClientHook(ctx, clientHookParams{}) - if err != nil { - return nil, err - } - clientOpts = append(clientOpts, hookOpts...) - } - - connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) - if err != nil { - return nil, err - } - client := Client{CallOptions: defaultCallOptions()} - - c := &gRPCClient{ - connPool: connPool, - client: gatewaypb.NewGatewayServiceClient(connPool), - CallOptions: &client.CallOptions, - } - c.setGoogleClientInfo() - - client.internalClient = c - - return &client, nil -} - -// Connection returns a connection to the API service. -// -// Deprecated: Connections are now pooled so this method does not always -// return the same resource. -func (c *gRPCClient) Connection() *grpc.ClientConn { - return c.connPool.Conn() -} - -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) - c.xGoogHeaders = []string{ - "x-goog-api-client", gax.XGoogHeader(kv...), - } -} - -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *gRPCClient) Close() error { - return c.connPool.Close() -} - -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -type restClient struct { - // The http endpoint to connect to. - endpoint string - - // The http client. - httpClient *http.Client - - // The x-goog-* headers to be sent with each request. - xGoogHeaders []string - - // Points back to the CallOptions field of the containing Client - CallOptions **CallOptions -} - -// NewRESTClient creates a new gateway service rest client. -// -// Gateway service is a public API which works as a Kubernetes resource model -// proxy between end users and registered Kubernetes clusters. Each RPC in this -// service matches with an HTTP verb. End user will initiate kubectl commands -// against the Gateway service, and Gateway service will forward user requests -// to clusters. -func NewRESTClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - clientOpts := append(defaultRESTClientOptions(), opts...) - httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) - if err != nil { - return nil, err - } - - callOpts := defaultRESTCallOptions() - c := &restClient{ - endpoint: endpoint, - httpClient: httpClient, - CallOptions: &callOpts, - } - c.setGoogleClientInfo() - - return &Client{internalClient: c, CallOptions: callOpts}, nil -} - -func defaultRESTClientOptions() []option.ClientOption { - return []option.ClientOption{ - internaloption.WithDefaultEndpoint("https://connectgateway.googleapis.com"), - internaloption.WithDefaultEndpointTemplate("https://connectgateway.UNIVERSE_DOMAIN"), - internaloption.WithDefaultMTLSEndpoint("https://connectgateway.mtls.googleapis.com"), - internaloption.WithDefaultUniverseDomain("googleapis.com"), - internaloption.WithDefaultAudience("https://connectgateway.googleapis.com/"), - internaloption.WithDefaultScopes(DefaultAuthScopes()...), - internaloption.EnableNewAuthLibrary(), - } -} - -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *restClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") - c.xGoogHeaders = []string{ - "x-goog-api-client", gax.XGoogHeader(kv...), - } -} - -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *restClient) Close() error { - // Replace httpClient with nil to force cleanup. - c.httpClient = nil - return nil -} - -// Connection returns a connection to the API service. -// -// Deprecated: This method always returns nil. -func (c *restClient) Connection() *grpc.ClientConn { - return nil -} -func (c *gRPCClient) GetResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) - opts = append((*c.CallOptions).GetResource[0:len((*c.CallOptions).GetResource):len((*c.CallOptions).GetResource)], opts...) - var resp *httpbodypb.HttpBody - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetResource(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} - -func (c *gRPCClient) PostResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) - opts = append((*c.CallOptions).PostResource[0:len((*c.CallOptions).PostResource):len((*c.CallOptions).PostResource)], opts...) - var resp *httpbodypb.HttpBody - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.PostResource(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} - -func (c *gRPCClient) DeleteResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) - opts = append((*c.CallOptions).DeleteResource[0:len((*c.CallOptions).DeleteResource):len((*c.CallOptions).DeleteResource)], opts...) - var resp *httpbodypb.HttpBody - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.DeleteResource(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} - -func (c *gRPCClient) PutResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) - opts = append((*c.CallOptions).PutResource[0:len((*c.CallOptions).PutResource):len((*c.CallOptions).PutResource)], opts...) - var resp *httpbodypb.HttpBody - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.PutResource(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} - -func (c *gRPCClient) PatchResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) - opts = append((*c.CallOptions).PatchResource[0:len((*c.CallOptions).PatchResource):len((*c.CallOptions).PatchResource)], opts...) - var resp *httpbodypb.HttpBody - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.PatchResource(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} - -// GetResource getResource performs an HTTP GET request on the Kubernetes API Server. -func (c *restClient) GetResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1beta1/**") - - params := url.Values{} - if req.GetContentType() != "" { - params.Add("contentType", fmt.Sprintf("%v", req.GetContentType())) - } - if req.GetData() != nil { - params.Add("data", fmt.Sprintf("%v", req.GetData())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetResource[0:len((*c.CallOptions).GetResource):len((*c.CallOptions).GetResource)], opts...) - resp := &httpbodypb.HttpBody{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - resp.Data = buf - if headers := httpRsp.Header; len(headers["Content-Type"]) > 0 { - resp.ContentType = headers["Content-Type"][0] - } - - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil -} - -// PostResource postResource performs an HTTP POST on the Kubernetes API Server. -func (c *restClient) PostResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1beta1/**") - - params := url.Values{} - if req.GetContentType() != "" { - params.Add("contentType", fmt.Sprintf("%v", req.GetContentType())) - } - if req.GetData() != nil { - params.Add("data", fmt.Sprintf("%v", req.GetData())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).PostResource[0:len((*c.CallOptions).PostResource):len((*c.CallOptions).PostResource)], opts...) - resp := &httpbodypb.HttpBody{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("POST", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - resp.Data = buf - if headers := httpRsp.Header; len(headers["Content-Type"]) > 0 { - resp.ContentType = headers["Content-Type"][0] - } - - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil -} - -// DeleteResource deleteResource performs an HTTP DELETE on the Kubernetes API Server. -func (c *restClient) DeleteResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1beta1/**") - - params := url.Values{} - if req.GetContentType() != "" { - params.Add("contentType", fmt.Sprintf("%v", req.GetContentType())) - } - if req.GetData() != nil { - params.Add("data", fmt.Sprintf("%v", req.GetData())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).DeleteResource[0:len((*c.CallOptions).DeleteResource):len((*c.CallOptions).DeleteResource)], opts...) - resp := &httpbodypb.HttpBody{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - resp.Data = buf - if headers := httpRsp.Header; len(headers["Content-Type"]) > 0 { - resp.ContentType = headers["Content-Type"][0] - } - - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil -} - -// PutResource putResource performs an HTTP PUT on the Kubernetes API Server. -func (c *restClient) PutResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1beta1/**") - - params := url.Values{} - if req.GetContentType() != "" { - params.Add("contentType", fmt.Sprintf("%v", req.GetContentType())) - } - if req.GetData() != nil { - params.Add("data", fmt.Sprintf("%v", req.GetData())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).PutResource[0:len((*c.CallOptions).PutResource):len((*c.CallOptions).PutResource)], opts...) - resp := &httpbodypb.HttpBody{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("PUT", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - resp.Data = buf - if headers := httpRsp.Header; len(headers["Content-Type"]) > 0 { - resp.ContentType = headers["Content-Type"][0] - } - - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil -} - -// PatchResource patchResource performs an HTTP PATCH on the Kubernetes API Server. -func (c *restClient) PatchResource(ctx context.Context, req *httpbodypb.HttpBody, opts ...gax.CallOption) (*httpbodypb.HttpBody, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1beta1/**") - - params := url.Values{} - if req.GetContentType() != "" { - params.Add("contentType", fmt.Sprintf("%v", req.GetContentType())) - } - if req.GetData() != nil { - params.Add("data", fmt.Sprintf("%v", req.GetData())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).PatchResource[0:len((*c.CallOptions).PatchResource):len((*c.CallOptions).PatchResource)], opts...) - resp := &httpbodypb.HttpBody{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - resp.Data = buf - if headers := httpRsp.Header; len(headers["Content-Type"]) > 0 { - resp.ContentType = headers["Content-Type"][0] - } - - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil -} diff --git a/gkeconnect/gateway/apiv1beta1/gateway_client_example_test.go b/gkeconnect/gateway/apiv1beta1/gateway_client_example_test.go deleted file mode 100644 index 93eafd77cd39..000000000000 --- a/gkeconnect/gateway/apiv1beta1/gateway_client_example_test.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2024 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 -// -// https://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_gapic. DO NOT EDIT. - -package gateway_test - -import ( - "context" - - gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" -) - -func ExampleNewClient() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - // TODO: Use client. - _ = c -} - -func ExampleNewRESTClient() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewRESTClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - // TODO: Use client. - _ = c -} - -func ExampleClient_DeleteResource() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.DeleteResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -func ExampleClient_GetResource() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.GetResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -func ExampleClient_PatchResource() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.PatchResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -func ExampleClient_PostResource() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.PostResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -func ExampleClient_PutResource() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.PutResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} diff --git a/gkeconnect/gateway/apiv1beta1/gateway_control_client.go b/gkeconnect/gateway/apiv1beta1/gateway_control_client.go new file mode 100755 index 000000000000..3470e785246d --- /dev/null +++ b/gkeconnect/gateway/apiv1beta1/gateway_control_client.go @@ -0,0 +1,379 @@ +// Copyright 2024 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 +// +// https://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_gapic. DO NOT EDIT. + +package gateway + +import ( + "context" + "fmt" + "io" + "math" + "net/http" + "net/url" + "time" + + gatewaypb "cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/googleapi" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" +) + +var newGatewayControlClientHook clientHook + +// GatewayControlCallOptions contains the retry settings for each method of GatewayControlClient. +type GatewayControlCallOptions struct { + GenerateCredentials []gax.CallOption +} + +func defaultGatewayControlGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("connectgateway.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("connectgateway.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("connectgateway.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://connectgateway.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultGatewayControlCallOptions() *GatewayControlCallOptions { + return &GatewayControlCallOptions{ + GenerateCredentials: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + } +} + +func defaultGatewayControlRESTCallOptions() *GatewayControlCallOptions { + return &GatewayControlCallOptions{ + GenerateCredentials: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + } +} + +// internalGatewayControlClient is an interface that defines the methods available from Connect Gateway API. +type internalGatewayControlClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + GenerateCredentials(context.Context, *gatewaypb.GenerateCredentialsRequest, ...gax.CallOption) (*gatewaypb.GenerateCredentialsResponse, error) +} + +// GatewayControlClient is a client for interacting with Connect Gateway API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// GatewayControl is the control plane API for Connect Gateway. +type GatewayControlClient struct { + // The internal transport-dependent client. + internalClient internalGatewayControlClient + + // The call options for this service. + CallOptions *GatewayControlCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *GatewayControlClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *GatewayControlClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *GatewayControlClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// GenerateCredentials generateCredentials provides connection information that allows a user to +// access the specified membership using Connect Gateway. +func (c *GatewayControlClient) GenerateCredentials(ctx context.Context, req *gatewaypb.GenerateCredentialsRequest, opts ...gax.CallOption) (*gatewaypb.GenerateCredentialsResponse, error) { + return c.internalClient.GenerateCredentials(ctx, req, opts...) +} + +// gatewayControlGRPCClient is a client for interacting with Connect Gateway API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type gatewayControlGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing GatewayControlClient + CallOptions **GatewayControlCallOptions + + // The gRPC API client. + gatewayControlClient gatewaypb.GatewayControlClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string +} + +// NewGatewayControlClient creates a new gateway control client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// GatewayControl is the control plane API for Connect Gateway. +func NewGatewayControlClient(ctx context.Context, opts ...option.ClientOption) (*GatewayControlClient, error) { + clientOpts := defaultGatewayControlGRPCClientOptions() + if newGatewayControlClientHook != nil { + hookOpts, err := newGatewayControlClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := GatewayControlClient{CallOptions: defaultGatewayControlCallOptions()} + + c := &gatewayControlGRPCClient{ + connPool: connPool, + gatewayControlClient: gatewaypb.NewGatewayControlClient(connPool), + CallOptions: &client.CallOptions, + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *gatewayControlGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *gatewayControlGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *gatewayControlGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type gatewayControlRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing GatewayControlClient + CallOptions **GatewayControlCallOptions +} + +// NewGatewayControlRESTClient creates a new gateway control rest client. +// +// GatewayControl is the control plane API for Connect Gateway. +func NewGatewayControlRESTClient(ctx context.Context, opts ...option.ClientOption) (*GatewayControlClient, error) { + clientOpts := append(defaultGatewayControlRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultGatewayControlRESTCallOptions() + c := &gatewayControlRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + } + c.setGoogleClientInfo() + + return &GatewayControlClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultGatewayControlRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://connectgateway.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://connectgateway.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://connectgateway.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://connectgateway.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *gatewayControlRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *gatewayControlRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *gatewayControlRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *gatewayControlGRPCClient) GenerateCredentials(ctx context.Context, req *gatewaypb.GenerateCredentialsRequest, opts ...gax.CallOption) (*gatewaypb.GenerateCredentialsResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GenerateCredentials[0:len((*c.CallOptions).GenerateCredentials):len((*c.CallOptions).GenerateCredentials)], opts...) + var resp *gatewaypb.GenerateCredentialsResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.gatewayControlClient.GenerateCredentials(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +// GenerateCredentials generateCredentials provides connection information that allows a user to +// access the specified membership using Connect Gateway. +func (c *gatewayControlRESTClient) GenerateCredentials(ctx context.Context, req *gatewaypb.GenerateCredentialsRequest, opts ...gax.CallOption) (*gatewaypb.GenerateCredentialsResponse, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta1/%v:generateCredentials", req.GetName()) + + params := url.Values{} + if req.GetForceUseAgent() { + params.Add("forceUseAgent", fmt.Sprintf("%v", req.GetForceUseAgent())) + } + if req.GetKubernetesNamespace() != "" { + params.Add("kubernetesNamespace", fmt.Sprintf("%v", req.GetKubernetesNamespace())) + } + if req.GetOperatingSystem() != 0 { + params.Add("operatingSystem", fmt.Sprintf("%v", req.GetOperatingSystem())) + } + if req.GetVersion() != "" { + params.Add("version", fmt.Sprintf("%v", req.GetVersion())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GenerateCredentials[0:len((*c.CallOptions).GenerateCredentials):len((*c.CallOptions).GenerateCredentials)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &gatewaypb.GenerateCredentialsResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} diff --git a/gkeconnect/gateway/apiv1beta1/gateway_client_example_go123_test.go b/gkeconnect/gateway/apiv1beta1/gateway_control_client_example_go123_test.go similarity index 100% rename from gkeconnect/gateway/apiv1beta1/gateway_client_example_go123_test.go rename to gkeconnect/gateway/apiv1beta1/gateway_control_client_example_go123_test.go diff --git a/gkeconnect/gateway/apiv1beta1/gateway_control_client_example_test.go b/gkeconnect/gateway/apiv1beta1/gateway_control_client_example_test.go new file mode 100644 index 000000000000..d8d921782f58 --- /dev/null +++ b/gkeconnect/gateway/apiv1beta1/gateway_control_client_example_test.go @@ -0,0 +1,83 @@ +// Copyright 2024 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 +// +// https://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_gapic. DO NOT EDIT. + +package gateway_test + +import ( + "context" + + gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" + gatewaypb "cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb" +) + +func ExampleNewGatewayControlClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := gateway.NewGatewayControlClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewGatewayControlRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := gateway.NewGatewayControlRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleGatewayControlClient_GenerateCredentials() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := gateway.NewGatewayControlClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &gatewaypb.GenerateCredentialsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb#GenerateCredentialsRequest. + } + resp, err := c.GenerateCredentials(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} diff --git a/gkeconnect/gateway/apiv1beta1/gatewaypb/control.pb.go b/gkeconnect/gateway/apiv1beta1/gatewaypb/control.pb.go new file mode 100755 index 000000000000..1b2693d32d2d --- /dev/null +++ b/gkeconnect/gateway/apiv1beta1/gatewaypb/control.pb.go @@ -0,0 +1,500 @@ +// Copyright 2024 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.34.2 +// protoc v4.25.3 +// source: google/cloud/gkeconnect/gateway/v1beta1/control.proto + +package gatewaypb + +import ( + context "context" + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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) +) + +// Operating systems requiring specialized kubeconfigs. +type GenerateCredentialsRequest_OperatingSystem int32 + +const ( + // Generates a kubeconfig that works for all operating systems not defined + // below. + GenerateCredentialsRequest_OPERATING_SYSTEM_UNSPECIFIED GenerateCredentialsRequest_OperatingSystem = 0 + // Generates a kubeconfig that is specifically designed to work with + // Windows. + GenerateCredentialsRequest_OPERATING_SYSTEM_WINDOWS GenerateCredentialsRequest_OperatingSystem = 1 +) + +// Enum value maps for GenerateCredentialsRequest_OperatingSystem. +var ( + GenerateCredentialsRequest_OperatingSystem_name = map[int32]string{ + 0: "OPERATING_SYSTEM_UNSPECIFIED", + 1: "OPERATING_SYSTEM_WINDOWS", + } + GenerateCredentialsRequest_OperatingSystem_value = map[string]int32{ + "OPERATING_SYSTEM_UNSPECIFIED": 0, + "OPERATING_SYSTEM_WINDOWS": 1, + } +) + +func (x GenerateCredentialsRequest_OperatingSystem) Enum() *GenerateCredentialsRequest_OperatingSystem { + p := new(GenerateCredentialsRequest_OperatingSystem) + *p = x + return p +} + +func (x GenerateCredentialsRequest_OperatingSystem) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenerateCredentialsRequest_OperatingSystem) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_enumTypes[0].Descriptor() +} + +func (GenerateCredentialsRequest_OperatingSystem) Type() protoreflect.EnumType { + return &file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_enumTypes[0] +} + +func (x GenerateCredentialsRequest_OperatingSystem) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenerateCredentialsRequest_OperatingSystem.Descriptor instead. +func (GenerateCredentialsRequest_OperatingSystem) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescGZIP(), []int{0, 0} +} + +// A request for connection information for a particular membership. +type GenerateCredentialsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The Fleet membership resource. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. Whether to force the use of Connect Agent-based transport. + // + // This will return a configuration that uses Connect Agent as the underlying + // transport mechanism for cluster types that would otherwise have used a + // different transport. Requires that Connect Agent be installed on the + // cluster. Setting this field to false is equivalent to not setting it. + ForceUseAgent bool `protobuf:"varint,2,opt,name=force_use_agent,json=forceUseAgent,proto3" json:"force_use_agent,omitempty"` + // Optional. The Connect Gateway version to be used in the resulting + // configuration. + // + // Leave this field blank to let the server choose the version (recommended). + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // Optional. The namespace to use in the kubeconfig context. + // + // If this field is specified, the server will set the `namespace` field in + // kubeconfig context. If not specified, the `namespace` field is omitted. + KubernetesNamespace string `protobuf:"bytes,4,opt,name=kubernetes_namespace,json=kubernetesNamespace,proto3" json:"kubernetes_namespace,omitempty"` + // Optional. The operating system where the kubeconfig will be used. + OperatingSystem GenerateCredentialsRequest_OperatingSystem `protobuf:"varint,5,opt,name=operating_system,json=operatingSystem,proto3,enum=google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest_OperatingSystem" json:"operating_system,omitempty"` +} + +func (x *GenerateCredentialsRequest) Reset() { + *x = GenerateCredentialsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateCredentialsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateCredentialsRequest) ProtoMessage() {} + +func (x *GenerateCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_gkeconnect_gateway_v1beta1_control_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 GenerateCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GenerateCredentialsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescGZIP(), []int{0} +} + +func (x *GenerateCredentialsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenerateCredentialsRequest) GetForceUseAgent() bool { + if x != nil { + return x.ForceUseAgent + } + return false +} + +func (x *GenerateCredentialsRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *GenerateCredentialsRequest) GetKubernetesNamespace() string { + if x != nil { + return x.KubernetesNamespace + } + return "" +} + +func (x *GenerateCredentialsRequest) GetOperatingSystem() GenerateCredentialsRequest_OperatingSystem { + if x != nil { + return x.OperatingSystem + } + return GenerateCredentialsRequest_OPERATING_SYSTEM_UNSPECIFIED +} + +// Connection information for a particular membership. +type GenerateCredentialsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A full YAML kubeconfig in serialized format. + Kubeconfig []byte `protobuf:"bytes,1,opt,name=kubeconfig,proto3" json:"kubeconfig,omitempty"` + // The generated URI of the cluster as accessed through the Connect Gateway + // API. + Endpoint string `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"` +} + +func (x *GenerateCredentialsResponse) Reset() { + *x = GenerateCredentialsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateCredentialsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateCredentialsResponse) ProtoMessage() {} + +func (x *GenerateCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_gkeconnect_gateway_v1beta1_control_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 GenerateCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GenerateCredentialsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescGZIP(), []int{1} +} + +func (x *GenerateCredentialsResponse) GetKubeconfig() []byte { + if x != nil { + return x.Kubeconfig + } + return nil +} + +func (x *GenerateCredentialsResponse) GetEndpoint() string { + if x != nil { + return x.Endpoint + } + return "" +} + +var File_google_cloud_gkeconnect_gateway_v1beta1_control_proto protoreflect.FileDescriptor + +var file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDesc = []byte{ + 0x0a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, + 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 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, 0x22, 0x92, 0x03, 0x0a, 0x1a, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2b, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55, 0x73, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x14, + 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x13, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x51, 0x0a, 0x0f, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, + 0x1c, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, + 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x53, 0x10, 0x01, 0x22, 0x59, 0x0a, + 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x6b, 0x75, 0x62, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x32, 0xd8, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0xf2, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 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, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x1a, 0x51, 0xca, 0x41, 0x1d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 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, 0x86, 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x42, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x70, 0x62, + 0x3b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x56, 0x31, 0x42, + 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x47, 0x6b, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5c, 0x47, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, + 0x2b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x47, 0x6b, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x3a, 0x3a, 0x47, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescOnce sync.Once + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescData = file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDesc +) + +func file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescGZIP() []byte { + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescOnce.Do(func() { + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescData) + }) + return file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDescData +} + +var file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_goTypes = []any{ + (GenerateCredentialsRequest_OperatingSystem)(0), // 0: google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest.OperatingSystem + (*GenerateCredentialsRequest)(nil), // 1: google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest + (*GenerateCredentialsResponse)(nil), // 2: google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsResponse +} +var file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_depIdxs = []int32{ + 0, // 0: google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest.operating_system:type_name -> google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest.OperatingSystem + 1, // 1: google.cloud.gkeconnect.gateway.v1beta1.GatewayControl.GenerateCredentials:input_type -> google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsRequest + 2, // 2: google.cloud.gkeconnect.gateway.v1beta1.GatewayControl.GenerateCredentials:output_type -> google.cloud.gkeconnect.gateway.v1beta1.GenerateCredentialsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_init() } +func file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_init() { + if File_google_cloud_gkeconnect_gateway_v1beta1_control_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*GenerateCredentialsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*GenerateCredentialsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_goTypes, + DependencyIndexes: file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_depIdxs, + EnumInfos: file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_enumTypes, + MessageInfos: file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_msgTypes, + }.Build() + File_google_cloud_gkeconnect_gateway_v1beta1_control_proto = out.File + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_rawDesc = nil + file_google_cloud_gkeconnect_gateway_v1beta1_control_proto_goTypes = nil + file_google_cloud_gkeconnect_gateway_v1beta1_control_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 + +// GatewayControlClient is the client API for GatewayControl service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type GatewayControlClient interface { + // GenerateCredentials provides connection information that allows a user to + // access the specified membership using Connect Gateway. + GenerateCredentials(ctx context.Context, in *GenerateCredentialsRequest, opts ...grpc.CallOption) (*GenerateCredentialsResponse, error) +} + +type gatewayControlClient struct { + cc grpc.ClientConnInterface +} + +func NewGatewayControlClient(cc grpc.ClientConnInterface) GatewayControlClient { + return &gatewayControlClient{cc} +} + +func (c *gatewayControlClient) GenerateCredentials(ctx context.Context, in *GenerateCredentialsRequest, opts ...grpc.CallOption) (*GenerateCredentialsResponse, error) { + out := new(GenerateCredentialsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayControl/GenerateCredentials", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GatewayControlServer is the server API for GatewayControl service. +type GatewayControlServer interface { + // GenerateCredentials provides connection information that allows a user to + // access the specified membership using Connect Gateway. + GenerateCredentials(context.Context, *GenerateCredentialsRequest) (*GenerateCredentialsResponse, error) +} + +// UnimplementedGatewayControlServer can be embedded to have forward compatible implementations. +type UnimplementedGatewayControlServer struct { +} + +func (*UnimplementedGatewayControlServer) GenerateCredentials(context.Context, *GenerateCredentialsRequest) (*GenerateCredentialsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateCredentials not implemented") +} + +func RegisterGatewayControlServer(s *grpc.Server, srv GatewayControlServer) { + s.RegisterService(&_GatewayControl_serviceDesc, srv) +} + +func _GatewayControl_GenerateCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateCredentialsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GatewayControlServer).GenerateCredentials(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayControl/GenerateCredentials", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GatewayControlServer).GenerateCredentials(ctx, req.(*GenerateCredentialsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _GatewayControl_serviceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.gkeconnect.gateway.v1beta1.GatewayControl", + HandlerType: (*GatewayControlServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GenerateCredentials", + Handler: _GatewayControl_GenerateCredentials_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/gkeconnect/gateway/v1beta1/control.proto", +} diff --git a/gkeconnect/gateway/apiv1beta1/gatewaypb/gateway.pb.go b/gkeconnect/gateway/apiv1beta1/gatewaypb/gateway.pb.go deleted file mode 100755 index 6f4ca0e81f5d..000000000000 --- a/gkeconnect/gateway/apiv1beta1/gatewaypb/gateway.pb.go +++ /dev/null @@ -1,385 +0,0 @@ -// Copyright 2024 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.34.2 -// protoc v4.25.3 -// source: google/cloud/gkeconnect/gateway/v1beta1/gateway.proto - -package gatewaypb - -import ( - context "context" - reflect "reflect" - - _ "google.golang.org/genproto/googleapis/api/annotations" - httpbody "google.golang.org/genproto/googleapis/api/httpbody" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -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) -) - -var File_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto protoreflect.FileDescriptor - -var file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_rawDesc = []byte{ - 0x0a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x67, - 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 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, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x32, 0xf9, 0x03, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, - 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x2a, 0x2a, 0x12, 0x4f, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, - 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x2a, 0x2a, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, - 0x42, 0x6f, 0x64, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, 0x0b, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x2a, 0x2a, 0x12, 0x4e, 0x0a, 0x0b, 0x50, 0x75, 0x74, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, - 0x42, 0x6f, 0x64, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x1a, 0x0b, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x2a, 0x2a, 0x12, 0x50, 0x0a, 0x0d, 0x50, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, - 0x1a, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x32, 0x0b, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x2a, 0x2a, 0x1a, 0x51, 0xca, 0x41, 0x1d, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 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, 0x86, - 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x6b, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x70, 0x62, 0x3b, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x47, 0x6b, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, - 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x47, - 0x6b, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x2b, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x47, 0x6b, 0x65, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x3a, 0x3a, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_goTypes = []any{ - (*httpbody.HttpBody)(nil), // 0: google.api.HttpBody -} -var file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_depIdxs = []int32{ - 0, // 0: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.GetResource:input_type -> google.api.HttpBody - 0, // 1: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PostResource:input_type -> google.api.HttpBody - 0, // 2: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.DeleteResource:input_type -> google.api.HttpBody - 0, // 3: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PutResource:input_type -> google.api.HttpBody - 0, // 4: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PatchResource:input_type -> google.api.HttpBody - 0, // 5: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.GetResource:output_type -> google.api.HttpBody - 0, // 6: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PostResource:output_type -> google.api.HttpBody - 0, // 7: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.DeleteResource:output_type -> google.api.HttpBody - 0, // 8: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PutResource:output_type -> google.api.HttpBody - 0, // 9: google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PatchResource:output_type -> google.api.HttpBody - 5, // [5:10] is the sub-list for method output_type - 0, // [0:5] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_init() } -func file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_init() { - if File_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_rawDesc, - NumEnums: 0, - NumMessages: 0, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_goTypes, - DependencyIndexes: file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_depIdxs, - }.Build() - File_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto = out.File - file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_rawDesc = nil - file_google_cloud_gkeconnect_gateway_v1beta1_gateway_proto_goTypes = nil - file_google_cloud_gkeconnect_gateway_v1beta1_gateway_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 - -// GatewayServiceClient is the client API for GatewayService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type GatewayServiceClient interface { - // GetResource performs an HTTP GET request on the Kubernetes API Server. - GetResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // PostResource performs an HTTP POST on the Kubernetes API Server. - PostResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // DeleteResource performs an HTTP DELETE on the Kubernetes API Server. - DeleteResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // PutResource performs an HTTP PUT on the Kubernetes API Server. - PutResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) - // PatchResource performs an HTTP PATCH on the Kubernetes API Server. - PatchResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) -} - -type gatewayServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewGatewayServiceClient(cc grpc.ClientConnInterface) GatewayServiceClient { - return &gatewayServiceClient{cc} -} - -func (c *gatewayServiceClient) GetResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { - out := new(httpbody.HttpBody) - err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/GetResource", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayServiceClient) PostResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { - out := new(httpbody.HttpBody) - err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PostResource", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayServiceClient) DeleteResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { - out := new(httpbody.HttpBody) - err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/DeleteResource", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayServiceClient) PutResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { - out := new(httpbody.HttpBody) - err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PutResource", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *gatewayServiceClient) PatchResource(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { - out := new(httpbody.HttpBody) - err := c.cc.Invoke(ctx, "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PatchResource", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// GatewayServiceServer is the server API for GatewayService service. -type GatewayServiceServer interface { - // GetResource performs an HTTP GET request on the Kubernetes API Server. - GetResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) - // PostResource performs an HTTP POST on the Kubernetes API Server. - PostResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) - // DeleteResource performs an HTTP DELETE on the Kubernetes API Server. - DeleteResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) - // PutResource performs an HTTP PUT on the Kubernetes API Server. - PutResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) - // PatchResource performs an HTTP PATCH on the Kubernetes API Server. - PatchResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) -} - -// UnimplementedGatewayServiceServer can be embedded to have forward compatible implementations. -type UnimplementedGatewayServiceServer struct { -} - -func (*UnimplementedGatewayServiceServer) GetResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetResource not implemented") -} -func (*UnimplementedGatewayServiceServer) PostResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) { - return nil, status.Errorf(codes.Unimplemented, "method PostResource not implemented") -} -func (*UnimplementedGatewayServiceServer) DeleteResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteResource not implemented") -} -func (*UnimplementedGatewayServiceServer) PutResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) { - return nil, status.Errorf(codes.Unimplemented, "method PutResource not implemented") -} -func (*UnimplementedGatewayServiceServer) PatchResource(context.Context, *httpbody.HttpBody) (*httpbody.HttpBody, error) { - return nil, status.Errorf(codes.Unimplemented, "method PatchResource not implemented") -} - -func RegisterGatewayServiceServer(s *grpc.Server, srv GatewayServiceServer) { - s.RegisterService(&_GatewayService_serviceDesc, srv) -} - -func _GatewayService_GetResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(httpbody.HttpBody) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayServiceServer).GetResource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/GetResource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayServiceServer).GetResource(ctx, req.(*httpbody.HttpBody)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayService_PostResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(httpbody.HttpBody) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayServiceServer).PostResource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PostResource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayServiceServer).PostResource(ctx, req.(*httpbody.HttpBody)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayService_DeleteResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(httpbody.HttpBody) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayServiceServer).DeleteResource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/DeleteResource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayServiceServer).DeleteResource(ctx, req.(*httpbody.HttpBody)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayService_PutResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(httpbody.HttpBody) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayServiceServer).PutResource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PutResource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayServiceServer).PutResource(ctx, req.(*httpbody.HttpBody)) - } - return interceptor(ctx, in, info, handler) -} - -func _GatewayService_PatchResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(httpbody.HttpBody) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GatewayServiceServer).PatchResource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.gkeconnect.gateway.v1beta1.GatewayService/PatchResource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GatewayServiceServer).PatchResource(ctx, req.(*httpbody.HttpBody)) - } - return interceptor(ctx, in, info, handler) -} - -var _GatewayService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.gkeconnect.gateway.v1beta1.GatewayService", - HandlerType: (*GatewayServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetResource", - Handler: _GatewayService_GetResource_Handler, - }, - { - MethodName: "PostResource", - Handler: _GatewayService_PostResource_Handler, - }, - { - MethodName: "DeleteResource", - Handler: _GatewayService_DeleteResource_Handler, - }, - { - MethodName: "PutResource", - Handler: _GatewayService_PutResource_Handler, - }, - { - MethodName: "PatchResource", - Handler: _GatewayService_PatchResource_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/gkeconnect/gateway/v1beta1/gateway.proto", -} diff --git a/internal/.repo-metadata-full.json b/internal/.repo-metadata-full.json index ee6b6ba4060d..407fe5962bb3 100644 --- a/internal/.repo-metadata-full.json +++ b/internal/.repo-metadata-full.json @@ -1019,6 +1019,16 @@ "release_level": "stable", "library_type": "GAPIC_AUTO" }, + "cloud.google.com/go/datastore/apiv1": { + "api_shortname": "datastore", + "distribution_name": "cloud.google.com/go/datastore/apiv1", + "description": "Cloud Datastore API", + "language": "go", + "client_library_type": "generated", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/datastore/latest/apiv1", + "release_level": "stable", + "library_type": "GAPIC_AUTO" + }, "cloud.google.com/go/datastream/apiv1": { "api_shortname": "datastream", "distribution_name": "cloud.google.com/go/datastream/apiv1", diff --git a/internal/generated/snippets/advisorynotifications/apiv1/snippet_metadata.google.cloud.advisorynotifications.v1.json b/internal/generated/snippets/advisorynotifications/apiv1/snippet_metadata.google.cloud.advisorynotifications.v1.json index ae6f2a0fae13..170a153d9ead 100644 --- a/internal/generated/snippets/advisorynotifications/apiv1/snippet_metadata.google.cloud.advisorynotifications.v1.json +++ b/internal/generated/snippets/advisorynotifications/apiv1/snippet_metadata.google.cloud.advisorynotifications.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/advisorynotifications/apiv1", - "version": "1.4.6", + "version": "1.5.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json b/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json index 8c506c8f9d20..95227180b479 100644 --- a/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json +++ b/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1", - "version": "1.10.7", + "version": "1.11.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json b/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json index 6ebad96236ab..cbee69f9d817 100644 --- a/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json +++ b/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1alpha", - "version": "1.10.7", + "version": "1.11.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json b/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json index 39bcfa836768..93615239b37a 100644 --- a/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json +++ b/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1beta", - "version": "1.10.7", + "version": "1.11.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/analytics/admin/apiv1alpha/snippet_metadata.google.analytics.admin.v1alpha.json b/internal/generated/snippets/analytics/admin/apiv1alpha/snippet_metadata.google.analytics.admin.v1alpha.json index 0cda21dff890..dec710f9dabc 100644 --- a/internal/generated/snippets/analytics/admin/apiv1alpha/snippet_metadata.google.analytics.admin.v1alpha.json +++ b/internal/generated/snippets/analytics/admin/apiv1alpha/snippet_metadata.google.analytics.admin.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/analytics/admin/apiv1alpha", - "version": "0.24.0", + "version": "0.25.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/apihub/apiv1/snippet_metadata.google.cloud.apihub.v1.json b/internal/generated/snippets/apihub/apiv1/snippet_metadata.google.cloud.apihub.v1.json index 2d99f00b88b2..8adfd791c79a 100644 --- a/internal/generated/snippets/apihub/apiv1/snippet_metadata.google.cloud.apihub.v1.json +++ b/internal/generated/snippets/apihub/apiv1/snippet_metadata.google.cloud.apihub.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/apihub/apiv1", - "version": "0.0.0", + "version": "0.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/apphub/apiv1/snippet_metadata.google.cloud.apphub.v1.json b/internal/generated/snippets/apphub/apiv1/snippet_metadata.google.cloud.apphub.v1.json index 42f291cf3a78..0da6ec0f5ef6 100644 --- a/internal/generated/snippets/apphub/apiv1/snippet_metadata.google.cloud.apphub.v1.json +++ b/internal/generated/snippets/apphub/apiv1/snippet_metadata.google.cloud.apphub.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/apphub/apiv1", - "version": "0.1.6", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/apps/events/subscriptions/apiv1/snippet_metadata.google.apps.events.subscriptions.v1.json b/internal/generated/snippets/apps/events/subscriptions/apiv1/snippet_metadata.google.apps.events.subscriptions.v1.json index 936bb010d27a..36e481ebf16c 100644 --- a/internal/generated/snippets/apps/events/subscriptions/apiv1/snippet_metadata.google.apps.events.subscriptions.v1.json +++ b/internal/generated/snippets/apps/events/subscriptions/apiv1/snippet_metadata.google.apps.events.subscriptions.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/apps/events/subscriptions/apiv1", - "version": "0.4.7", + "version": "0.5.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json b/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json index e50c115e12ef..a6b69033676c 100644 --- a/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json +++ b/internal/generated/snippets/apps/meet/apiv2/snippet_metadata.google.apps.meet.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/apps/meet/apiv2", - "version": "0.4.7", + "version": "0.5.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/apps/meet/apiv2beta/snippet_metadata.google.apps.meet.v2beta.json b/internal/generated/snippets/apps/meet/apiv2beta/snippet_metadata.google.apps.meet.v2beta.json index bf7623fa7af9..bdffd9a42556 100644 --- a/internal/generated/snippets/apps/meet/apiv2beta/snippet_metadata.google.apps.meet.v2beta.json +++ b/internal/generated/snippets/apps/meet/apiv2beta/snippet_metadata.google.apps.meet.v2beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/apps/meet/apiv2beta", - "version": "0.4.7", + "version": "0.5.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json b/internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json index b7106ce6671e..87b3b59345d4 100644 --- a/internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json +++ b/internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/asset/apiv1", - "version": "1.19.6", + "version": "1.20.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/asset/apiv1p2beta1/snippet_metadata.google.cloud.asset.v1p2beta1.json b/internal/generated/snippets/asset/apiv1p2beta1/snippet_metadata.google.cloud.asset.v1p2beta1.json index 3f5dfb06351e..d7362e5679f8 100644 --- a/internal/generated/snippets/asset/apiv1p2beta1/snippet_metadata.google.cloud.asset.v1p2beta1.json +++ b/internal/generated/snippets/asset/apiv1p2beta1/snippet_metadata.google.cloud.asset.v1p2beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/asset/apiv1p2beta1", - "version": "1.19.6", + "version": "1.20.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/asset/apiv1p5beta1/snippet_metadata.google.cloud.asset.v1p5beta1.json b/internal/generated/snippets/asset/apiv1p5beta1/snippet_metadata.google.cloud.asset.v1p5beta1.json index d6eb096aa0b6..93fd849d961d 100644 --- a/internal/generated/snippets/asset/apiv1p5beta1/snippet_metadata.google.cloud.asset.v1p5beta1.json +++ b/internal/generated/snippets/asset/apiv1p5beta1/snippet_metadata.google.cloud.asset.v1p5beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/asset/apiv1p5beta1", - "version": "1.19.6", + "version": "1.20.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/backupdr/apiv1/snippet_metadata.google.cloud.backupdr.v1.json b/internal/generated/snippets/backupdr/apiv1/snippet_metadata.google.cloud.backupdr.v1.json index 27efdc2659ef..d68af937bf1e 100644 --- a/internal/generated/snippets/backupdr/apiv1/snippet_metadata.google.cloud.backupdr.v1.json +++ b/internal/generated/snippets/backupdr/apiv1/snippet_metadata.google.cloud.backupdr.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/backupdr/apiv1", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/batch/apiv1/snippet_metadata.google.cloud.batch.v1.json b/internal/generated/snippets/batch/apiv1/snippet_metadata.google.cloud.batch.v1.json index cb627e66e82e..011fcd10f094 100644 --- a/internal/generated/snippets/batch/apiv1/snippet_metadata.google.cloud.batch.v1.json +++ b/internal/generated/snippets/batch/apiv1/snippet_metadata.google.cloud.batch.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/batch/apiv1", - "version": "1.9.4", + "version": "1.10.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/binaryauthorization/apiv1/snippet_metadata.google.cloud.binaryauthorization.v1.json b/internal/generated/snippets/binaryauthorization/apiv1/snippet_metadata.google.cloud.binaryauthorization.v1.json index 9578499f28ff..4d962975c616 100644 --- a/internal/generated/snippets/binaryauthorization/apiv1/snippet_metadata.google.cloud.binaryauthorization.v1.json +++ b/internal/generated/snippets/binaryauthorization/apiv1/snippet_metadata.google.cloud.binaryauthorization.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/binaryauthorization/apiv1", - "version": "1.8.8", + "version": "1.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/binaryauthorization/apiv1beta1/snippet_metadata.google.cloud.binaryauthorization.v1beta1.json b/internal/generated/snippets/binaryauthorization/apiv1beta1/snippet_metadata.google.cloud.binaryauthorization.v1beta1.json index df7bf98bae2c..72df2891dc20 100644 --- a/internal/generated/snippets/binaryauthorization/apiv1beta1/snippet_metadata.google.cloud.binaryauthorization.v1beta1.json +++ b/internal/generated/snippets/binaryauthorization/apiv1beta1/snippet_metadata.google.cloud.binaryauthorization.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/binaryauthorization/apiv1beta1", - "version": "1.8.8", + "version": "1.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/certificatemanager/apiv1/snippet_metadata.google.cloud.certificatemanager.v1.json b/internal/generated/snippets/certificatemanager/apiv1/snippet_metadata.google.cloud.certificatemanager.v1.json index 884b6a44685a..1b512b2dd4b6 100644 --- a/internal/generated/snippets/certificatemanager/apiv1/snippet_metadata.google.cloud.certificatemanager.v1.json +++ b/internal/generated/snippets/certificatemanager/apiv1/snippet_metadata.google.cloud.certificatemanager.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/certificatemanager/apiv1", - "version": "1.8.6", + "version": "1.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/chat/apiv1/snippet_metadata.google.chat.v1.json b/internal/generated/snippets/chat/apiv1/snippet_metadata.google.chat.v1.json index 3f7ee7ab3ee7..18dfce69c542 100644 --- a/internal/generated/snippets/chat/apiv1/snippet_metadata.google.chat.v1.json +++ b/internal/generated/snippets/chat/apiv1/snippet_metadata.google.chat.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/chat/apiv1", - "version": "0.3.1", + "version": "0.4.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudbuild/apiv1/v2/snippet_metadata.google.devtools.cloudbuild.v1.json b/internal/generated/snippets/cloudbuild/apiv1/v2/snippet_metadata.google.devtools.cloudbuild.v1.json index d3cc277849ca..fb2a0d0b8513 100644 --- a/internal/generated/snippets/cloudbuild/apiv1/v2/snippet_metadata.google.devtools.cloudbuild.v1.json +++ b/internal/generated/snippets/cloudbuild/apiv1/v2/snippet_metadata.google.devtools.cloudbuild.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudbuild/apiv1/v2", - "version": "1.16.6", + "version": "1.17.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudbuild/apiv2/snippet_metadata.google.devtools.cloudbuild.v2.json b/internal/generated/snippets/cloudbuild/apiv2/snippet_metadata.google.devtools.cloudbuild.v2.json index f55490b00132..8bbd213d5412 100644 --- a/internal/generated/snippets/cloudbuild/apiv2/snippet_metadata.google.devtools.cloudbuild.v2.json +++ b/internal/generated/snippets/cloudbuild/apiv2/snippet_metadata.google.devtools.cloudbuild.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudbuild/apiv2", - "version": "1.16.6", + "version": "1.17.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudcontrolspartner/apiv1/snippet_metadata.google.cloud.cloudcontrolspartner.v1.json b/internal/generated/snippets/cloudcontrolspartner/apiv1/snippet_metadata.google.cloud.cloudcontrolspartner.v1.json index 50e2ac1f92d4..814fcfcbae20 100644 --- a/internal/generated/snippets/cloudcontrolspartner/apiv1/snippet_metadata.google.cloud.cloudcontrolspartner.v1.json +++ b/internal/generated/snippets/cloudcontrolspartner/apiv1/snippet_metadata.google.cloud.cloudcontrolspartner.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudcontrolspartner/apiv1", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudcontrolspartner/apiv1beta/snippet_metadata.google.cloud.cloudcontrolspartner.v1beta.json b/internal/generated/snippets/cloudcontrolspartner/apiv1beta/snippet_metadata.google.cloud.cloudcontrolspartner.v1beta.json index bec2c1e9eb8b..6a6c0dd19ade 100644 --- a/internal/generated/snippets/cloudcontrolspartner/apiv1beta/snippet_metadata.google.cloud.cloudcontrolspartner.v1beta.json +++ b/internal/generated/snippets/cloudcontrolspartner/apiv1beta/snippet_metadata.google.cloud.cloudcontrolspartner.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudcontrolspartner/apiv1beta", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudprofiler/apiv2/snippet_metadata.google.devtools.cloudprofiler.v2.json b/internal/generated/snippets/cloudprofiler/apiv2/snippet_metadata.google.devtools.cloudprofiler.v2.json index 9cabbd71c220..cc009f011ea9 100644 --- a/internal/generated/snippets/cloudprofiler/apiv2/snippet_metadata.google.devtools.cloudprofiler.v2.json +++ b/internal/generated/snippets/cloudprofiler/apiv2/snippet_metadata.google.devtools.cloudprofiler.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudprofiler/apiv2", - "version": "0.3.6", + "version": "0.4.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json b/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json index dc4e3ae1e40a..2808833d10dd 100644 --- a/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json +++ b/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudquotas/apiv1", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json b/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json index 277fbb7e91cc..48e83788abe7 100644 --- a/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json +++ b/internal/generated/snippets/commerce/consumer/procurement/apiv1/snippet_metadata.google.cloud.commerce.consumer.procurement.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/commerce/consumer/procurement/apiv1", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json index 31136d0620fc..7f9554f72e5e 100644 --- a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json +++ b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/compute/apiv1", - "version": "1.27.5", + "version": "1.28.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json b/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json index c0a8fb5cd5d1..e822db80f09b 100644 --- a/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json +++ b/internal/generated/snippets/confidentialcomputing/apiv1/snippet_metadata.google.cloud.confidentialcomputing.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/confidentialcomputing/apiv1", - "version": "1.6.1", + "version": "1.7.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json b/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json index 0728c630e7ea..5a51c1d9b6a9 100644 --- a/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json +++ b/internal/generated/snippets/confidentialcomputing/apiv1alpha1/snippet_metadata.google.cloud.confidentialcomputing.v1alpha1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/confidentialcomputing/apiv1alpha1", - "version": "1.6.1", + "version": "1.7.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json b/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json index 435f39c0aa24..b169ab912e33 100644 --- a/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json +++ b/internal/generated/snippets/config/apiv1/snippet_metadata.google.cloud.config.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/config/apiv1", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json index 588bd615986d..2b92f293b51d 100644 --- a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json +++ b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/contactcenterinsights/apiv1", - "version": "1.13.7", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json b/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json index d610d22327e1..604b622dd3dc 100644 --- a/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json +++ b/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/container/apiv1", - "version": "1.38.1", + "version": "1.39.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/containeranalysis/apiv1beta1/snippet_metadata.google.devtools.containeranalysis.v1beta1.json b/internal/generated/snippets/containeranalysis/apiv1beta1/snippet_metadata.google.devtools.containeranalysis.v1beta1.json index f7820925342e..cd080a6fbbce 100644 --- a/internal/generated/snippets/containeranalysis/apiv1beta1/snippet_metadata.google.devtools.containeranalysis.v1beta1.json +++ b/internal/generated/snippets/containeranalysis/apiv1beta1/snippet_metadata.google.devtools.containeranalysis.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/containeranalysis/apiv1beta1", - "version": "0.12.2", + "version": "0.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json index cf5d2f462a60..1cc1362f0703 100644 --- a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json +++ b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1", - "version": "1.21.1", + "version": "1.22.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json index ce469f5cb996..760a7fb819ba 100644 --- a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json +++ b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1beta1", - "version": "1.21.1", + "version": "1.22.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json index 9d84b7268e3d..61f52ada4452 100644 --- a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json +++ b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/lineage/apiv1", - "version": "1.21.1", + "version": "1.22.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataform/apiv1alpha2/snippet_metadata.google.cloud.dataform.v1alpha2.json b/internal/generated/snippets/dataform/apiv1alpha2/snippet_metadata.google.cloud.dataform.v1alpha2.json index 24b886dcaded..eebe71c16658 100644 --- a/internal/generated/snippets/dataform/apiv1alpha2/snippet_metadata.google.cloud.dataform.v1alpha2.json +++ b/internal/generated/snippets/dataform/apiv1alpha2/snippet_metadata.google.cloud.dataform.v1alpha2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataform/apiv1alpha2", - "version": "0.9.9", + "version": "0.10.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json b/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json index 7d8826c45d49..43b7be6a9a56 100644 --- a/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json +++ b/internal/generated/snippets/dataform/apiv1beta1/snippet_metadata.google.cloud.dataform.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataform/apiv1beta1", - "version": "0.9.9", + "version": "0.10.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json index 76b5186bbdf8..ec838124b6f6 100644 --- a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json +++ b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataplex/apiv1", - "version": "1.18.3", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json b/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json index 1ed79777fb11..759e0bb2b092 100644 --- a/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json +++ b/internal/generated/snippets/dataproc/apiv1/snippet_metadata.google.cloud.dataproc.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dataproc/v2/apiv1", - "version": "2.5.4", + "version": "2.6.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json index eed70c7c3b31..043021b6c583 100644 --- a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json +++ b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/deploy/apiv1", - "version": "1.21.2", + "version": "1.22.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json b/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json index 924d216aec65..59433003bc91 100644 --- a/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json +++ b/internal/generated/snippets/developerconnect/apiv1/snippet_metadata.google.cloud.developerconnect.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/developerconnect/apiv1", - "version": "0.1.4", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json index 527499d9f3c4..5dd24277ea49 100644 --- a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json +++ b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2", - "version": "1.56.0", + "version": "1.57.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json index c948490d2489..93ef96858389 100644 --- a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json +++ b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2beta1", - "version": "1.56.0", + "version": "1.57.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json index dbe51f1501dd..f256e0f5c0e6 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3", - "version": "1.56.0", + "version": "1.57.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json index 41a76ba6d022..b0416512a36e 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3beta1", - "version": "1.56.0", + "version": "1.57.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json b/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json index 097b1d5cbbde..01412461241a 100644 --- a/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json +++ b/internal/generated/snippets/discoveryengine/apiv1/snippet_metadata.google.cloud.discoveryengine.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1", - "version": "1.12.0", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json b/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json index c196776756fa..87ab9dfaff2f 100644 --- a/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json +++ b/internal/generated/snippets/discoveryengine/apiv1alpha/snippet_metadata.google.cloud.discoveryengine.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1alpha", - "version": "1.12.0", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json b/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json index 1c00872c790d..c3cf61ac4043 100644 --- a/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json +++ b/internal/generated/snippets/discoveryengine/apiv1beta/snippet_metadata.google.cloud.discoveryengine.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/discoveryengine/apiv1beta", - "version": "1.12.0", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dlp/apiv2/snippet_metadata.google.privacy.dlp.v2.json b/internal/generated/snippets/dlp/apiv2/snippet_metadata.google.privacy.dlp.v2.json index 7b4b8e77d864..18c575c5759e 100644 --- a/internal/generated/snippets/dlp/apiv2/snippet_metadata.google.privacy.dlp.v2.json +++ b/internal/generated/snippets/dlp/apiv2/snippet_metadata.google.privacy.dlp.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dlp/apiv2", - "version": "1.17.0", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json b/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json index 7654bc4034e3..631373262a88 100644 --- a/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json +++ b/internal/generated/snippets/documentai/apiv1/snippet_metadata.google.cloud.documentai.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/documentai/apiv1", - "version": "1.32.0", + "version": "1.33.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json b/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json index d458e5ba2276..abd4e426ab66 100644 --- a/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json +++ b/internal/generated/snippets/documentai/apiv1beta3/snippet_metadata.google.cloud.documentai.v1beta3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/documentai/apiv1beta3", - "version": "1.32.0", + "version": "1.33.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json b/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json index 53c974e1d43c..2730f7e47820 100644 --- a/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json +++ b/internal/generated/snippets/edgecontainer/apiv1/snippet_metadata.google.cloud.edgecontainer.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/edgecontainer/apiv1", - "version": "1.2.6", + "version": "1.3.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json b/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json index 24107eaacd10..737bb4e9020b 100644 --- a/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json +++ b/internal/generated/snippets/edgenetwork/apiv1/snippet_metadata.google.cloud.edgenetwork.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/edgenetwork/apiv1", - "version": "1.1.3", + "version": "1.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/filestore/apiv1/snippet_metadata.google.cloud.filestore.v1.json b/internal/generated/snippets/filestore/apiv1/snippet_metadata.google.cloud.filestore.v1.json index cb2776872d9e..534546a8b281 100644 --- a/internal/generated/snippets/filestore/apiv1/snippet_metadata.google.cloud.filestore.v1.json +++ b/internal/generated/snippets/filestore/apiv1/snippet_metadata.google.cloud.filestore.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/filestore/apiv1", - "version": "1.8.8", + "version": "1.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/functions/apiv1/snippet_metadata.google.cloud.functions.v1.json b/internal/generated/snippets/functions/apiv1/snippet_metadata.google.cloud.functions.v1.json index 03d83e089fe4..2f791e7e43e5 100644 --- a/internal/generated/snippets/functions/apiv1/snippet_metadata.google.cloud.functions.v1.json +++ b/internal/generated/snippets/functions/apiv1/snippet_metadata.google.cloud.functions.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/functions/apiv1", - "version": "1.18.0", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/functions/apiv2/snippet_metadata.google.cloud.functions.v2.json b/internal/generated/snippets/functions/apiv2/snippet_metadata.google.cloud.functions.v2.json index f3b5a784c44f..df672b95b948 100644 --- a/internal/generated/snippets/functions/apiv2/snippet_metadata.google.cloud.functions.v2.json +++ b/internal/generated/snippets/functions/apiv2/snippet_metadata.google.cloud.functions.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/functions/apiv2", - "version": "1.18.0", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/functions/apiv2beta/snippet_metadata.google.cloud.functions.v2beta.json b/internal/generated/snippets/functions/apiv2beta/snippet_metadata.google.cloud.functions.v2beta.json index 7a22b236b627..05280b8372fc 100644 --- a/internal/generated/snippets/functions/apiv2beta/snippet_metadata.google.cloud.functions.v2beta.json +++ b/internal/generated/snippets/functions/apiv2beta/snippet_metadata.google.cloud.functions.v2beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/functions/apiv2beta", - "version": "1.18.0", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/gkebackup/apiv1/snippet_metadata.google.cloud.gkebackup.v1.json b/internal/generated/snippets/gkebackup/apiv1/snippet_metadata.google.cloud.gkebackup.v1.json index a501b7bf8e50..754b5416a5bc 100644 --- a/internal/generated/snippets/gkebackup/apiv1/snippet_metadata.google.cloud.gkebackup.v1.json +++ b/internal/generated/snippets/gkebackup/apiv1/snippet_metadata.google.cloud.gkebackup.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/gkebackup/apiv1", - "version": "1.5.5", + "version": "1.6.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/DeleteResource/main.go b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/DeleteResource/main.go deleted file mode 100644 index 40e22b0c882f..000000000000 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/DeleteResource/main.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2024 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 -// -// https://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_gapic. DO NOT EDIT. - -// [START connectgateway_v1beta1_generated_GatewayService_DeleteResource_sync] - -package main - -import ( - "context" - - gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" -) - -func main() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.DeleteResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -// [END connectgateway_v1beta1_generated_GatewayService_DeleteResource_sync] diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PostResource/main.go b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PostResource/main.go deleted file mode 100644 index f8a8cb31c1b1..000000000000 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PostResource/main.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2024 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 -// -// https://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_gapic. DO NOT EDIT. - -// [START connectgateway_v1beta1_generated_GatewayService_PostResource_sync] - -package main - -import ( - "context" - - gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" -) - -func main() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.PostResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -// [END connectgateway_v1beta1_generated_GatewayService_PostResource_sync] diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PutResource/main.go b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PutResource/main.go deleted file mode 100644 index 4cb5fcb81fbe..000000000000 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PutResource/main.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2024 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 -// -// https://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_gapic. DO NOT EDIT. - -// [START connectgateway_v1beta1_generated_GatewayService_PutResource_sync] - -package main - -import ( - "context" - - gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" -) - -func main() { - ctx := context.Background() - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in: - // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) - if err != nil { - // TODO: Handle error. - } - defer c.Close() - - req := &httpbodypb.HttpBody{ - // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. - } - resp, err := c.PutResource(ctx, req) - if err != nil { - // TODO: Handle error. - } - // TODO: Use resp. - _ = resp -} - -// [END connectgateway_v1beta1_generated_GatewayService_PutResource_sync] diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/GetResource/main.go b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/GatewayControlClient/GenerateCredentials/main.go similarity index 73% rename from internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/GetResource/main.go rename to internal/generated/snippets/gkeconnect/gateway/apiv1beta1/GatewayControlClient/GenerateCredentials/main.go index ca2d753d3dcc..c375b7e76282 100644 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/GetResource/main.go +++ b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/GatewayControlClient/GenerateCredentials/main.go @@ -14,7 +14,7 @@ // Code generated by protoc-gen-go_gapic. DO NOT EDIT. -// [START connectgateway_v1beta1_generated_GatewayService_GetResource_sync] +// [START connectgateway_v1beta1_generated_GatewayControl_GenerateCredentials_sync] package main @@ -22,7 +22,7 @@ import ( "context" gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" + gatewaypb "cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb" ) func main() { @@ -32,17 +32,17 @@ func main() { // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in: // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) + c, err := gateway.NewGatewayControlClient(ctx) if err != nil { // TODO: Handle error. } defer c.Close() - req := &httpbodypb.HttpBody{ + req := &gatewaypb.GenerateCredentialsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. + // See https://pkg.go.dev/cloud.google.com/go/gkeconnect/gateway/apiv1beta1/gatewaypb#GenerateCredentialsRequest. } - resp, err := c.GetResource(ctx, req) + resp, err := c.GenerateCredentials(ctx, req) if err != nil { // TODO: Handle error. } @@ -50,4 +50,4 @@ func main() { _ = resp } -// [END connectgateway_v1beta1_generated_GatewayService_GetResource_sync] +// [END connectgateway_v1beta1_generated_GatewayControl_GenerateCredentials_sync] diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/snippet_metadata.google.cloud.gkeconnect.gateway.v1beta1.json b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/snippet_metadata.google.cloud.gkeconnect.gateway.v1beta1.json index 83101485f40d..276c48c73e9d 100644 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/snippet_metadata.google.cloud.gkeconnect.gateway.v1beta1.json +++ b/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/snippet_metadata.google.cloud.gkeconnect.gateway.v1beta1.json @@ -12,21 +12,21 @@ }, "snippets": [ { - "regionTag": "connectgateway_v1beta1_generated_GatewayService_DeleteResource_sync", - "title": "connectgateway DeleteResource Sample", - "description": "DeleteResource deleteResource performs an HTTP DELETE on the Kubernetes API Server.", - "file": "Client/DeleteResource/main.go", + "regionTag": "connectgateway_v1beta1_generated_GatewayControl_GenerateCredentials_sync", + "title": "connectgateway GenerateCredentials Sample", + "description": "GenerateCredentials generateCredentials provides connection information that allows a user to\naccess the specified membership using Connect Gateway.", + "file": "GatewayControlClient/GenerateCredentials/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client.DeleteResource", + "shortName": "GenerateCredentials", + "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayControlClient.GenerateCredentials", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "httpbodypb.HttpBody", + "type": "gatewaypb.GenerateCredentialsRequest", "name": "req" }, { @@ -34,201 +34,17 @@ "name": "opts" } ], - "resultType": "*httpbodypb.HttpBody", + "resultType": "*gatewaypb.GenerateCredentialsResponse", "client": { - "shortName": "Client", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client" + "shortName": "GatewayControlClient", + "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayControlClient" }, "method": { - "shortName": "DeleteResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService.DeleteResource", + "shortName": "GenerateCredentials", + "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayControl.GenerateCredentials", "service": { - "shortName": "GatewayService", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService" - } - } - }, - "origin": "API_DEFINITION", - "segments": [ - { - "start": 18, - "end": 53, - "type": "FULL" - } - ] - }, - { - "regionTag": "connectgateway_v1beta1_generated_GatewayService_GetResource_sync", - "title": "connectgateway GetResource Sample", - "description": "GetResource getResource performs an HTTP GET request on the Kubernetes API Server.", - "file": "Client/GetResource/main.go", - "language": "GO", - "clientMethod": { - "shortName": "GetResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client.GetResource", - "parameters": [ - { - "type": "context.Context", - "name": "ctx" - }, - { - "type": "httpbodypb.HttpBody", - "name": "req" - }, - { - "type": "...gax.CallOption", - "name": "opts" - } - ], - "resultType": "*httpbodypb.HttpBody", - "client": { - "shortName": "Client", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client" - }, - "method": { - "shortName": "GetResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService.GetResource", - "service": { - "shortName": "GatewayService", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService" - } - } - }, - "origin": "API_DEFINITION", - "segments": [ - { - "start": 18, - "end": 53, - "type": "FULL" - } - ] - }, - { - "regionTag": "connectgateway_v1beta1_generated_GatewayService_PatchResource_sync", - "title": "connectgateway PatchResource Sample", - "description": "PatchResource patchResource performs an HTTP PATCH on the Kubernetes API Server.", - "file": "Client/PatchResource/main.go", - "language": "GO", - "clientMethod": { - "shortName": "PatchResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client.PatchResource", - "parameters": [ - { - "type": "context.Context", - "name": "ctx" - }, - { - "type": "httpbodypb.HttpBody", - "name": "req" - }, - { - "type": "...gax.CallOption", - "name": "opts" - } - ], - "resultType": "*httpbodypb.HttpBody", - "client": { - "shortName": "Client", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client" - }, - "method": { - "shortName": "PatchResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PatchResource", - "service": { - "shortName": "GatewayService", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService" - } - } - }, - "origin": "API_DEFINITION", - "segments": [ - { - "start": 18, - "end": 53, - "type": "FULL" - } - ] - }, - { - "regionTag": "connectgateway_v1beta1_generated_GatewayService_PostResource_sync", - "title": "connectgateway PostResource Sample", - "description": "PostResource postResource performs an HTTP POST on the Kubernetes API Server.", - "file": "Client/PostResource/main.go", - "language": "GO", - "clientMethod": { - "shortName": "PostResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client.PostResource", - "parameters": [ - { - "type": "context.Context", - "name": "ctx" - }, - { - "type": "httpbodypb.HttpBody", - "name": "req" - }, - { - "type": "...gax.CallOption", - "name": "opts" - } - ], - "resultType": "*httpbodypb.HttpBody", - "client": { - "shortName": "Client", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client" - }, - "method": { - "shortName": "PostResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PostResource", - "service": { - "shortName": "GatewayService", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService" - } - } - }, - "origin": "API_DEFINITION", - "segments": [ - { - "start": 18, - "end": 53, - "type": "FULL" - } - ] - }, - { - "regionTag": "connectgateway_v1beta1_generated_GatewayService_PutResource_sync", - "title": "connectgateway PutResource Sample", - "description": "PutResource putResource performs an HTTP PUT on the Kubernetes API Server.", - "file": "Client/PutResource/main.go", - "language": "GO", - "clientMethod": { - "shortName": "PutResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client.PutResource", - "parameters": [ - { - "type": "context.Context", - "name": "ctx" - }, - { - "type": "httpbodypb.HttpBody", - "name": "req" - }, - { - "type": "...gax.CallOption", - "name": "opts" - } - ], - "resultType": "*httpbodypb.HttpBody", - "client": { - "shortName": "Client", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.Client" - }, - "method": { - "shortName": "PutResource", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService.PutResource", - "service": { - "shortName": "GatewayService", - "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayService" + "shortName": "GatewayControl", + "fullName": "google.cloud.gkeconnect.gateway.v1beta1.GatewayControl" } } }, diff --git a/internal/generated/snippets/gkemulticloud/apiv1/snippet_metadata.google.cloud.gkemulticloud.v1.json b/internal/generated/snippets/gkemulticloud/apiv1/snippet_metadata.google.cloud.gkemulticloud.v1.json index da242b5f7b7a..1ae0633e51f6 100644 --- a/internal/generated/snippets/gkemulticloud/apiv1/snippet_metadata.google.cloud.gkemulticloud.v1.json +++ b/internal/generated/snippets/gkemulticloud/apiv1/snippet_metadata.google.cloud.gkemulticloud.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/gkemulticloud/apiv1", - "version": "1.2.5", + "version": "1.3.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/identitytoolkit/apiv2/snippet_metadata.google.cloud.identitytoolkit.v2.json b/internal/generated/snippets/identitytoolkit/apiv2/snippet_metadata.google.cloud.identitytoolkit.v2.json index 7b7567e3787e..c20fcab71212 100644 --- a/internal/generated/snippets/identitytoolkit/apiv2/snippet_metadata.google.cloud.identitytoolkit.v2.json +++ b/internal/generated/snippets/identitytoolkit/apiv2/snippet_metadata.google.cloud.identitytoolkit.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/identitytoolkit/apiv2", - "version": "0.1.4", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/kms/apiv1/snippet_metadata.google.cloud.kms.v1.json b/internal/generated/snippets/kms/apiv1/snippet_metadata.google.cloud.kms.v1.json index 07a51c5f2a7a..afddbb57f51f 100644 --- a/internal/generated/snippets/kms/apiv1/snippet_metadata.google.cloud.kms.v1.json +++ b/internal/generated/snippets/kms/apiv1/snippet_metadata.google.cloud.kms.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/kms/apiv1", - "version": "1.18.5", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/kms/inventory/apiv1/snippet_metadata.google.cloud.kms.inventory.v1.json b/internal/generated/snippets/kms/inventory/apiv1/snippet_metadata.google.cloud.kms.inventory.v1.json index 7733b882e8fe..7adf1bba64c4 100644 --- a/internal/generated/snippets/kms/inventory/apiv1/snippet_metadata.google.cloud.kms.inventory.v1.json +++ b/internal/generated/snippets/kms/inventory/apiv1/snippet_metadata.google.cloud.kms.inventory.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/kms/inventory/apiv1", - "version": "1.18.5", + "version": "1.19.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/language/apiv1/snippet_metadata.google.cloud.language.v1.json b/internal/generated/snippets/language/apiv1/snippet_metadata.google.cloud.language.v1.json index 86e7a31edcd7..ff440ab3759e 100644 --- a/internal/generated/snippets/language/apiv1/snippet_metadata.google.cloud.language.v1.json +++ b/internal/generated/snippets/language/apiv1/snippet_metadata.google.cloud.language.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/language/apiv1", - "version": "1.13.1", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/language/apiv1beta2/snippet_metadata.google.cloud.language.v1beta2.json b/internal/generated/snippets/language/apiv1beta2/snippet_metadata.google.cloud.language.v1beta2.json index dc7d4ff47285..4f8c77f7a06f 100644 --- a/internal/generated/snippets/language/apiv1beta2/snippet_metadata.google.cloud.language.v1beta2.json +++ b/internal/generated/snippets/language/apiv1beta2/snippet_metadata.google.cloud.language.v1beta2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/language/apiv1beta2", - "version": "1.13.1", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/language/apiv2/snippet_metadata.google.cloud.language.v2.json b/internal/generated/snippets/language/apiv2/snippet_metadata.google.cloud.language.v2.json index 7386bdafdffc..5cbeddb9e7b7 100644 --- a/internal/generated/snippets/language/apiv2/snippet_metadata.google.cloud.language.v2.json +++ b/internal/generated/snippets/language/apiv2/snippet_metadata.google.cloud.language.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/language/apiv2", - "version": "1.13.1", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/managedkafka/apiv1/snippet_metadata.google.cloud.managedkafka.v1.json b/internal/generated/snippets/managedkafka/apiv1/snippet_metadata.google.cloud.managedkafka.v1.json index 48735fd73530..eef0b9a4a845 100644 --- a/internal/generated/snippets/managedkafka/apiv1/snippet_metadata.google.cloud.managedkafka.v1.json +++ b/internal/generated/snippets/managedkafka/apiv1/snippet_metadata.google.cloud.managedkafka.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/managedkafka/apiv1", - "version": "0.1.6", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json b/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json index 095604e700d8..8a520a685993 100644 --- a/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json +++ b/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/addressvalidation/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json b/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json index 67be38137ec6..d77b9563f147 100644 --- a/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json +++ b/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/fleetengine/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json b/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json index 8d5990f0b728..152f2329b3da 100644 --- a/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json +++ b/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/fleetengine/delivery/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json b/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json index 8ce47e29f17c..87c7e7c88ebe 100644 --- a/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json +++ b/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/places/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json b/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json index 5462fd72d882..5de5c5aebf99 100644 --- a/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json +++ b/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/routeoptimization/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json b/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json index 638e5cc13fb0..a5a4cb964871 100644 --- a/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json +++ b/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/routing/apiv2", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json b/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json index e5ad387b1b5c..b11cbf96d648 100644 --- a/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json +++ b/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/solar/apiv1", - "version": "1.11.7", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/migrationcenter/apiv1/snippet_metadata.google.cloud.migrationcenter.v1.json b/internal/generated/snippets/migrationcenter/apiv1/snippet_metadata.google.cloud.migrationcenter.v1.json index 64cbc59e387c..b720351ea758 100644 --- a/internal/generated/snippets/migrationcenter/apiv1/snippet_metadata.google.cloud.migrationcenter.v1.json +++ b/internal/generated/snippets/migrationcenter/apiv1/snippet_metadata.google.cloud.migrationcenter.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/migrationcenter/apiv1", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/monitoring/apiv3/v2/snippet_metadata.google.monitoring.v3.json b/internal/generated/snippets/monitoring/apiv3/v2/snippet_metadata.google.monitoring.v3.json index 564936955536..8c1b42422bd8 100644 --- a/internal/generated/snippets/monitoring/apiv3/v2/snippet_metadata.google.monitoring.v3.json +++ b/internal/generated/snippets/monitoring/apiv3/v2/snippet_metadata.google.monitoring.v3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/monitoring/apiv3/v2", - "version": "1.20.4", + "version": "1.21.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/monitoring/dashboard/apiv1/snippet_metadata.google.monitoring.dashboard.v1.json b/internal/generated/snippets/monitoring/dashboard/apiv1/snippet_metadata.google.monitoring.dashboard.v1.json index fd699a95f10c..733d24719c4e 100644 --- a/internal/generated/snippets/monitoring/dashboard/apiv1/snippet_metadata.google.monitoring.dashboard.v1.json +++ b/internal/generated/snippets/monitoring/dashboard/apiv1/snippet_metadata.google.monitoring.dashboard.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/monitoring/dashboard/apiv1", - "version": "1.20.4", + "version": "1.21.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/monitoring/metricsscope/apiv1/snippet_metadata.google.monitoring.metricsscope.v1.json b/internal/generated/snippets/monitoring/metricsscope/apiv1/snippet_metadata.google.monitoring.metricsscope.v1.json index cccd6c10bf22..8c7d40c82d9d 100644 --- a/internal/generated/snippets/monitoring/metricsscope/apiv1/snippet_metadata.google.monitoring.metricsscope.v1.json +++ b/internal/generated/snippets/monitoring/metricsscope/apiv1/snippet_metadata.google.monitoring.metricsscope.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/monitoring/metricsscope/apiv1", - "version": "1.20.4", + "version": "1.21.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/netapp/apiv1/snippet_metadata.google.cloud.netapp.v1.json b/internal/generated/snippets/netapp/apiv1/snippet_metadata.google.cloud.netapp.v1.json index 5b5ab636a260..f827d66e8b55 100644 --- a/internal/generated/snippets/netapp/apiv1/snippet_metadata.google.cloud.netapp.v1.json +++ b/internal/generated/snippets/netapp/apiv1/snippet_metadata.google.cloud.netapp.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/netapp/apiv1", - "version": "1.2.1", + "version": "1.3.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json b/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json index bc556e51e49e..591b45a21123 100644 --- a/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json +++ b/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/networkmanagement/apiv1", - "version": "1.13.7", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/networkservices/apiv1/snippet_metadata.google.cloud.networkservices.v1.json b/internal/generated/snippets/networkservices/apiv1/snippet_metadata.google.cloud.networkservices.v1.json index b7efea11db02..51cdc02b5025 100644 --- a/internal/generated/snippets/networkservices/apiv1/snippet_metadata.google.cloud.networkservices.v1.json +++ b/internal/generated/snippets/networkservices/apiv1/snippet_metadata.google.cloud.networkservices.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/networkservices/apiv1", - "version": "0.1.6", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/orchestration/airflow/service/apiv1/snippet_metadata.google.cloud.orchestration.airflow.service.v1.json b/internal/generated/snippets/orchestration/airflow/service/apiv1/snippet_metadata.google.cloud.orchestration.airflow.service.v1.json index 9036c5d2243e..4e1c6376345a 100644 --- a/internal/generated/snippets/orchestration/airflow/service/apiv1/snippet_metadata.google.cloud.orchestration.airflow.service.v1.json +++ b/internal/generated/snippets/orchestration/airflow/service/apiv1/snippet_metadata.google.cloud.orchestration.airflow.service.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/orchestration/airflow/service/apiv1", - "version": "1.9.7", + "version": "1.10.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/orgpolicy/apiv2/snippet_metadata.google.cloud.orgpolicy.v2.json b/internal/generated/snippets/orgpolicy/apiv2/snippet_metadata.google.cloud.orgpolicy.v2.json index 5842d82966c8..1ce75d70fa1d 100644 --- a/internal/generated/snippets/orgpolicy/apiv2/snippet_metadata.google.cloud.orgpolicy.v2.json +++ b/internal/generated/snippets/orgpolicy/apiv2/snippet_metadata.google.cloud.orgpolicy.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/orgpolicy/apiv2", - "version": "1.12.8", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/osconfig/agentendpoint/apiv1/snippet_metadata.google.cloud.osconfig.agentendpoint.v1.json b/internal/generated/snippets/osconfig/agentendpoint/apiv1/snippet_metadata.google.cloud.osconfig.agentendpoint.v1.json index defd4ee7bc5a..5b655d4120c7 100644 --- a/internal/generated/snippets/osconfig/agentendpoint/apiv1/snippet_metadata.google.cloud.osconfig.agentendpoint.v1.json +++ b/internal/generated/snippets/osconfig/agentendpoint/apiv1/snippet_metadata.google.cloud.osconfig.agentendpoint.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/osconfig/agentendpoint/apiv1", - "version": "1.13.3", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/osconfig/agentendpoint/apiv1beta/snippet_metadata.google.cloud.osconfig.agentendpoint.v1beta.json b/internal/generated/snippets/osconfig/agentendpoint/apiv1beta/snippet_metadata.google.cloud.osconfig.agentendpoint.v1beta.json index 89b3ae14e23b..98620cd8fe55 100644 --- a/internal/generated/snippets/osconfig/agentendpoint/apiv1beta/snippet_metadata.google.cloud.osconfig.agentendpoint.v1beta.json +++ b/internal/generated/snippets/osconfig/agentendpoint/apiv1beta/snippet_metadata.google.cloud.osconfig.agentendpoint.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/osconfig/agentendpoint/apiv1beta", - "version": "1.13.3", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/osconfig/apiv1/snippet_metadata.google.cloud.osconfig.v1.json b/internal/generated/snippets/osconfig/apiv1/snippet_metadata.google.cloud.osconfig.v1.json index 5cb7821aa46a..f1403532152b 100644 --- a/internal/generated/snippets/osconfig/apiv1/snippet_metadata.google.cloud.osconfig.v1.json +++ b/internal/generated/snippets/osconfig/apiv1/snippet_metadata.google.cloud.osconfig.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/osconfig/apiv1", - "version": "1.13.3", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/osconfig/apiv1alpha/snippet_metadata.google.cloud.osconfig.v1alpha.json b/internal/generated/snippets/osconfig/apiv1alpha/snippet_metadata.google.cloud.osconfig.v1alpha.json index 32dc030ae113..b6d55451450c 100644 --- a/internal/generated/snippets/osconfig/apiv1alpha/snippet_metadata.google.cloud.osconfig.v1alpha.json +++ b/internal/generated/snippets/osconfig/apiv1alpha/snippet_metadata.google.cloud.osconfig.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/osconfig/apiv1alpha", - "version": "1.13.3", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/osconfig/apiv1beta/snippet_metadata.google.cloud.osconfig.v1beta.json b/internal/generated/snippets/osconfig/apiv1beta/snippet_metadata.google.cloud.osconfig.v1beta.json index 767883db4417..350fb0cbcbb2 100644 --- a/internal/generated/snippets/osconfig/apiv1beta/snippet_metadata.google.cloud.osconfig.v1beta.json +++ b/internal/generated/snippets/osconfig/apiv1beta/snippet_metadata.google.cloud.osconfig.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/osconfig/apiv1beta", - "version": "1.13.3", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/oslogin/apiv1/snippet_metadata.google.cloud.oslogin.v1.json b/internal/generated/snippets/oslogin/apiv1/snippet_metadata.google.cloud.oslogin.v1.json index 34291ac2846a..eb89cb30af83 100644 --- a/internal/generated/snippets/oslogin/apiv1/snippet_metadata.google.cloud.oslogin.v1.json +++ b/internal/generated/snippets/oslogin/apiv1/snippet_metadata.google.cloud.oslogin.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/oslogin/apiv1", - "version": "1.13.8", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/oslogin/apiv1beta/snippet_metadata.google.cloud.oslogin.v1beta.json b/internal/generated/snippets/oslogin/apiv1beta/snippet_metadata.google.cloud.oslogin.v1beta.json index 33b11a1ff9eb..3a3c3b69293a 100644 --- a/internal/generated/snippets/oslogin/apiv1beta/snippet_metadata.google.cloud.oslogin.v1beta.json +++ b/internal/generated/snippets/oslogin/apiv1beta/snippet_metadata.google.cloud.oslogin.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/oslogin/apiv1beta", - "version": "1.13.8", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/parallelstore/apiv1beta/snippet_metadata.google.cloud.parallelstore.v1beta.json b/internal/generated/snippets/parallelstore/apiv1beta/snippet_metadata.google.cloud.parallelstore.v1beta.json index a1e928da05a4..770a0dd8da44 100644 --- a/internal/generated/snippets/parallelstore/apiv1beta/snippet_metadata.google.cloud.parallelstore.v1beta.json +++ b/internal/generated/snippets/parallelstore/apiv1beta/snippet_metadata.google.cloud.parallelstore.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/parallelstore/apiv1beta", - "version": "0.5.1", + "version": "0.6.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/privilegedaccessmanager/apiv1/snippet_metadata.google.cloud.privilegedaccessmanager.v1.json b/internal/generated/snippets/privilegedaccessmanager/apiv1/snippet_metadata.google.cloud.privilegedaccessmanager.v1.json index 63aac4bcf7e5..d3706cd40ab5 100644 --- a/internal/generated/snippets/privilegedaccessmanager/apiv1/snippet_metadata.google.cloud.privilegedaccessmanager.v1.json +++ b/internal/generated/snippets/privilegedaccessmanager/apiv1/snippet_metadata.google.cloud.privilegedaccessmanager.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/privilegedaccessmanager/apiv1", - "version": "0.1.1", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PatchResource/main.go b/internal/generated/snippets/recaptchaenterprise/v2/apiv1/Client/AddIpOverride/main.go similarity index 67% rename from internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PatchResource/main.go rename to internal/generated/snippets/recaptchaenterprise/v2/apiv1/Client/AddIpOverride/main.go index b7b5e3481c4b..e56717de930b 100644 --- a/internal/generated/snippets/gkeconnect/gateway/apiv1beta1/Client/PatchResource/main.go +++ b/internal/generated/snippets/recaptchaenterprise/v2/apiv1/Client/AddIpOverride/main.go @@ -14,15 +14,15 @@ // Code generated by protoc-gen-go_gapic. DO NOT EDIT. -// [START connectgateway_v1beta1_generated_GatewayService_PatchResource_sync] +// [START recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_AddIpOverride_sync] package main import ( "context" - gateway "cloud.google.com/go/gkeconnect/gateway/apiv1beta1" - httpbodypb "google.golang.org/genproto/googleapis/api/httpbody" + recaptchaenterprise "cloud.google.com/go/recaptchaenterprise/v2/apiv1" + recaptchaenterprisepb "cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb" ) func main() { @@ -32,17 +32,17 @@ func main() { // - It may require correct/in-range values for request initialization. // - It may require specifying regional endpoints when creating the service client as shown in: // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options - c, err := gateway.NewClient(ctx) + c, err := recaptchaenterprise.NewClient(ctx) if err != nil { // TODO: Handle error. } defer c.Close() - req := &httpbodypb.HttpBody{ + req := &recaptchaenterprisepb.AddIpOverrideRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/google.golang.org/genproto/googleapis/api/httpbody#HttpBody. + // See https://pkg.go.dev/cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb#AddIpOverrideRequest. } - resp, err := c.PatchResource(ctx, req) + resp, err := c.AddIpOverride(ctx, req) if err != nil { // TODO: Handle error. } @@ -50,4 +50,4 @@ func main() { _ = resp } -// [END connectgateway_v1beta1_generated_GatewayService_PatchResource_sync] +// [END recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_AddIpOverride_sync] diff --git a/internal/generated/snippets/recaptchaenterprise/v2/apiv1/snippet_metadata.google.cloud.recaptchaenterprise.v1.json b/internal/generated/snippets/recaptchaenterprise/v2/apiv1/snippet_metadata.google.cloud.recaptchaenterprise.v1.json index b7c2863a9d6e..c35737e16555 100644 --- a/internal/generated/snippets/recaptchaenterprise/v2/apiv1/snippet_metadata.google.cloud.recaptchaenterprise.v1.json +++ b/internal/generated/snippets/recaptchaenterprise/v2/apiv1/snippet_metadata.google.cloud.recaptchaenterprise.v1.json @@ -11,6 +11,52 @@ ] }, "snippets": [ + { + "regionTag": "recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_AddIpOverride_sync", + "title": "recaptchaenterprise AddIpOverride Sample", + "description": "AddIpOverride adds an IP override to a key. The following restrictions hold: \n* The maximum number of IP overrides per key is 100.\n* For any conflict (such as IP already exists or IP part of an existing\nIP range), an error will be returned.", + "file": "Client/AddIpOverride/main.go", + "language": "GO", + "clientMethod": { + "shortName": "AddIpOverride", + "fullName": "google.cloud.recaptchaenterprise.v1.Client.AddIpOverride", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "recaptchaenterprisepb.AddIpOverrideRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*recaptchaenterprisepb.AddIpOverrideResponse", + "client": { + "shortName": "Client", + "fullName": "google.cloud.recaptchaenterprise.v1.Client" + }, + "method": { + "shortName": "AddIpOverride", + "fullName": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AddIpOverride", + "service": { + "shortName": "RecaptchaEnterpriseService", + "fullName": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_AnnotateAssessment_sync", "title": "recaptchaenterprise AnnotateAssessment Sample", diff --git a/internal/generated/snippets/recommender/apiv1/snippet_metadata.google.cloud.recommender.v1.json b/internal/generated/snippets/recommender/apiv1/snippet_metadata.google.cloud.recommender.v1.json index 2507b7857f5a..c8781bc47318 100644 --- a/internal/generated/snippets/recommender/apiv1/snippet_metadata.google.cloud.recommender.v1.json +++ b/internal/generated/snippets/recommender/apiv1/snippet_metadata.google.cloud.recommender.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/recommender/apiv1", - "version": "1.12.8", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/recommender/apiv1beta1/snippet_metadata.google.cloud.recommender.v1beta1.json b/internal/generated/snippets/recommender/apiv1beta1/snippet_metadata.google.cloud.recommender.v1beta1.json index 81707901c78a..36bfb84dd72e 100644 --- a/internal/generated/snippets/recommender/apiv1beta1/snippet_metadata.google.cloud.recommender.v1beta1.json +++ b/internal/generated/snippets/recommender/apiv1beta1/snippet_metadata.google.cloud.recommender.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/recommender/apiv1beta1", - "version": "1.12.8", + "version": "1.13.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/redis/apiv1/snippet_metadata.google.cloud.redis.v1.json b/internal/generated/snippets/redis/apiv1/snippet_metadata.google.cloud.redis.v1.json index 86341d5c81e0..b3ccbe91207e 100644 --- a/internal/generated/snippets/redis/apiv1/snippet_metadata.google.cloud.redis.v1.json +++ b/internal/generated/snippets/redis/apiv1/snippet_metadata.google.cloud.redis.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/redis/apiv1", - "version": "1.16.5", + "version": "1.17.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/redis/apiv1beta1/snippet_metadata.google.cloud.redis.v1beta1.json b/internal/generated/snippets/redis/apiv1beta1/snippet_metadata.google.cloud.redis.v1beta1.json index a9a9f5139613..5b9105249f8f 100644 --- a/internal/generated/snippets/redis/apiv1beta1/snippet_metadata.google.cloud.redis.v1beta1.json +++ b/internal/generated/snippets/redis/apiv1beta1/snippet_metadata.google.cloud.redis.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/redis/apiv1beta1", - "version": "1.16.5", + "version": "1.17.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/redis/cluster/apiv1/snippet_metadata.google.cloud.redis.cluster.v1.json b/internal/generated/snippets/redis/cluster/apiv1/snippet_metadata.google.cloud.redis.cluster.v1.json index d30202e5e89f..c5882e5e19ba 100644 --- a/internal/generated/snippets/redis/cluster/apiv1/snippet_metadata.google.cloud.redis.cluster.v1.json +++ b/internal/generated/snippets/redis/cluster/apiv1/snippet_metadata.google.cloud.redis.cluster.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/redis/cluster/apiv1", - "version": "1.16.5", + "version": "1.17.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/resourcesettings/apiv1/snippet_metadata.google.cloud.resourcesettings.v1.json b/internal/generated/snippets/resourcesettings/apiv1/snippet_metadata.google.cloud.resourcesettings.v1.json index 8b0b9e30340a..b6a370c03fcd 100644 --- a/internal/generated/snippets/resourcesettings/apiv1/snippet_metadata.google.cloud.resourcesettings.v1.json +++ b/internal/generated/snippets/resourcesettings/apiv1/snippet_metadata.google.cloud.resourcesettings.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/resourcesettings/apiv1", - "version": "1.7.5", + "version": "1.8.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/retail/apiv2/snippet_metadata.google.cloud.retail.v2.json b/internal/generated/snippets/retail/apiv2/snippet_metadata.google.cloud.retail.v2.json index af377a84d81b..2892af396097 100644 --- a/internal/generated/snippets/retail/apiv2/snippet_metadata.google.cloud.retail.v2.json +++ b/internal/generated/snippets/retail/apiv2/snippet_metadata.google.cloud.retail.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/retail/apiv2", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/retail/apiv2alpha/snippet_metadata.google.cloud.retail.v2alpha.json b/internal/generated/snippets/retail/apiv2alpha/snippet_metadata.google.cloud.retail.v2alpha.json index a7a862333c8d..9e738359a958 100644 --- a/internal/generated/snippets/retail/apiv2alpha/snippet_metadata.google.cloud.retail.v2alpha.json +++ b/internal/generated/snippets/retail/apiv2alpha/snippet_metadata.google.cloud.retail.v2alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/retail/apiv2alpha", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/retail/apiv2beta/snippet_metadata.google.cloud.retail.v2beta.json b/internal/generated/snippets/retail/apiv2beta/snippet_metadata.google.cloud.retail.v2beta.json index 44d151f469ce..eaf32c991e9b 100644 --- a/internal/generated/snippets/retail/apiv2beta/snippet_metadata.google.cloud.retail.v2beta.json +++ b/internal/generated/snippets/retail/apiv2beta/snippet_metadata.google.cloud.retail.v2beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/retail/apiv2beta", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json b/internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json index ac70e56f796d..f9b9fb53c75b 100644 --- a/internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json +++ b/internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/secretmanager/apiv1", - "version": "1.13.6", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/secretmanager/apiv1beta2/snippet_metadata.google.cloud.secretmanager.v1beta2.json b/internal/generated/snippets/secretmanager/apiv1beta2/snippet_metadata.google.cloud.secretmanager.v1beta2.json index c7bebf83b378..92cb7cd47114 100644 --- a/internal/generated/snippets/secretmanager/apiv1beta2/snippet_metadata.google.cloud.secretmanager.v1beta2.json +++ b/internal/generated/snippets/secretmanager/apiv1beta2/snippet_metadata.google.cloud.secretmanager.v1beta2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/secretmanager/apiv1beta2", - "version": "1.13.6", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securesourcemanager/apiv1/snippet_metadata.google.cloud.securesourcemanager.v1.json b/internal/generated/snippets/securesourcemanager/apiv1/snippet_metadata.google.cloud.securesourcemanager.v1.json index 2f7d6196a0ab..e921f50863a5 100644 --- a/internal/generated/snippets/securesourcemanager/apiv1/snippet_metadata.google.cloud.securesourcemanager.v1.json +++ b/internal/generated/snippets/securesourcemanager/apiv1/snippet_metadata.google.cloud.securesourcemanager.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securesourcemanager/apiv1", - "version": "1.1.1", + "version": "1.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/security/privateca/apiv1/snippet_metadata.google.cloud.security.privateca.v1.json b/internal/generated/snippets/security/privateca/apiv1/snippet_metadata.google.cloud.security.privateca.v1.json index 3389c636daf4..ddbf43d7ef27 100644 --- a/internal/generated/snippets/security/privateca/apiv1/snippet_metadata.google.cloud.security.privateca.v1.json +++ b/internal/generated/snippets/security/privateca/apiv1/snippet_metadata.google.cloud.security.privateca.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/security/privateca/apiv1", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/security/publicca/apiv1/snippet_metadata.google.cloud.security.publicca.v1.json b/internal/generated/snippets/security/publicca/apiv1/snippet_metadata.google.cloud.security.publicca.v1.json index 0c10bed4556a..12be91b6287b 100644 --- a/internal/generated/snippets/security/publicca/apiv1/snippet_metadata.google.cloud.security.publicca.v1.json +++ b/internal/generated/snippets/security/publicca/apiv1/snippet_metadata.google.cloud.security.publicca.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/security/publicca/apiv1", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/security/publicca/apiv1beta1/snippet_metadata.google.cloud.security.publicca.v1beta1.json b/internal/generated/snippets/security/publicca/apiv1beta1/snippet_metadata.google.cloud.security.publicca.v1beta1.json index 7dc57e1adfb3..4f78de3a5c0e 100644 --- a/internal/generated/snippets/security/publicca/apiv1beta1/snippet_metadata.google.cloud.security.publicca.v1beta1.json +++ b/internal/generated/snippets/security/publicca/apiv1beta1/snippet_metadata.google.cloud.security.publicca.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/security/publicca/apiv1beta1", - "version": "1.17.5", + "version": "1.18.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycenter/apiv1/snippet_metadata.google.cloud.securitycenter.v1.json b/internal/generated/snippets/securitycenter/apiv1/snippet_metadata.google.cloud.securitycenter.v1.json index 6a368d8fd16f..09cf0c1642aa 100644 --- a/internal/generated/snippets/securitycenter/apiv1/snippet_metadata.google.cloud.securitycenter.v1.json +++ b/internal/generated/snippets/securitycenter/apiv1/snippet_metadata.google.cloud.securitycenter.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycenter/apiv1", - "version": "1.34.0", + "version": "1.35.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycenter/apiv1beta1/snippet_metadata.google.cloud.securitycenter.v1beta1.json b/internal/generated/snippets/securitycenter/apiv1beta1/snippet_metadata.google.cloud.securitycenter.v1beta1.json index b547da66e5cc..ddb76a6350ff 100644 --- a/internal/generated/snippets/securitycenter/apiv1beta1/snippet_metadata.google.cloud.securitycenter.v1beta1.json +++ b/internal/generated/snippets/securitycenter/apiv1beta1/snippet_metadata.google.cloud.securitycenter.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycenter/apiv1beta1", - "version": "1.34.0", + "version": "1.35.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycenter/apiv1p1beta1/snippet_metadata.google.cloud.securitycenter.v1p1beta1.json b/internal/generated/snippets/securitycenter/apiv1p1beta1/snippet_metadata.google.cloud.securitycenter.v1p1beta1.json index 81a79582ea80..cac6964a495c 100644 --- a/internal/generated/snippets/securitycenter/apiv1p1beta1/snippet_metadata.google.cloud.securitycenter.v1p1beta1.json +++ b/internal/generated/snippets/securitycenter/apiv1p1beta1/snippet_metadata.google.cloud.securitycenter.v1p1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycenter/apiv1p1beta1", - "version": "1.34.0", + "version": "1.35.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycenter/apiv2/snippet_metadata.google.cloud.securitycenter.v2.json b/internal/generated/snippets/securitycenter/apiv2/snippet_metadata.google.cloud.securitycenter.v2.json index 7587540d0db1..c96db8c7503b 100644 --- a/internal/generated/snippets/securitycenter/apiv2/snippet_metadata.google.cloud.securitycenter.v2.json +++ b/internal/generated/snippets/securitycenter/apiv2/snippet_metadata.google.cloud.securitycenter.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycenter/apiv2", - "version": "1.34.0", + "version": "1.35.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycenter/settings/apiv1beta1/snippet_metadata.google.cloud.securitycenter.settings.v1beta1.json b/internal/generated/snippets/securitycenter/settings/apiv1beta1/snippet_metadata.google.cloud.securitycenter.settings.v1beta1.json index 9d1156042445..9004d4398047 100644 --- a/internal/generated/snippets/securitycenter/settings/apiv1beta1/snippet_metadata.google.cloud.securitycenter.settings.v1beta1.json +++ b/internal/generated/snippets/securitycenter/settings/apiv1beta1/snippet_metadata.google.cloud.securitycenter.settings.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycenter/settings/apiv1beta1", - "version": "1.34.0", + "version": "1.35.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securitycentermanagement/apiv1/snippet_metadata.google.cloud.securitycentermanagement.v1.json b/internal/generated/snippets/securitycentermanagement/apiv1/snippet_metadata.google.cloud.securitycentermanagement.v1.json index e3b109df2d34..2ac4625c96a1 100644 --- a/internal/generated/snippets/securitycentermanagement/apiv1/snippet_metadata.google.cloud.securitycentermanagement.v1.json +++ b/internal/generated/snippets/securitycentermanagement/apiv1/snippet_metadata.google.cloud.securitycentermanagement.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securitycentermanagement/apiv1", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/securityposture/apiv1/snippet_metadata.google.cloud.securityposture.v1.json b/internal/generated/snippets/securityposture/apiv1/snippet_metadata.google.cloud.securityposture.v1.json index 831b86fffc0d..a5cbb73e0df2 100644 --- a/internal/generated/snippets/securityposture/apiv1/snippet_metadata.google.cloud.securityposture.v1.json +++ b/internal/generated/snippets/securityposture/apiv1/snippet_metadata.google.cloud.securityposture.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/securityposture/apiv1", - "version": "0.1.8", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/servicecontrol/apiv1/snippet_metadata.google.api.servicecontrol.v1.json b/internal/generated/snippets/servicecontrol/apiv1/snippet_metadata.google.api.servicecontrol.v1.json index 4e3c91a54423..24920d3a7457 100644 --- a/internal/generated/snippets/servicecontrol/apiv1/snippet_metadata.google.api.servicecontrol.v1.json +++ b/internal/generated/snippets/servicecontrol/apiv1/snippet_metadata.google.api.servicecontrol.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/servicecontrol/apiv1", - "version": "1.13.7", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json b/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json index 2365ace86501..7bb0c75d2a85 100644 --- a/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json +++ b/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/servicehealth/apiv1", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/css/apiv1/snippet_metadata.google.shopping.css.v1.json b/internal/generated/snippets/shopping/css/apiv1/snippet_metadata.google.shopping.css.v1.json index 5cd14cf31375..ca122c412fd1 100644 --- a/internal/generated/snippets/shopping/css/apiv1/snippet_metadata.google.shopping.css.v1.json +++ b/internal/generated/snippets/shopping/css/apiv1/snippet_metadata.google.shopping.css.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/css/apiv1", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/accounts/apiv1beta/snippet_metadata.google.shopping.merchant.accounts.v1beta.json b/internal/generated/snippets/shopping/merchant/accounts/apiv1beta/snippet_metadata.google.shopping.merchant.accounts.v1beta.json index 995e81c183ee..3da882f640e6 100644 --- a/internal/generated/snippets/shopping/merchant/accounts/apiv1beta/snippet_metadata.google.shopping.merchant.accounts.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/accounts/apiv1beta/snippet_metadata.google.shopping.merchant.accounts.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/accounts/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/conversions/apiv1beta/snippet_metadata.google.shopping.merchant.conversions.v1beta.json b/internal/generated/snippets/shopping/merchant/conversions/apiv1beta/snippet_metadata.google.shopping.merchant.conversions.v1beta.json index df9c6d9d75b2..409eb06c4e54 100644 --- a/internal/generated/snippets/shopping/merchant/conversions/apiv1beta/snippet_metadata.google.shopping.merchant.conversions.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/conversions/apiv1beta/snippet_metadata.google.shopping.merchant.conversions.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/conversions/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/datasources/apiv1beta/snippet_metadata.google.shopping.merchant.datasources.v1beta.json b/internal/generated/snippets/shopping/merchant/datasources/apiv1beta/snippet_metadata.google.shopping.merchant.datasources.v1beta.json index 19f14d75ce50..7ed7697dbc15 100644 --- a/internal/generated/snippets/shopping/merchant/datasources/apiv1beta/snippet_metadata.google.shopping.merchant.datasources.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/datasources/apiv1beta/snippet_metadata.google.shopping.merchant.datasources.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/datasources/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/inventories/apiv1beta/snippet_metadata.google.shopping.merchant.inventories.v1beta.json b/internal/generated/snippets/shopping/merchant/inventories/apiv1beta/snippet_metadata.google.shopping.merchant.inventories.v1beta.json index 8937788d7325..e299359c4cca 100644 --- a/internal/generated/snippets/shopping/merchant/inventories/apiv1beta/snippet_metadata.google.shopping.merchant.inventories.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/inventories/apiv1beta/snippet_metadata.google.shopping.merchant.inventories.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/inventories/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/lfp/apiv1beta/snippet_metadata.google.shopping.merchant.lfp.v1beta.json b/internal/generated/snippets/shopping/merchant/lfp/apiv1beta/snippet_metadata.google.shopping.merchant.lfp.v1beta.json index c8f1f0d9b0b5..d18c11c1c389 100644 --- a/internal/generated/snippets/shopping/merchant/lfp/apiv1beta/snippet_metadata.google.shopping.merchant.lfp.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/lfp/apiv1beta/snippet_metadata.google.shopping.merchant.lfp.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/lfp/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/notifications/apiv1beta/snippet_metadata.google.shopping.merchant.notifications.v1beta.json b/internal/generated/snippets/shopping/merchant/notifications/apiv1beta/snippet_metadata.google.shopping.merchant.notifications.v1beta.json index 2944b5626b80..e02330c52481 100644 --- a/internal/generated/snippets/shopping/merchant/notifications/apiv1beta/snippet_metadata.google.shopping.merchant.notifications.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/notifications/apiv1beta/snippet_metadata.google.shopping.merchant.notifications.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/notifications/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/products/apiv1beta/snippet_metadata.google.shopping.merchant.products.v1beta.json b/internal/generated/snippets/shopping/merchant/products/apiv1beta/snippet_metadata.google.shopping.merchant.products.v1beta.json index 10e06a950c56..d290c6a3359b 100644 --- a/internal/generated/snippets/shopping/merchant/products/apiv1beta/snippet_metadata.google.shopping.merchant.products.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/products/apiv1beta/snippet_metadata.google.shopping.merchant.products.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/products/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/promotions/apiv1beta/snippet_metadata.google.shopping.merchant.promotions.v1beta.json b/internal/generated/snippets/shopping/merchant/promotions/apiv1beta/snippet_metadata.google.shopping.merchant.promotions.v1beta.json index d855009b2fe6..54a924562a24 100644 --- a/internal/generated/snippets/shopping/merchant/promotions/apiv1beta/snippet_metadata.google.shopping.merchant.promotions.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/promotions/apiv1beta/snippet_metadata.google.shopping.merchant.promotions.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/promotions/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/quota/apiv1beta/snippet_metadata.google.shopping.merchant.quota.v1beta.json b/internal/generated/snippets/shopping/merchant/quota/apiv1beta/snippet_metadata.google.shopping.merchant.quota.v1beta.json index 81c0d3f8f3d5..b6b4dfa77a60 100644 --- a/internal/generated/snippets/shopping/merchant/quota/apiv1beta/snippet_metadata.google.shopping.merchant.quota.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/quota/apiv1beta/snippet_metadata.google.shopping.merchant.quota.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/quota/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/shopping/merchant/reports/apiv1beta/snippet_metadata.google.shopping.merchant.reports.v1beta.json b/internal/generated/snippets/shopping/merchant/reports/apiv1beta/snippet_metadata.google.shopping.merchant.reports.v1beta.json index 3f3ff06fb444..e1a5bbef98bb 100644 --- a/internal/generated/snippets/shopping/merchant/reports/apiv1beta/snippet_metadata.google.shopping.merchant.reports.v1beta.json +++ b/internal/generated/snippets/shopping/merchant/reports/apiv1beta/snippet_metadata.google.shopping.merchant.reports.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/shopping/merchant/reports/apiv1beta", - "version": "0.8.7", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/speech/apiv1/snippet_metadata.google.cloud.speech.v1.json b/internal/generated/snippets/speech/apiv1/snippet_metadata.google.cloud.speech.v1.json index 597eecce7ef3..4d4c47fd7219 100644 --- a/internal/generated/snippets/speech/apiv1/snippet_metadata.google.cloud.speech.v1.json +++ b/internal/generated/snippets/speech/apiv1/snippet_metadata.google.cloud.speech.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/speech/apiv1", - "version": "1.24.1", + "version": "1.25.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/speech/apiv1p1beta1/snippet_metadata.google.cloud.speech.v1p1beta1.json b/internal/generated/snippets/speech/apiv1p1beta1/snippet_metadata.google.cloud.speech.v1p1beta1.json index 538cf790b66b..6c1e28c5fb8b 100644 --- a/internal/generated/snippets/speech/apiv1p1beta1/snippet_metadata.google.cloud.speech.v1p1beta1.json +++ b/internal/generated/snippets/speech/apiv1p1beta1/snippet_metadata.google.cloud.speech.v1p1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/speech/apiv1p1beta1", - "version": "1.24.1", + "version": "1.25.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/speech/apiv2/snippet_metadata.google.cloud.speech.v2.json b/internal/generated/snippets/speech/apiv2/snippet_metadata.google.cloud.speech.v2.json index 3492ec644ba9..057790b3ce32 100644 --- a/internal/generated/snippets/speech/apiv2/snippet_metadata.google.cloud.speech.v2.json +++ b/internal/generated/snippets/speech/apiv2/snippet_metadata.google.cloud.speech.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/speech/apiv2", - "version": "1.24.1", + "version": "1.25.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/streetview/publish/apiv1/snippet_metadata.google.streetview.publish.v1.json b/internal/generated/snippets/streetview/publish/apiv1/snippet_metadata.google.streetview.publish.v1.json index c979b69ac2f6..f16779b87667 100644 --- a/internal/generated/snippets/streetview/publish/apiv1/snippet_metadata.google.streetview.publish.v1.json +++ b/internal/generated/snippets/streetview/publish/apiv1/snippet_metadata.google.streetview.publish.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/streetview/publish/apiv1", - "version": "0.1.5", + "version": "0.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/telcoautomation/apiv1/snippet_metadata.google.cloud.telcoautomation.v1.json b/internal/generated/snippets/telcoautomation/apiv1/snippet_metadata.google.cloud.telcoautomation.v1.json index 2ed077300f98..0e4573784ebc 100644 --- a/internal/generated/snippets/telcoautomation/apiv1/snippet_metadata.google.cloud.telcoautomation.v1.json +++ b/internal/generated/snippets/telcoautomation/apiv1/snippet_metadata.google.cloud.telcoautomation.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/telcoautomation/apiv1", - "version": "1.0.4", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/translate/apiv3/snippet_metadata.google.cloud.translation.v3.json b/internal/generated/snippets/translate/apiv3/snippet_metadata.google.cloud.translation.v3.json index 12a58db8da13..27d8d427e2c6 100644 --- a/internal/generated/snippets/translate/apiv3/snippet_metadata.google.cloud.translation.v3.json +++ b/internal/generated/snippets/translate/apiv3/snippet_metadata.google.cloud.translation.v3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/translate/apiv3", - "version": "1.11.0", + "version": "1.12.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json b/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json index 1a29eea448b6..53ca4147589c 100644 --- a/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json +++ b/internal/generated/snippets/video/livestream/apiv1/snippet_metadata.google.cloud.video.livestream.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/video/livestream/apiv1", - "version": "1.22.1", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/video/stitcher/apiv1/snippet_metadata.google.cloud.video.stitcher.v1.json b/internal/generated/snippets/video/stitcher/apiv1/snippet_metadata.google.cloud.video.stitcher.v1.json index 27ad63aa8dda..73fd3322e720 100644 --- a/internal/generated/snippets/video/stitcher/apiv1/snippet_metadata.google.cloud.video.stitcher.v1.json +++ b/internal/generated/snippets/video/stitcher/apiv1/snippet_metadata.google.cloud.video.stitcher.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/video/stitcher/apiv1", - "version": "1.22.1", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/video/transcoder/apiv1/snippet_metadata.google.cloud.video.transcoder.v1.json b/internal/generated/snippets/video/transcoder/apiv1/snippet_metadata.google.cloud.video.transcoder.v1.json index 299654d12c50..190b7370fc09 100644 --- a/internal/generated/snippets/video/transcoder/apiv1/snippet_metadata.google.cloud.video.transcoder.v1.json +++ b/internal/generated/snippets/video/transcoder/apiv1/snippet_metadata.google.cloud.video.transcoder.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/video/transcoder/apiv1", - "version": "1.22.1", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/vision/apiv1/snippet_metadata.google.cloud.vision.v1.json b/internal/generated/snippets/vision/apiv1/snippet_metadata.google.cloud.vision.v1.json index 01413b2b64fa..6c1c18933872 100644 --- a/internal/generated/snippets/vision/apiv1/snippet_metadata.google.cloud.vision.v1.json +++ b/internal/generated/snippets/vision/apiv1/snippet_metadata.google.cloud.vision.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/vision/v2/apiv1", - "version": "2.8.7", + "version": "2.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/vision/apiv1p1beta1/snippet_metadata.google.cloud.vision.v1p1beta1.json b/internal/generated/snippets/vision/apiv1p1beta1/snippet_metadata.google.cloud.vision.v1p1beta1.json index 5b905f3709bc..a5320e5df1cc 100644 --- a/internal/generated/snippets/vision/apiv1p1beta1/snippet_metadata.google.cloud.vision.v1p1beta1.json +++ b/internal/generated/snippets/vision/apiv1p1beta1/snippet_metadata.google.cloud.vision.v1p1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/vision/v2/apiv1p1beta1", - "version": "2.8.7", + "version": "2.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/visionai/apiv1/snippet_metadata.google.cloud.visionai.v1.json b/internal/generated/snippets/visionai/apiv1/snippet_metadata.google.cloud.visionai.v1.json index 0bb60680bc8a..f5ffb1f736e3 100644 --- a/internal/generated/snippets/visionai/apiv1/snippet_metadata.google.cloud.visionai.v1.json +++ b/internal/generated/snippets/visionai/apiv1/snippet_metadata.google.cloud.visionai.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/visionai/apiv1", - "version": "0.2.5", + "version": "0.3.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/vmwareengine/apiv1/snippet_metadata.google.cloud.vmwareengine.v1.json b/internal/generated/snippets/vmwareengine/apiv1/snippet_metadata.google.cloud.vmwareengine.v1.json index 70d83afaadee..6e315f6ee4f7 100644 --- a/internal/generated/snippets/vmwareengine/apiv1/snippet_metadata.google.cloud.vmwareengine.v1.json +++ b/internal/generated/snippets/vmwareengine/apiv1/snippet_metadata.google.cloud.vmwareengine.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/vmwareengine/apiv1", - "version": "1.2.1", + "version": "1.3.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/workstations/apiv1/snippet_metadata.google.cloud.workstations.v1.json b/internal/generated/snippets/workstations/apiv1/snippet_metadata.google.cloud.workstations.v1.json index 9fd19389e858..05262bd066ec 100644 --- a/internal/generated/snippets/workstations/apiv1/snippet_metadata.google.cloud.workstations.v1.json +++ b/internal/generated/snippets/workstations/apiv1/snippet_metadata.google.cloud.workstations.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/workstations/apiv1", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/workstations/apiv1beta/snippet_metadata.google.cloud.workstations.v1beta.json b/internal/generated/snippets/workstations/apiv1beta/snippet_metadata.google.cloud.workstations.v1beta.json index f8191fc22a39..a441dccf8051 100644 --- a/internal/generated/snippets/workstations/apiv1beta/snippet_metadata.google.cloud.workstations.v1beta.json +++ b/internal/generated/snippets/workstations/apiv1beta/snippet_metadata.google.cloud.workstations.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/workstations/apiv1beta", - "version": "1.0.5", + "version": "1.1.0", "language": "GO", "apis": [ { diff --git a/recaptchaenterprise/apiv1/doc.go b/recaptchaenterprise/apiv1/doc.go index 5bbd61c47a87..0b06ab9b40e9 100755 --- a/recaptchaenterprise/apiv1/doc.go +++ b/recaptchaenterprise/apiv1/doc.go @@ -68,11 +68,11 @@ // } // defer c.Close() // -// req := &recaptchaenterprisepb.AnnotateAssessmentRequest{ +// req := &recaptchaenterprisepb.AddIpOverrideRequest{ // // TODO: Fill request struct fields. -// // See https://pkg.go.dev/cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb#AnnotateAssessmentRequest. +// // See https://pkg.go.dev/cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb#AddIpOverrideRequest. // } -// resp, err := c.AnnotateAssessment(ctx, req) +// resp, err := c.AddIpOverride(ctx, req) // if err != nil { // // TODO: Handle error. // } diff --git a/recaptchaenterprise/apiv1/gapic_metadata.json b/recaptchaenterprise/apiv1/gapic_metadata.json index 24f6c8538c2b..f7cc18bd0576 100644 --- a/recaptchaenterprise/apiv1/gapic_metadata.json +++ b/recaptchaenterprise/apiv1/gapic_metadata.json @@ -10,6 +10,11 @@ "grpc": { "libraryClient": "Client", "rpcs": { + "AddIpOverride": { + "methods": [ + "AddIpOverride" + ] + }, "AnnotateAssessment": { "methods": [ "AnnotateAssessment" diff --git a/recaptchaenterprise/apiv1/recaptcha_enterprise_client.go b/recaptchaenterprise/apiv1/recaptcha_enterprise_client.go index 1558f9e2ac6c..ea6c75418dee 100755 --- a/recaptchaenterprise/apiv1/recaptcha_enterprise_client.go +++ b/recaptchaenterprise/apiv1/recaptcha_enterprise_client.go @@ -46,6 +46,7 @@ type CallOptions struct { UpdateKey []gax.CallOption DeleteKey []gax.CallOption MigrateKey []gax.CallOption + AddIpOverride []gax.CallOption GetMetrics []gax.CallOption CreateFirewallPolicy []gax.CallOption ListFirewallPolicies []gax.CallOption @@ -98,6 +99,7 @@ func defaultCallOptions() *CallOptions { gax.WithTimeout(600000 * time.Millisecond), }, MigrateKey: []gax.CallOption{}, + AddIpOverride: []gax.CallOption{}, GetMetrics: []gax.CallOption{}, CreateFirewallPolicy: []gax.CallOption{}, ListFirewallPolicies: []gax.CallOption{}, @@ -125,6 +127,7 @@ type internalClient interface { UpdateKey(context.Context, *recaptchaenterprisepb.UpdateKeyRequest, ...gax.CallOption) (*recaptchaenterprisepb.Key, error) DeleteKey(context.Context, *recaptchaenterprisepb.DeleteKeyRequest, ...gax.CallOption) error MigrateKey(context.Context, *recaptchaenterprisepb.MigrateKeyRequest, ...gax.CallOption) (*recaptchaenterprisepb.Key, error) + AddIpOverride(context.Context, *recaptchaenterprisepb.AddIpOverrideRequest, ...gax.CallOption) (*recaptchaenterprisepb.AddIpOverrideResponse, error) GetMetrics(context.Context, *recaptchaenterprisepb.GetMetricsRequest, ...gax.CallOption) (*recaptchaenterprisepb.Metrics, error) CreateFirewallPolicy(context.Context, *recaptchaenterprisepb.CreateFirewallPolicyRequest, ...gax.CallOption) (*recaptchaenterprisepb.FirewallPolicy, error) ListFirewallPolicies(context.Context, *recaptchaenterprisepb.ListFirewallPoliciesRequest, ...gax.CallOption) *FirewallPolicyIterator @@ -225,6 +228,16 @@ func (c *Client) MigrateKey(ctx context.Context, req *recaptchaenterprisepb.Migr return c.internalClient.MigrateKey(ctx, req, opts...) } +// AddIpOverride adds an IP override to a key. The following restrictions hold: +// +// The maximum number of IP overrides per key is 100. +// +// For any conflict (such as IP already exists or IP part of an existing +// IP range), an error will be returned. +func (c *Client) AddIpOverride(ctx context.Context, req *recaptchaenterprisepb.AddIpOverrideRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.AddIpOverrideResponse, error) { + return c.internalClient.AddIpOverride(ctx, req, opts...) +} + // GetMetrics get some aggregated metrics for a Key. This data can be used to build // dashboards. func (c *Client) GetMetrics(ctx context.Context, req *recaptchaenterprisepb.GetMetricsRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Metrics, error) { @@ -538,6 +551,24 @@ func (c *gRPCClient) MigrateKey(ctx context.Context, req *recaptchaenterprisepb. return resp, nil } +func (c *gRPCClient) AddIpOverride(ctx context.Context, req *recaptchaenterprisepb.AddIpOverrideRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.AddIpOverrideResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).AddIpOverride[0:len((*c.CallOptions).AddIpOverride):len((*c.CallOptions).AddIpOverride)], opts...) + var resp *recaptchaenterprisepb.AddIpOverrideResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.AddIpOverride(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *gRPCClient) GetMetrics(ctx context.Context, req *recaptchaenterprisepb.GetMetricsRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Metrics, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} diff --git a/recaptchaenterprise/apiv1/recaptcha_enterprise_client_example_test.go b/recaptchaenterprise/apiv1/recaptcha_enterprise_client_example_test.go index 59e4691b4fce..27b9f971329e 100644 --- a/recaptchaenterprise/apiv1/recaptcha_enterprise_client_example_test.go +++ b/recaptchaenterprise/apiv1/recaptcha_enterprise_client_example_test.go @@ -41,6 +41,31 @@ func ExampleNewClient() { _ = c } +func ExampleClient_AddIpOverride() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := recaptchaenterprise.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &recaptchaenterprisepb.AddIpOverrideRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb#AddIpOverrideRequest. + } + resp, err := c.AddIpOverride(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_AnnotateAssessment() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/recaptchaenterprise/apiv1/recaptchaenterprisepb/recaptchaenterprise.pb.go b/recaptchaenterprise/apiv1/recaptchaenterprisepb/recaptchaenterprise.pb.go index e927cb467962..81a3f7d122ba 100755 --- a/recaptchaenterprise/apiv1/recaptchaenterprisepb/recaptchaenterprise.pb.go +++ b/recaptchaenterprise/apiv1/recaptchaenterprisepb/recaptchaenterprise.pb.go @@ -1033,7 +1033,7 @@ func (WebKeySettings_ChallengeSecurityPreference) EnumDescriptor() ([]byte, []in } // Supported WAF features. For more information, see -// https://cloud.google.com/recaptcha-enterprise/docs/usecase#comparison_of_features. +// https://cloud.google.com/recaptcha/docs/usecase#comparison_of_features. type WafSettings_WafFeature int32 const ( @@ -1093,7 +1093,7 @@ func (x WafSettings_WafFeature) Number() protoreflect.EnumNumber { // Deprecated: Use WafSettings_WafFeature.Descriptor instead. func (WafSettings_WafFeature) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{58, 0} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{61, 0} } // Web Application Firewalls supported by reCAPTCHA Enterprise. @@ -1150,7 +1150,57 @@ func (x WafSettings_WafService) Number() protoreflect.EnumNumber { // Deprecated: Use WafSettings_WafService.Descriptor instead. func (WafSettings_WafService) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{58, 1} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{61, 1} +} + +// Enum that represents the type of IP override. +type IpOverrideData_OverrideType int32 + +const ( + // Default override type that indicates this enum hasn't been specified. + IpOverrideData_OVERRIDE_TYPE_UNSPECIFIED IpOverrideData_OverrideType = 0 + // Allowlist the IP address; i.e. give a `risk_analysis.score` of 0.9 for + // all valid assessments. + IpOverrideData_ALLOW IpOverrideData_OverrideType = 1 +) + +// Enum value maps for IpOverrideData_OverrideType. +var ( + IpOverrideData_OverrideType_name = map[int32]string{ + 0: "OVERRIDE_TYPE_UNSPECIFIED", + 1: "ALLOW", + } + IpOverrideData_OverrideType_value = map[string]int32{ + "OVERRIDE_TYPE_UNSPECIFIED": 0, + "ALLOW": 1, + } +) + +func (x IpOverrideData_OverrideType) Enum() *IpOverrideData_OverrideType { + p := new(IpOverrideData_OverrideType) + *p = x + return p +} + +func (x IpOverrideData_OverrideType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IpOverrideData_OverrideType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[15].Descriptor() +} + +func (IpOverrideData_OverrideType) Type() protoreflect.EnumType { + return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[15] +} + +func (x IpOverrideData_OverrideType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IpOverrideData_OverrideType.Descriptor instead. +func (IpOverrideData_OverrideType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{62, 0} } // The create assessment request message. @@ -1883,8 +1933,7 @@ type Event struct { // Deprecated: Marked as deprecated in google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto. HashedAccountId []byte `protobuf:"bytes,6,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"` // Optional. Flag for a reCAPTCHA express request for an assessment without a - // token. If enabled, `site_key` must reference a SCORE key with WAF feature - // set to EXPRESS. + // token. If enabled, `site_key` must reference an Express site key. Express bool `protobuf:"varint,14,opt,name=express,proto3" json:"express,omitempty"` // Optional. The URI resource the user requested that triggered an assessment. RequestedUri string `protobuf:"bytes,8,opt,name=requested_uri,json=requestedUri,proto3" json:"requested_uri,omitempty"` @@ -3728,11 +3777,11 @@ type MigrateKeyRequest struct { // Optional. If true, skips the billing check. // A reCAPTCHA Enterprise key or migrated key behaves differently than a // reCAPTCHA (non-Enterprise version) key when you reach a quota limit (see - // https://cloud.google.com/recaptcha-enterprise/quotas#quota_limit). To avoid + // https://cloud.google.com/recaptcha/quotas#quota_limit). To avoid // any disruption of your usage, we check that a billing account is present. // If your usage of reCAPTCHA is under the free quota, you can safely skip the // billing check and proceed with the migration. See - // https://cloud.google.com/recaptcha-enterprise/docs/billing-information. + // https://cloud.google.com/recaptcha/docs/billing-information. SkipBillingCheck bool `protobuf:"varint,2,opt,name=skip_billing_check,json=skipBillingCheck,proto3" json:"skip_billing_check,omitempty"` } @@ -3985,9 +4034,10 @@ type Key struct { // *Key_WebSettings // *Key_AndroidSettings // *Key_IosSettings + // *Key_ExpressSettings PlatformSettings isKey_PlatformSettings `protobuf_oneof:"platform_settings"` // Optional. See [Creating and managing labels] - // (https://cloud.google.com/recaptcha-enterprise/docs/labels). + // (https://cloud.google.com/recaptcha/docs/labels). Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Output only. The timestamp corresponding to the creation of this key. CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` @@ -4071,6 +4121,13 @@ func (x *Key) GetIosSettings() *IOSKeySettings { return nil } +func (x *Key) GetExpressSettings() *ExpressKeySettings { + if x, ok := x.GetPlatformSettings().(*Key_ExpressSettings); ok { + return x.ExpressSettings + } + return nil +} + func (x *Key) GetLabels() map[string]string { if x != nil { return x.Labels @@ -4118,12 +4175,19 @@ type Key_IosSettings struct { IosSettings *IOSKeySettings `protobuf:"bytes,5,opt,name=ios_settings,json=iosSettings,proto3,oneof"` } +type Key_ExpressSettings struct { + // Settings for keys that can be used by reCAPTCHA Express. + ExpressSettings *ExpressKeySettings `protobuf:"bytes,11,opt,name=express_settings,json=expressSettings,proto3,oneof"` +} + func (*Key_WebSettings) isKey_PlatformSettings() {} func (*Key_AndroidSettings) isKey_PlatformSettings() {} func (*Key_IosSettings) isKey_PlatformSettings() {} +func (*Key_ExpressSettings) isKey_PlatformSettings() {} + // Options for user acceptance testing. type TestingOptions struct { state protoimpl.MessageState @@ -4418,6 +4482,45 @@ func (x *IOSKeySettings) GetAppleDeveloperId() *AppleDeveloperId { return nil } +// Settings specific to keys that can be used for reCAPTCHA Express. +type ExpressKeySettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ExpressKeySettings) Reset() { + *x = ExpressKeySettings{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExpressKeySettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExpressKeySettings) ProtoMessage() {} + +func (x *ExpressKeySettings) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43] + 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 ExpressKeySettings.ProtoReflect.Descriptor instead. +func (*ExpressKeySettings) Descriptor() ([]byte, []int) { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{43} +} + // Contains fields that are required to perform Apple-specific integrity checks. type AppleDeveloperId struct { state protoimpl.MessageState @@ -4438,7 +4541,7 @@ type AppleDeveloperId struct { func (x *AppleDeveloperId) Reset() { *x = AppleDeveloperId{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4451,7 +4554,7 @@ func (x *AppleDeveloperId) String() string { func (*AppleDeveloperId) ProtoMessage() {} func (x *AppleDeveloperId) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4464,7 +4567,7 @@ func (x *AppleDeveloperId) ProtoReflect() protoreflect.Message { // Deprecated: Use AppleDeveloperId.ProtoReflect.Descriptor instead. func (*AppleDeveloperId) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{43} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{44} } func (x *AppleDeveloperId) GetPrivateKey() string { @@ -4503,7 +4606,7 @@ type ScoreDistribution struct { func (x *ScoreDistribution) Reset() { *x = ScoreDistribution{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4516,7 +4619,7 @@ func (x *ScoreDistribution) String() string { func (*ScoreDistribution) ProtoMessage() {} func (x *ScoreDistribution) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4529,7 +4632,7 @@ func (x *ScoreDistribution) ProtoReflect() protoreflect.Message { // Deprecated: Use ScoreDistribution.ProtoReflect.Descriptor instead. func (*ScoreDistribution) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{44} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{45} } func (x *ScoreDistribution) GetScoreBuckets() map[int32]int64 { @@ -4555,7 +4658,7 @@ type ScoreMetrics struct { func (x *ScoreMetrics) Reset() { *x = ScoreMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4568,7 +4671,7 @@ func (x *ScoreMetrics) String() string { func (*ScoreMetrics) ProtoMessage() {} func (x *ScoreMetrics) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4581,7 +4684,7 @@ func (x *ScoreMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use ScoreMetrics.ProtoReflect.Descriptor instead. func (*ScoreMetrics) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{45} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{46} } func (x *ScoreMetrics) GetOverallMetrics() *ScoreDistribution { @@ -4621,7 +4724,7 @@ type ChallengeMetrics struct { func (x *ChallengeMetrics) Reset() { *x = ChallengeMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4634,7 +4737,7 @@ func (x *ChallengeMetrics) String() string { func (*ChallengeMetrics) ProtoMessage() {} func (x *ChallengeMetrics) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4647,7 +4750,7 @@ func (x *ChallengeMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use ChallengeMetrics.ProtoReflect.Descriptor instead. func (*ChallengeMetrics) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{46} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{47} } func (x *ChallengeMetrics) GetPageloadCount() int64 { @@ -4696,7 +4799,7 @@ type FirewallPolicyAssessment struct { func (x *FirewallPolicyAssessment) Reset() { *x = FirewallPolicyAssessment{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4709,7 +4812,7 @@ func (x *FirewallPolicyAssessment) String() string { func (*FirewallPolicyAssessment) ProtoMessage() {} func (x *FirewallPolicyAssessment) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4722,7 +4825,7 @@ func (x *FirewallPolicyAssessment) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallPolicyAssessment.ProtoReflect.Descriptor instead. func (*FirewallPolicyAssessment) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{47} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48} } func (x *FirewallPolicyAssessment) GetError() *status.Status { @@ -4760,7 +4863,7 @@ type FirewallAction struct { func (x *FirewallAction) Reset() { *x = FirewallAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4773,7 +4876,7 @@ func (x *FirewallAction) String() string { func (*FirewallAction) ProtoMessage() {} func (x *FirewallAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4786,7 +4889,7 @@ func (x *FirewallAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction.ProtoReflect.Descriptor instead. func (*FirewallAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49} } func (m *FirewallAction) GetFirewallActionOneof() isFirewallAction_FirewallActionOneof { @@ -4931,7 +5034,7 @@ type FirewallPolicy struct { func (x *FirewallPolicy) Reset() { *x = FirewallPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4944,7 +5047,7 @@ func (x *FirewallPolicy) String() string { func (*FirewallPolicy) ProtoMessage() {} func (x *FirewallPolicy) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4957,7 +5060,7 @@ func (x *FirewallPolicy) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallPolicy.ProtoReflect.Descriptor instead. func (*FirewallPolicy) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{50} } func (x *FirewallPolicy) GetName() string { @@ -5020,7 +5123,7 @@ type ListRelatedAccountGroupMembershipsRequest struct { func (x *ListRelatedAccountGroupMembershipsRequest) Reset() { *x = ListRelatedAccountGroupMembershipsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[50] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5033,7 +5136,7 @@ func (x *ListRelatedAccountGroupMembershipsRequest) String() string { func (*ListRelatedAccountGroupMembershipsRequest) ProtoMessage() {} func (x *ListRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[50] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5046,7 +5149,7 @@ func (x *ListRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect. // Deprecated: Use ListRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead. func (*ListRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{50} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{51} } func (x *ListRelatedAccountGroupMembershipsRequest) GetParent() string { @@ -5086,7 +5189,7 @@ type ListRelatedAccountGroupMembershipsResponse struct { func (x *ListRelatedAccountGroupMembershipsResponse) Reset() { *x = ListRelatedAccountGroupMembershipsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[51] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5099,7 +5202,7 @@ func (x *ListRelatedAccountGroupMembershipsResponse) String() string { func (*ListRelatedAccountGroupMembershipsResponse) ProtoMessage() {} func (x *ListRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[51] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5112,7 +5215,7 @@ func (x *ListRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect // Deprecated: Use ListRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead. func (*ListRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{51} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{52} } func (x *ListRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership { @@ -5154,7 +5257,7 @@ type ListRelatedAccountGroupsRequest struct { func (x *ListRelatedAccountGroupsRequest) Reset() { *x = ListRelatedAccountGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[52] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5167,7 +5270,7 @@ func (x *ListRelatedAccountGroupsRequest) String() string { func (*ListRelatedAccountGroupsRequest) ProtoMessage() {} func (x *ListRelatedAccountGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[52] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5180,7 +5283,7 @@ func (x *ListRelatedAccountGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRelatedAccountGroupsRequest.ProtoReflect.Descriptor instead. func (*ListRelatedAccountGroupsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{52} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{53} } func (x *ListRelatedAccountGroupsRequest) GetParent() string { @@ -5220,7 +5323,7 @@ type ListRelatedAccountGroupsResponse struct { func (x *ListRelatedAccountGroupsResponse) Reset() { *x = ListRelatedAccountGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[53] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5233,7 +5336,7 @@ func (x *ListRelatedAccountGroupsResponse) String() string { func (*ListRelatedAccountGroupsResponse) ProtoMessage() {} func (x *ListRelatedAccountGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[53] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5246,7 +5349,7 @@ func (x *ListRelatedAccountGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRelatedAccountGroupsResponse.ProtoReflect.Descriptor instead. func (*ListRelatedAccountGroupsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{53} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{54} } func (x *ListRelatedAccountGroupsResponse) GetRelatedAccountGroups() []*RelatedAccountGroup { @@ -5303,7 +5406,7 @@ type SearchRelatedAccountGroupMembershipsRequest struct { func (x *SearchRelatedAccountGroupMembershipsRequest) Reset() { *x = SearchRelatedAccountGroupMembershipsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[54] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5316,7 +5419,7 @@ func (x *SearchRelatedAccountGroupMembershipsRequest) String() string { func (*SearchRelatedAccountGroupMembershipsRequest) ProtoMessage() {} func (x *SearchRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[54] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5329,7 +5432,7 @@ func (x *SearchRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflec // Deprecated: Use SearchRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead. func (*SearchRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{54} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{55} } func (x *SearchRelatedAccountGroupMembershipsRequest) GetProject() string { @@ -5384,7 +5487,7 @@ type SearchRelatedAccountGroupMembershipsResponse struct { func (x *SearchRelatedAccountGroupMembershipsResponse) Reset() { *x = SearchRelatedAccountGroupMembershipsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[55] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5397,7 +5500,7 @@ func (x *SearchRelatedAccountGroupMembershipsResponse) String() string { func (*SearchRelatedAccountGroupMembershipsResponse) ProtoMessage() {} func (x *SearchRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[55] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5410,7 +5513,7 @@ func (x *SearchRelatedAccountGroupMembershipsResponse) ProtoReflect() protorefle // Deprecated: Use SearchRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead. func (*SearchRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{55} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{56} } func (x *SearchRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership { @@ -5427,6 +5530,104 @@ func (x *SearchRelatedAccountGroupMembershipsResponse) GetNextPageToken() string return "" } +// The AddIpOverride request message. +type AddIpOverrideRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the key to which the IP override is added, in the + // format `projects/{project}/keys/{key}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. IP override added to the key. + IpOverrideData *IpOverrideData `protobuf:"bytes,2,opt,name=ip_override_data,json=ipOverrideData,proto3" json:"ip_override_data,omitempty"` +} + +func (x *AddIpOverrideRequest) Reset() { + *x = AddIpOverrideRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddIpOverrideRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddIpOverrideRequest) ProtoMessage() {} + +func (x *AddIpOverrideRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[57] + 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 AddIpOverrideRequest.ProtoReflect.Descriptor instead. +func (*AddIpOverrideRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{57} +} + +func (x *AddIpOverrideRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AddIpOverrideRequest) GetIpOverrideData() *IpOverrideData { + if x != nil { + return x.IpOverrideData + } + return nil +} + +// Response for AddIpOverride. +type AddIpOverrideResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddIpOverrideResponse) Reset() { + *x = AddIpOverrideResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddIpOverrideResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddIpOverrideResponse) ProtoMessage() {} + +func (x *AddIpOverrideResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[58] + 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 AddIpOverrideResponse.ProtoReflect.Descriptor instead. +func (*AddIpOverrideResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{58} +} + // A membership in a group of related accounts. type RelatedAccountGroupMembership struct { state protoimpl.MessageState @@ -5452,7 +5653,7 @@ type RelatedAccountGroupMembership struct { func (x *RelatedAccountGroupMembership) Reset() { *x = RelatedAccountGroupMembership{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[56] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5465,7 +5666,7 @@ func (x *RelatedAccountGroupMembership) String() string { func (*RelatedAccountGroupMembership) ProtoMessage() {} func (x *RelatedAccountGroupMembership) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[56] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5478,7 +5679,7 @@ func (x *RelatedAccountGroupMembership) ProtoReflect() protoreflect.Message { // Deprecated: Use RelatedAccountGroupMembership.ProtoReflect.Descriptor instead. func (*RelatedAccountGroupMembership) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{56} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{59} } func (x *RelatedAccountGroupMembership) GetName() string { @@ -5518,7 +5719,7 @@ type RelatedAccountGroup struct { func (x *RelatedAccountGroup) Reset() { *x = RelatedAccountGroup{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[57] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5531,7 +5732,7 @@ func (x *RelatedAccountGroup) String() string { func (*RelatedAccountGroup) ProtoMessage() {} func (x *RelatedAccountGroup) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[57] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5544,7 +5745,7 @@ func (x *RelatedAccountGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use RelatedAccountGroup.ProtoReflect.Descriptor instead. func (*RelatedAccountGroup) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{57} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{60} } func (x *RelatedAccountGroup) GetName() string { @@ -5570,7 +5771,7 @@ type WafSettings struct { func (x *WafSettings) Reset() { *x = WafSettings{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[58] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5583,7 +5784,7 @@ func (x *WafSettings) String() string { func (*WafSettings) ProtoMessage() {} func (x *WafSettings) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[58] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5596,7 +5797,7 @@ func (x *WafSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use WafSettings.ProtoReflect.Descriptor instead. func (*WafSettings) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{58} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{61} } func (x *WafSettings) GetWafService() WafSettings_WafService { @@ -5613,47 +5814,111 @@ func (x *WafSettings) GetWafFeature() WafSettings_WafFeature { return WafSettings_WAF_FEATURE_UNSPECIFIED } -// Structured address format for billing and shipping addresses. -type TransactionData_Address struct { +// Information about the IP or IP range override. +type IpOverrideData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. The recipient name, potentially including information such as - // "care of". - Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"` - // Optional. The first lines of the address. The first line generally - // contains the street name and number, and further lines may include - // information such as an apartment number. - Address []string `protobuf:"bytes,2,rep,name=address,proto3" json:"address,omitempty"` - // Optional. The town/city of the address. - Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` - // Optional. The state, province, or otherwise administrative area of the - // address. - AdministrativeArea string `protobuf:"bytes,4,opt,name=administrative_area,json=administrativeArea,proto3" json:"administrative_area,omitempty"` - // Optional. The CLDR country/region of the address. - RegionCode string `protobuf:"bytes,5,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` - // Optional. The postal or ZIP code of the address. - PostalCode string `protobuf:"bytes,6,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` + // Required. The IP address to override (can be IPv4, IPv6 or CIDR). + // The IP override must be a valid IPv4 or IPv6 address, or a CIDR range. + // The IP override must be a public IP address. + // Example of IPv4: 168.192.5.6 + // Example of IPv6: 2001:0000:130F:0000:0000:09C0:876A:130B + // Example of IPv4 with CIDR: 168.192.5.0/24 + // Example of IPv6 with CIDR: 2001:0DB8:1234::/48 + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + // Required. Describes the type of IP override. + OverrideType IpOverrideData_OverrideType `protobuf:"varint,3,opt,name=override_type,json=overrideType,proto3,enum=google.cloud.recaptchaenterprise.v1.IpOverrideData_OverrideType" json:"override_type,omitempty"` } -func (x *TransactionData_Address) Reset() { - *x = TransactionData_Address{} +func (x *IpOverrideData) Reset() { + *x = IpOverrideData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[59] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransactionData_Address) String() string { +func (x *IpOverrideData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransactionData_Address) ProtoMessage() {} +func (*IpOverrideData) ProtoMessage() {} -func (x *TransactionData_Address) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[59] +func (x *IpOverrideData) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[62] + 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 IpOverrideData.ProtoReflect.Descriptor instead. +func (*IpOverrideData) Descriptor() ([]byte, []int) { + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{62} +} + +func (x *IpOverrideData) GetIp() string { + if x != nil { + return x.Ip + } + return "" +} + +func (x *IpOverrideData) GetOverrideType() IpOverrideData_OverrideType { + if x != nil { + return x.OverrideType + } + return IpOverrideData_OVERRIDE_TYPE_UNSPECIFIED +} + +// Structured address format for billing and shipping addresses. +type TransactionData_Address struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The recipient name, potentially including information such as + // "care of". + Recipient string `protobuf:"bytes,1,opt,name=recipient,proto3" json:"recipient,omitempty"` + // Optional. The first lines of the address. The first line generally + // contains the street name and number, and further lines may include + // information such as an apartment number. + Address []string `protobuf:"bytes,2,rep,name=address,proto3" json:"address,omitempty"` + // Optional. The town/city of the address. + Locality string `protobuf:"bytes,3,opt,name=locality,proto3" json:"locality,omitempty"` + // Optional. The state, province, or otherwise administrative area of the + // address. + AdministrativeArea string `protobuf:"bytes,4,opt,name=administrative_area,json=administrativeArea,proto3" json:"administrative_area,omitempty"` + // Optional. The CLDR country/region of the address. + RegionCode string `protobuf:"bytes,5,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"` + // Optional. The postal or ZIP code of the address. + PostalCode string `protobuf:"bytes,6,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"` +} + +func (x *TransactionData_Address) Reset() { + *x = TransactionData_Address{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionData_Address) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionData_Address) ProtoMessage() {} + +func (x *TransactionData_Address) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5738,7 +6003,7 @@ type TransactionData_User struct { func (x *TransactionData_User) Reset() { *x = TransactionData_User{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[60] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5751,7 +6016,7 @@ func (x *TransactionData_User) String() string { func (*TransactionData_User) ProtoMessage() {} func (x *TransactionData_User) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[60] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5830,7 +6095,7 @@ type TransactionData_Item struct { func (x *TransactionData_Item) Reset() { *x = TransactionData_Item{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[61] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5843,7 +6108,7 @@ func (x *TransactionData_Item) String() string { func (*TransactionData_Item) ProtoMessage() {} func (x *TransactionData_Item) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[61] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5909,7 +6174,7 @@ type TransactionData_GatewayInfo struct { func (x *TransactionData_GatewayInfo) Reset() { *x = TransactionData_GatewayInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[62] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5922,7 +6187,7 @@ func (x *TransactionData_GatewayInfo) String() string { func (*TransactionData_GatewayInfo) ProtoMessage() {} func (x *TransactionData_GatewayInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[62] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5981,7 +6246,7 @@ type FraudPreventionAssessment_StolenInstrumentVerdict struct { func (x *FraudPreventionAssessment_StolenInstrumentVerdict) Reset() { *x = FraudPreventionAssessment_StolenInstrumentVerdict{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[63] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5994,7 +6259,7 @@ func (x *FraudPreventionAssessment_StolenInstrumentVerdict) String() string { func (*FraudPreventionAssessment_StolenInstrumentVerdict) ProtoMessage() {} func (x *FraudPreventionAssessment_StolenInstrumentVerdict) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[63] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6032,7 +6297,7 @@ type FraudPreventionAssessment_CardTestingVerdict struct { func (x *FraudPreventionAssessment_CardTestingVerdict) Reset() { *x = FraudPreventionAssessment_CardTestingVerdict{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[64] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6045,7 +6310,7 @@ func (x *FraudPreventionAssessment_CardTestingVerdict) String() string { func (*FraudPreventionAssessment_CardTestingVerdict) ProtoMessage() {} func (x *FraudPreventionAssessment_CardTestingVerdict) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[64] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6083,7 +6348,7 @@ type FraudPreventionAssessment_BehavioralTrustVerdict struct { func (x *FraudPreventionAssessment_BehavioralTrustVerdict) Reset() { *x = FraudPreventionAssessment_BehavioralTrustVerdict{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[65] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6096,7 +6361,7 @@ func (x *FraudPreventionAssessment_BehavioralTrustVerdict) String() string { func (*FraudPreventionAssessment_BehavioralTrustVerdict) ProtoMessage() {} func (x *FraudPreventionAssessment_BehavioralTrustVerdict) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[65] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6137,7 +6402,7 @@ type FraudSignals_UserSignals struct { func (x *FraudSignals_UserSignals) Reset() { *x = FraudSignals_UserSignals{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[66] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6150,7 +6415,7 @@ func (x *FraudSignals_UserSignals) String() string { func (*FraudSignals_UserSignals) ProtoMessage() {} func (x *FraudSignals_UserSignals) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[66] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6193,7 +6458,7 @@ type FraudSignals_CardSignals struct { func (x *FraudSignals_CardSignals) Reset() { *x = FraudSignals_CardSignals{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[67] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6206,7 +6471,7 @@ func (x *FraudSignals_CardSignals) String() string { func (*FraudSignals_CardSignals) ProtoMessage() {} func (x *FraudSignals_CardSignals) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[67] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6239,7 +6504,7 @@ type FirewallAction_AllowAction struct { func (x *FirewallAction_AllowAction) Reset() { *x = FirewallAction_AllowAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[71] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6252,7 +6517,7 @@ func (x *FirewallAction_AllowAction) String() string { func (*FirewallAction_AllowAction) ProtoMessage() {} func (x *FirewallAction_AllowAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[71] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6265,7 +6530,7 @@ func (x *FirewallAction_AllowAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction_AllowAction.ProtoReflect.Descriptor instead. func (*FirewallAction_AllowAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 0} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 0} } // A block action serves an HTTP error code a prevents the request from @@ -6279,7 +6544,7 @@ type FirewallAction_BlockAction struct { func (x *FirewallAction_BlockAction) Reset() { *x = FirewallAction_BlockAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[72] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6292,7 +6557,7 @@ func (x *FirewallAction_BlockAction) String() string { func (*FirewallAction_BlockAction) ProtoMessage() {} func (x *FirewallAction_BlockAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[72] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6305,7 +6570,7 @@ func (x *FirewallAction_BlockAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction_BlockAction.ProtoReflect.Descriptor instead. func (*FirewallAction_BlockAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 1} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 1} } // An include reCAPTCHA script action involves injecting reCAPTCHA JavaScript @@ -6322,7 +6587,7 @@ type FirewallAction_IncludeRecaptchaScriptAction struct { func (x *FirewallAction_IncludeRecaptchaScriptAction) Reset() { *x = FirewallAction_IncludeRecaptchaScriptAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[73] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6335,7 +6600,7 @@ func (x *FirewallAction_IncludeRecaptchaScriptAction) String() string { func (*FirewallAction_IncludeRecaptchaScriptAction) ProtoMessage() {} func (x *FirewallAction_IncludeRecaptchaScriptAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[73] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6348,7 +6613,7 @@ func (x *FirewallAction_IncludeRecaptchaScriptAction) ProtoReflect() protoreflec // Deprecated: Use FirewallAction_IncludeRecaptchaScriptAction.ProtoReflect.Descriptor instead. func (*FirewallAction_IncludeRecaptchaScriptAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 2} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 2} } // A redirect action returns a 307 (temporary redirect) response, pointing @@ -6362,7 +6627,7 @@ type FirewallAction_RedirectAction struct { func (x *FirewallAction_RedirectAction) Reset() { *x = FirewallAction_RedirectAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[74] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6375,7 +6640,7 @@ func (x *FirewallAction_RedirectAction) String() string { func (*FirewallAction_RedirectAction) ProtoMessage() {} func (x *FirewallAction_RedirectAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[74] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6388,7 +6653,7 @@ func (x *FirewallAction_RedirectAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction_RedirectAction.ProtoReflect.Descriptor instead. func (*FirewallAction_RedirectAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 3} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 3} } // A substitute action transparently serves a different page than the one @@ -6406,7 +6671,7 @@ type FirewallAction_SubstituteAction struct { func (x *FirewallAction_SubstituteAction) Reset() { *x = FirewallAction_SubstituteAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6419,7 +6684,7 @@ func (x *FirewallAction_SubstituteAction) String() string { func (*FirewallAction_SubstituteAction) ProtoMessage() {} func (x *FirewallAction_SubstituteAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6432,7 +6697,7 @@ func (x *FirewallAction_SubstituteAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction_SubstituteAction.ProtoReflect.Descriptor instead. func (*FirewallAction_SubstituteAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 4} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 4} } func (x *FirewallAction_SubstituteAction) GetPath() string { @@ -6459,7 +6724,7 @@ type FirewallAction_SetHeaderAction struct { func (x *FirewallAction_SetHeaderAction) Reset() { *x = FirewallAction_SetHeaderAction{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6472,7 +6737,7 @@ func (x *FirewallAction_SetHeaderAction) String() string { func (*FirewallAction_SetHeaderAction) ProtoMessage() {} func (x *FirewallAction_SetHeaderAction) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76] + mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6485,7 +6750,7 @@ func (x *FirewallAction_SetHeaderAction) ProtoReflect() protoreflect.Message { // Deprecated: Use FirewallAction_SetHeaderAction.ProtoReflect.Descriptor instead. func (*FirewallAction_SetHeaderAction) Descriptor() ([]byte, []int) { - return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{48, 5} + return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{49, 5} } func (x *FirewallAction_SetHeaderAction) GetKey() string { @@ -7345,7 +7610,7 @@ var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x22, 0xd9, 0x06, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x79, 0x22, 0xbf, 0x07, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, @@ -7367,279 +7632,343 @@ var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6f, 0x73, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x0f, 0x74, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0c, - 0x77, 0x61, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x77, 0x61, 0x66, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x3a, 0x55, 0xea, 0x41, 0x52, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, - 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x12, 0x1d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2a, 0x04, 0x6b, - 0x65, 0x79, 0x73, 0x32, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x92, 0x02, - 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x74, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x76, 0x0a, 0x11, 0x74, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x64, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, + 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4b, 0x65, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x61, 0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x0c, 0x77, 0x61, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, + 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0b, 0x77, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x55, 0xea, 0x41, 0x52, 0x0a, 0x26, 0x72, 0x65, + 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, + 0x65, 0x79, 0x7d, 0x2a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x32, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x13, + 0x0a, 0x11, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x76, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6c, + 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, + 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x1d, + 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x43, 0x41, 0x50, 0x54, 0x43, 0x48, 0x41, 0x10, 0x01, 0x12, 0x18, + 0x0a, 0x14, 0x55, 0x4e, 0x53, 0x4f, 0x4c, 0x56, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, + 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x22, 0x85, 0x05, 0x0a, 0x0e, 0x57, 0x65, 0x62, + 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0f, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x41, 0x6d, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x73, 0x0a, 0x10, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, - 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, - 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, - 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x43, - 0x41, 0x50, 0x54, 0x43, 0x48, 0x41, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x53, 0x4f, - 0x4c, 0x56, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, - 0x10, 0x02, 0x22, 0x85, 0x05, 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, - 0x6c, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6d, - 0x70, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6d, 0x70, 0x54, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x73, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, - 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x1d, 0x63, - 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, + 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x98, 0x01, 0x0a, 0x1d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, + 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x68, + 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1b, + 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, + 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x56, + 0x49, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x22, 0x76, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6c, + 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x48, 0x41, 0x4c, 0x4c, + 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, + 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x41, 0x42, 0x49, 0x4c, + 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, + 0x22, 0xe7, 0x01, 0x0a, 0x12, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3a, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x29, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x24, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x6e, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x01, 0x0a, 0x0e, 0x49, + 0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x34, 0x0a, + 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x68, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x5f, + 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, - 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, - 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, - 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x43, - 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x42, 0x4f, - 0x58, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x56, 0x49, 0x53, 0x49, 0x42, 0x4c, 0x45, - 0x10, 0x03, 0x22, 0x76, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x53, - 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, - 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, - 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x22, 0xe7, 0x01, 0x0a, 0x12, 0x41, - 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x3a, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, - 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x37, 0x0a, - 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x29, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x61, 0x70, 0x70, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x24, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x6f, 0x6e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x41, 0x70, 0x70, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x01, 0x0a, 0x0e, 0x49, 0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x31, 0x0a, - 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x73, - 0x12, 0x68, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x44, 0x65, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, + 0x61, 0x70, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x49, 0x64, + 0x22, 0x14, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x75, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x44, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0b, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xc3, 0x01, + 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, + 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x1a, 0x78, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, + 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa8, 0x01, 0x0a, + 0x10, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0e, 0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x73, + 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x18, 0x46, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x49, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x44, - 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x10, 0x41, 0x70, - 0x70, 0x6c, 0x65, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, - 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6b, 0x65, - 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, - 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65, - 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xdc, 0x06, 0x0a, 0x0e, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x05, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x12, 0x57, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x8c, 0x01, 0x0a, 0x18, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, - 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, - 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x78, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, - 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xa8, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, - 0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x73, - 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xac, 0x01, 0x0a, 0x18, - 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x73, - 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x65, - 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xdc, 0x06, 0x0a, 0x0e, 0x46, - 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, - 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x63, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x63, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x60, 0x0a, 0x08, 0x72, 0x65, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x57, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, - 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x8c, 0x01, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x61, - 0x70, 0x74, 0x63, 0x68, 0x61, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, - 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, - 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x60, - 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x66, 0x0a, 0x0a, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x12, 0x66, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, - 0x74, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, - 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x0d, - 0x0a, 0x0b, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0d, 0x0a, - 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1e, 0x0a, 0x1c, - 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x10, 0x0a, 0x0e, - 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x2b, - 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x43, 0x0a, 0x0f, 0x53, - 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x42, 0x17, 0x0a, 0x15, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xf2, 0x02, 0x0a, 0x0e, 0x46, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x8f, 0x01, 0xea, - 0x41, 0x8b, 0x01, 0x0a, 0x31, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2a, 0x10, 0x66, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x32, 0x0e, - 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xd3, - 0x01, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x42, 0x12, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, + 0x74, 0x75, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x0a, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x09, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x0d, 0x0a, 0x0b, 0x41, 0x6c, + 0x6c, 0x6f, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0d, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1e, 0x0a, 0x1c, 0x49, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x2b, 0x0a, 0x10, 0x53, 0x75, + 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x43, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x17, 0x0a, 0x15, + 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0xf2, 0x02, 0x0a, 0x0e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, + 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x8f, 0x01, 0xea, 0x41, 0x8b, 0x01, 0x0a, + 0x31, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, + 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2a, 0x10, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, + 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x32, 0x0e, 0x66, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xd3, 0x01, 0x0a, 0x29, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x42, + 0x12, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0xe4, 0x01, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x8d, 0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, + 0x1e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 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, 0xbf, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x38, 0x12, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, + 0x0a, 0x16, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, + 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x99, 0x02, 0x0a, 0x2b, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 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, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x11, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xe0, 0x41, 0x01, 0x18, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0xe6, 0x01, 0x0a, 0x2c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, @@ -7653,397 +7982,382 @@ var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 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, 0xbf, 0x01, 0x0a, 0x1f, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x56, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x3e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x38, 0x12, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xba, 0x01, - 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x16, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbe, 0x01, 0x0a, 0x14, + 0x41, 0x64, 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, + 0x65, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x10, 0x69, 0x70, 0x5f, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x14, 0x72, 0x65, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, + 0x69, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x69, 0x70, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x17, 0x0a, 0x15, + 0x41, 0x64, 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x02, 0x0a, 0x1d, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x08, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x3a, 0xdd, 0x01, 0xea, 0x41, 0xd9, 0x01, 0x0a, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, + 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 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, 0x99, 0x02, 0x0a, 0x2b, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x56, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x7d, 0x2a, 0x1e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 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, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, - 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x05, 0xe0, 0x41, 0x01, 0x18, 0x01, 0x52, - 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe6, 0x01, 0x0a, 0x2c, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x1e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 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, - 0xea, 0x02, 0x0a, 0x1d, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xe0, 0x41, 0x08, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x11, - 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, - 0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x3a, 0xdd, 0x01, 0xea, - 0x41, 0xd9, 0x01, 0x0a, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x69, 0x70, 0x73, 0x32, 0x1d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x22, 0xda, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x08, 0xe0, 0x41, 0x02, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0xa6, 0x01, 0xea, 0x41, 0xa2, 0x01, 0x0a, 0x36, 0x72, + 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, - 0x2f, 0x7b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x7d, 0x2a, 0x1e, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x32, 0x1d, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x22, 0xda, 0x01, 0x0a, - 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x08, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x3a, 0xa6, 0x01, 0xea, 0x41, 0xa2, 0x01, 0x0a, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, - 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2a, 0x14, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x32, 0x13, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x93, 0x03, 0x0a, 0x0b, 0x57, 0x61, - 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x61, 0x0a, 0x0b, 0x77, 0x61, 0x66, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0a, 0x77, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x0b, - 0x77, 0x61, 0x66, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, - 0x6f, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, - 0x17, 0x57, 0x41, 0x46, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, - 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x11, - 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, - 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, - 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, - 0x22, 0x4d, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, - 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x43, - 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x53, 0x54, 0x4c, 0x59, 0x10, 0x03, 0x12, - 0x0e, 0x0a, 0x0a, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x46, 0x4c, 0x41, 0x52, 0x45, 0x10, 0x04, 0x32, - 0xd9, 0x1f, 0x0a, 0x1a, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xce, - 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x6f, 0x75, 0x70, 0x7d, 0x2a, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x32, 0x13, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, + 0x93, 0x03, 0x0a, 0x0b, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x61, 0x0a, 0x0b, 0x77, 0x61, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x61, 0x0a, 0x0b, 0x77, 0x61, 0x66, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, + 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x50, 0x41, + 0x47, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, + 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x22, 0x4d, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x53, 0x45, 0x52, 0x56, + 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x06, 0x0a, 0x02, 0x43, 0x41, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x53, + 0x54, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x46, 0x4c, + 0x41, 0x52, 0x45, 0x10, 0x04, 0x22, 0xd3, 0x01, 0x0a, 0x0e, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, + 0x72, 0x69, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, + 0x04, 0x52, 0x02, 0x69, 0x70, 0x12, 0x6a, 0x0a, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x38, 0x0a, 0x0c, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x32, 0xb1, 0x21, 0x0a, 0x1a, + 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x69, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xce, 0x01, 0x0a, 0x10, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4b, + 0xda, 0x41, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x0a, 0x61, 0x73, 0x73, 0x65, + 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xe0, 0x01, 0x0a, 0x12, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x49, 0xda, 0x41, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, + 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0xa4, + 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, - 0x6e, 0x74, 0x22, 0x4b, 0xda, 0x41, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x73, - 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x0a, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0xe0, 0x01, 0x0a, 0x12, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, - 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0xda, 0x41, 0x0f, 0x6e, 0x61, 0x6d, 0x65, - 0x2c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, - 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x36, 0xda, + 0x41, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x3a, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, + 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, + 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xe7, + 0x01, 0x0a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, + 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x03, 0x6b, 0x65, 0x79, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, - 0x79, 0x22, 0x36, 0xda, 0x41, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6b, 0x65, 0x79, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x1c, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x08, 0x4c, 0x69, - 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, + 0x79, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, + 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xad, + 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65, - 0x79, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, - 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x43, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, - 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, - 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, - 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x03, 0x6b, 0x65, - 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6b, 0x65, - 0x79, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, - 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x93, 0x01, 0x0a, - 0x06, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x3f, 0xda, + 0x41, 0x0f, 0x6b, 0x65, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x03, 0x6b, 0x65, 0x79, 0x32, 0x20, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x87, + 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 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, 0x2b, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x0a, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, - 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2a, 0x7d, 0x3a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0xd5, 0x01, 0x0a, 0x0d, 0x41, + 0x64, 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x39, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, - 0x79, 0x22, 0x3f, 0xda, 0x41, 0x0f, 0x6b, 0x65, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x03, 0x6b, 0x65, 0x79, - 0x32, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, - 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, - 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, - 0x2b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9f, 0x01, 0x0a, - 0x0a, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, - 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, - 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0xa7, - 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x36, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, - 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, + 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4d, 0xda, 0x41, 0x15, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x69, 0x70, 0x5f, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x49, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, + 0x64, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, + 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x33, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, + 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x7d, 0x12, 0xe9, 0x01, 0x0a, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x22, 0x33, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x2f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x7d, 0x12, 0xe9, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5a, 0xda, 0x41, + 0x16, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x0f, 0x66, + 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x28, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xd6, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, - 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x5a, 0xda, 0x41, 0x16, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x12, 0xd6, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x40, 0x2e, + 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x12, 0xc0, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, + 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x37, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xfe, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, + 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, + 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, - 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x39, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0xc0, 0x01, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x37, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, - 0x12, 0xfe, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, - 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, - 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x22, 0x6f, 0xda, 0x41, 0x1b, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x3a, 0x0f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x32, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x66, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x69, - 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, - 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, - 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x37, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, - 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf0, 0x01, - 0x0a, 0x17, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x22, 0x6f, 0xda, 0x41, 0x1b, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, + 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x3a, 0x0f, 0x66, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x32, 0x38, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, - 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x72, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0xe6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x44, 0x2e, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x37, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x2a, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x69, + 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xf0, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x72, + 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x92, 0x02, 0x0a, 0x22, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, - 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0xb2, - 0x02, 0x0a, 0x24, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x72, 0x65, 0x77, + 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x0c, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x2c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, + 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x72, 0x65, + 0x77, 0x61, 0x6c, 0x6c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x3a, 0x72, 0x65, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0xe6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x12, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, - 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, + 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, + 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x92, 0x02, + 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda, 0x41, - 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, - 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x3a, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, - 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 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, 0x99, 0x02, 0x0a, 0x21, - 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, + 0x68, 0x69, 0x70, 0x73, 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x73, 0x12, 0xb2, 0x02, 0x0a, 0x24, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x50, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x42, 0x18, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5c, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, - 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x70, 0x62, 0x3b, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x70, 0x62, 0xa2, 0x02, 0x04, 0x47, 0x43, - 0x52, 0x45, 0xaa, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, - 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x51, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, + 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x65, 0xda, 0x41, 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, + 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x72, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 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, + 0x99, 0x02, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x18, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x5c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, + 0x69, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x70, 0x62, 0x3b, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, + 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x70, 0x62, 0xa2, + 0x02, 0x04, 0x47, 0x43, 0x52, 0x45, 0xaa, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x23, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x52, 0x65, 0x63, 0x61, + 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5c, + 0x56, 0x31, 0xea, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -8058,8 +8372,8 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescG return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData } -var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes = make([]protoimpl.EnumInfo, 15) -var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes = make([]protoimpl.MessageInfo, 77) +var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes = make([]protoimpl.EnumInfo, 16) +var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes = make([]protoimpl.MessageInfo, 81) var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = []any{ (TransactionEvent_TransactionEventType)(0), // 0: google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventType (AnnotateAssessmentRequest_Annotation)(0), // 1: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation @@ -8076,214 +8390,224 @@ var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = (WebKeySettings_ChallengeSecurityPreference)(0), // 12: google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference (WafSettings_WafFeature)(0), // 13: google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature (WafSettings_WafService)(0), // 14: google.cloud.recaptchaenterprise.v1.WafSettings.WafService - (*CreateAssessmentRequest)(nil), // 15: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest - (*TransactionEvent)(nil), // 16: google.cloud.recaptchaenterprise.v1.TransactionEvent - (*AnnotateAssessmentRequest)(nil), // 17: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest - (*AnnotateAssessmentResponse)(nil), // 18: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse - (*EndpointVerificationInfo)(nil), // 19: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo - (*AccountVerificationInfo)(nil), // 20: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo - (*PrivatePasswordLeakVerification)(nil), // 21: google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification - (*Assessment)(nil), // 22: google.cloud.recaptchaenterprise.v1.Assessment - (*Event)(nil), // 23: google.cloud.recaptchaenterprise.v1.Event - (*TransactionData)(nil), // 24: google.cloud.recaptchaenterprise.v1.TransactionData - (*UserInfo)(nil), // 25: google.cloud.recaptchaenterprise.v1.UserInfo - (*UserId)(nil), // 26: google.cloud.recaptchaenterprise.v1.UserId - (*RiskAnalysis)(nil), // 27: google.cloud.recaptchaenterprise.v1.RiskAnalysis - (*TokenProperties)(nil), // 28: google.cloud.recaptchaenterprise.v1.TokenProperties - (*FraudPreventionAssessment)(nil), // 29: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment - (*FraudSignals)(nil), // 30: google.cloud.recaptchaenterprise.v1.FraudSignals - (*SmsTollFraudVerdict)(nil), // 31: google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict - (*PhoneFraudAssessment)(nil), // 32: google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment - (*AccountDefenderAssessment)(nil), // 33: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment - (*CreateKeyRequest)(nil), // 34: google.cloud.recaptchaenterprise.v1.CreateKeyRequest - (*ListKeysRequest)(nil), // 35: google.cloud.recaptchaenterprise.v1.ListKeysRequest - (*ListKeysResponse)(nil), // 36: google.cloud.recaptchaenterprise.v1.ListKeysResponse - (*RetrieveLegacySecretKeyRequest)(nil), // 37: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest - (*GetKeyRequest)(nil), // 38: google.cloud.recaptchaenterprise.v1.GetKeyRequest - (*UpdateKeyRequest)(nil), // 39: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest - (*DeleteKeyRequest)(nil), // 40: google.cloud.recaptchaenterprise.v1.DeleteKeyRequest - (*CreateFirewallPolicyRequest)(nil), // 41: google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest - (*ListFirewallPoliciesRequest)(nil), // 42: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest - (*ListFirewallPoliciesResponse)(nil), // 43: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse - (*GetFirewallPolicyRequest)(nil), // 44: google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest - (*UpdateFirewallPolicyRequest)(nil), // 45: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest - (*DeleteFirewallPolicyRequest)(nil), // 46: google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest - (*ReorderFirewallPoliciesRequest)(nil), // 47: google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest - (*ReorderFirewallPoliciesResponse)(nil), // 48: google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse - (*MigrateKeyRequest)(nil), // 49: google.cloud.recaptchaenterprise.v1.MigrateKeyRequest - (*GetMetricsRequest)(nil), // 50: google.cloud.recaptchaenterprise.v1.GetMetricsRequest - (*Metrics)(nil), // 51: google.cloud.recaptchaenterprise.v1.Metrics - (*RetrieveLegacySecretKeyResponse)(nil), // 52: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse - (*Key)(nil), // 53: google.cloud.recaptchaenterprise.v1.Key - (*TestingOptions)(nil), // 54: google.cloud.recaptchaenterprise.v1.TestingOptions - (*WebKeySettings)(nil), // 55: google.cloud.recaptchaenterprise.v1.WebKeySettings - (*AndroidKeySettings)(nil), // 56: google.cloud.recaptchaenterprise.v1.AndroidKeySettings - (*IOSKeySettings)(nil), // 57: google.cloud.recaptchaenterprise.v1.IOSKeySettings - (*AppleDeveloperId)(nil), // 58: google.cloud.recaptchaenterprise.v1.AppleDeveloperId - (*ScoreDistribution)(nil), // 59: google.cloud.recaptchaenterprise.v1.ScoreDistribution - (*ScoreMetrics)(nil), // 60: google.cloud.recaptchaenterprise.v1.ScoreMetrics - (*ChallengeMetrics)(nil), // 61: google.cloud.recaptchaenterprise.v1.ChallengeMetrics - (*FirewallPolicyAssessment)(nil), // 62: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment - (*FirewallAction)(nil), // 63: google.cloud.recaptchaenterprise.v1.FirewallAction - (*FirewallPolicy)(nil), // 64: google.cloud.recaptchaenterprise.v1.FirewallPolicy - (*ListRelatedAccountGroupMembershipsRequest)(nil), // 65: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest - (*ListRelatedAccountGroupMembershipsResponse)(nil), // 66: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse - (*ListRelatedAccountGroupsRequest)(nil), // 67: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest - (*ListRelatedAccountGroupsResponse)(nil), // 68: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse - (*SearchRelatedAccountGroupMembershipsRequest)(nil), // 69: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest - (*SearchRelatedAccountGroupMembershipsResponse)(nil), // 70: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse - (*RelatedAccountGroupMembership)(nil), // 71: google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership - (*RelatedAccountGroup)(nil), // 72: google.cloud.recaptchaenterprise.v1.RelatedAccountGroup - (*WafSettings)(nil), // 73: google.cloud.recaptchaenterprise.v1.WafSettings - (*TransactionData_Address)(nil), // 74: google.cloud.recaptchaenterprise.v1.TransactionData.Address - (*TransactionData_User)(nil), // 75: google.cloud.recaptchaenterprise.v1.TransactionData.User - (*TransactionData_Item)(nil), // 76: google.cloud.recaptchaenterprise.v1.TransactionData.Item - (*TransactionData_GatewayInfo)(nil), // 77: google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo - (*FraudPreventionAssessment_StolenInstrumentVerdict)(nil), // 78: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict - (*FraudPreventionAssessment_CardTestingVerdict)(nil), // 79: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict - (*FraudPreventionAssessment_BehavioralTrustVerdict)(nil), // 80: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdict - (*FraudSignals_UserSignals)(nil), // 81: google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignals - (*FraudSignals_CardSignals)(nil), // 82: google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals - nil, // 83: google.cloud.recaptchaenterprise.v1.Key.LabelsEntry - nil, // 84: google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry - nil, // 85: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry - (*FirewallAction_AllowAction)(nil), // 86: google.cloud.recaptchaenterprise.v1.FirewallAction.AllowAction - (*FirewallAction_BlockAction)(nil), // 87: google.cloud.recaptchaenterprise.v1.FirewallAction.BlockAction - (*FirewallAction_IncludeRecaptchaScriptAction)(nil), // 88: google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptAction - (*FirewallAction_RedirectAction)(nil), // 89: google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectAction - (*FirewallAction_SubstituteAction)(nil), // 90: google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteAction - (*FirewallAction_SetHeaderAction)(nil), // 91: google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderAction - (*timestamppb.Timestamp)(nil), // 92: google.protobuf.Timestamp - (*fieldmaskpb.FieldMask)(nil), // 93: google.protobuf.FieldMask - (*status.Status)(nil), // 94: google.rpc.Status - (*emptypb.Empty)(nil), // 95: google.protobuf.Empty + (IpOverrideData_OverrideType)(0), // 15: google.cloud.recaptchaenterprise.v1.IpOverrideData.OverrideType + (*CreateAssessmentRequest)(nil), // 16: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest + (*TransactionEvent)(nil), // 17: google.cloud.recaptchaenterprise.v1.TransactionEvent + (*AnnotateAssessmentRequest)(nil), // 18: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest + (*AnnotateAssessmentResponse)(nil), // 19: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse + (*EndpointVerificationInfo)(nil), // 20: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo + (*AccountVerificationInfo)(nil), // 21: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo + (*PrivatePasswordLeakVerification)(nil), // 22: google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification + (*Assessment)(nil), // 23: google.cloud.recaptchaenterprise.v1.Assessment + (*Event)(nil), // 24: google.cloud.recaptchaenterprise.v1.Event + (*TransactionData)(nil), // 25: google.cloud.recaptchaenterprise.v1.TransactionData + (*UserInfo)(nil), // 26: google.cloud.recaptchaenterprise.v1.UserInfo + (*UserId)(nil), // 27: google.cloud.recaptchaenterprise.v1.UserId + (*RiskAnalysis)(nil), // 28: google.cloud.recaptchaenterprise.v1.RiskAnalysis + (*TokenProperties)(nil), // 29: google.cloud.recaptchaenterprise.v1.TokenProperties + (*FraudPreventionAssessment)(nil), // 30: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment + (*FraudSignals)(nil), // 31: google.cloud.recaptchaenterprise.v1.FraudSignals + (*SmsTollFraudVerdict)(nil), // 32: google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict + (*PhoneFraudAssessment)(nil), // 33: google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment + (*AccountDefenderAssessment)(nil), // 34: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment + (*CreateKeyRequest)(nil), // 35: google.cloud.recaptchaenterprise.v1.CreateKeyRequest + (*ListKeysRequest)(nil), // 36: google.cloud.recaptchaenterprise.v1.ListKeysRequest + (*ListKeysResponse)(nil), // 37: google.cloud.recaptchaenterprise.v1.ListKeysResponse + (*RetrieveLegacySecretKeyRequest)(nil), // 38: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest + (*GetKeyRequest)(nil), // 39: google.cloud.recaptchaenterprise.v1.GetKeyRequest + (*UpdateKeyRequest)(nil), // 40: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest + (*DeleteKeyRequest)(nil), // 41: google.cloud.recaptchaenterprise.v1.DeleteKeyRequest + (*CreateFirewallPolicyRequest)(nil), // 42: google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest + (*ListFirewallPoliciesRequest)(nil), // 43: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest + (*ListFirewallPoliciesResponse)(nil), // 44: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse + (*GetFirewallPolicyRequest)(nil), // 45: google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest + (*UpdateFirewallPolicyRequest)(nil), // 46: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest + (*DeleteFirewallPolicyRequest)(nil), // 47: google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest + (*ReorderFirewallPoliciesRequest)(nil), // 48: google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest + (*ReorderFirewallPoliciesResponse)(nil), // 49: google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse + (*MigrateKeyRequest)(nil), // 50: google.cloud.recaptchaenterprise.v1.MigrateKeyRequest + (*GetMetricsRequest)(nil), // 51: google.cloud.recaptchaenterprise.v1.GetMetricsRequest + (*Metrics)(nil), // 52: google.cloud.recaptchaenterprise.v1.Metrics + (*RetrieveLegacySecretKeyResponse)(nil), // 53: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse + (*Key)(nil), // 54: google.cloud.recaptchaenterprise.v1.Key + (*TestingOptions)(nil), // 55: google.cloud.recaptchaenterprise.v1.TestingOptions + (*WebKeySettings)(nil), // 56: google.cloud.recaptchaenterprise.v1.WebKeySettings + (*AndroidKeySettings)(nil), // 57: google.cloud.recaptchaenterprise.v1.AndroidKeySettings + (*IOSKeySettings)(nil), // 58: google.cloud.recaptchaenterprise.v1.IOSKeySettings + (*ExpressKeySettings)(nil), // 59: google.cloud.recaptchaenterprise.v1.ExpressKeySettings + (*AppleDeveloperId)(nil), // 60: google.cloud.recaptchaenterprise.v1.AppleDeveloperId + (*ScoreDistribution)(nil), // 61: google.cloud.recaptchaenterprise.v1.ScoreDistribution + (*ScoreMetrics)(nil), // 62: google.cloud.recaptchaenterprise.v1.ScoreMetrics + (*ChallengeMetrics)(nil), // 63: google.cloud.recaptchaenterprise.v1.ChallengeMetrics + (*FirewallPolicyAssessment)(nil), // 64: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment + (*FirewallAction)(nil), // 65: google.cloud.recaptchaenterprise.v1.FirewallAction + (*FirewallPolicy)(nil), // 66: google.cloud.recaptchaenterprise.v1.FirewallPolicy + (*ListRelatedAccountGroupMembershipsRequest)(nil), // 67: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest + (*ListRelatedAccountGroupMembershipsResponse)(nil), // 68: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse + (*ListRelatedAccountGroupsRequest)(nil), // 69: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest + (*ListRelatedAccountGroupsResponse)(nil), // 70: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse + (*SearchRelatedAccountGroupMembershipsRequest)(nil), // 71: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest + (*SearchRelatedAccountGroupMembershipsResponse)(nil), // 72: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse + (*AddIpOverrideRequest)(nil), // 73: google.cloud.recaptchaenterprise.v1.AddIpOverrideRequest + (*AddIpOverrideResponse)(nil), // 74: google.cloud.recaptchaenterprise.v1.AddIpOverrideResponse + (*RelatedAccountGroupMembership)(nil), // 75: google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership + (*RelatedAccountGroup)(nil), // 76: google.cloud.recaptchaenterprise.v1.RelatedAccountGroup + (*WafSettings)(nil), // 77: google.cloud.recaptchaenterprise.v1.WafSettings + (*IpOverrideData)(nil), // 78: google.cloud.recaptchaenterprise.v1.IpOverrideData + (*TransactionData_Address)(nil), // 79: google.cloud.recaptchaenterprise.v1.TransactionData.Address + (*TransactionData_User)(nil), // 80: google.cloud.recaptchaenterprise.v1.TransactionData.User + (*TransactionData_Item)(nil), // 81: google.cloud.recaptchaenterprise.v1.TransactionData.Item + (*TransactionData_GatewayInfo)(nil), // 82: google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo + (*FraudPreventionAssessment_StolenInstrumentVerdict)(nil), // 83: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict + (*FraudPreventionAssessment_CardTestingVerdict)(nil), // 84: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict + (*FraudPreventionAssessment_BehavioralTrustVerdict)(nil), // 85: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdict + (*FraudSignals_UserSignals)(nil), // 86: google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignals + (*FraudSignals_CardSignals)(nil), // 87: google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals + nil, // 88: google.cloud.recaptchaenterprise.v1.Key.LabelsEntry + nil, // 89: google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry + nil, // 90: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry + (*FirewallAction_AllowAction)(nil), // 91: google.cloud.recaptchaenterprise.v1.FirewallAction.AllowAction + (*FirewallAction_BlockAction)(nil), // 92: google.cloud.recaptchaenterprise.v1.FirewallAction.BlockAction + (*FirewallAction_IncludeRecaptchaScriptAction)(nil), // 93: google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptAction + (*FirewallAction_RedirectAction)(nil), // 94: google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectAction + (*FirewallAction_SubstituteAction)(nil), // 95: google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteAction + (*FirewallAction_SetHeaderAction)(nil), // 96: google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderAction + (*timestamppb.Timestamp)(nil), // 97: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 98: google.protobuf.FieldMask + (*status.Status)(nil), // 99: google.rpc.Status + (*emptypb.Empty)(nil), // 100: google.protobuf.Empty } var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs = []int32{ - 22, // 0: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest.assessment:type_name -> google.cloud.recaptchaenterprise.v1.Assessment + 23, // 0: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest.assessment:type_name -> google.cloud.recaptchaenterprise.v1.Assessment 0, // 1: google.cloud.recaptchaenterprise.v1.TransactionEvent.event_type:type_name -> google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventType - 92, // 2: google.cloud.recaptchaenterprise.v1.TransactionEvent.event_time:type_name -> google.protobuf.Timestamp + 97, // 2: google.cloud.recaptchaenterprise.v1.TransactionEvent.event_time:type_name -> google.protobuf.Timestamp 1, // 3: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.annotation:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation 2, // 4: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.reasons:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason - 16, // 5: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.transaction_event:type_name -> google.cloud.recaptchaenterprise.v1.TransactionEvent - 92, // 6: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo.last_verification_time:type_name -> google.protobuf.Timestamp - 19, // 7: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.endpoints:type_name -> google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo + 17, // 5: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.transaction_event:type_name -> google.cloud.recaptchaenterprise.v1.TransactionEvent + 97, // 6: google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo.last_verification_time:type_name -> google.protobuf.Timestamp + 20, // 7: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.endpoints:type_name -> google.cloud.recaptchaenterprise.v1.EndpointVerificationInfo 3, // 8: google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.latest_verification_result:type_name -> google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.Result - 23, // 9: google.cloud.recaptchaenterprise.v1.Assessment.event:type_name -> google.cloud.recaptchaenterprise.v1.Event - 27, // 10: google.cloud.recaptchaenterprise.v1.Assessment.risk_analysis:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis - 28, // 11: google.cloud.recaptchaenterprise.v1.Assessment.token_properties:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties - 20, // 12: google.cloud.recaptchaenterprise.v1.Assessment.account_verification:type_name -> google.cloud.recaptchaenterprise.v1.AccountVerificationInfo - 33, // 13: google.cloud.recaptchaenterprise.v1.Assessment.account_defender_assessment:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment - 21, // 14: google.cloud.recaptchaenterprise.v1.Assessment.private_password_leak_verification:type_name -> google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification - 62, // 15: google.cloud.recaptchaenterprise.v1.Assessment.firewall_policy_assessment:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment - 29, // 16: google.cloud.recaptchaenterprise.v1.Assessment.fraud_prevention_assessment:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment - 30, // 17: google.cloud.recaptchaenterprise.v1.Assessment.fraud_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals - 32, // 18: google.cloud.recaptchaenterprise.v1.Assessment.phone_fraud_assessment:type_name -> google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment - 24, // 19: google.cloud.recaptchaenterprise.v1.Event.transaction_data:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData - 25, // 20: google.cloud.recaptchaenterprise.v1.Event.user_info:type_name -> google.cloud.recaptchaenterprise.v1.UserInfo + 24, // 9: google.cloud.recaptchaenterprise.v1.Assessment.event:type_name -> google.cloud.recaptchaenterprise.v1.Event + 28, // 10: google.cloud.recaptchaenterprise.v1.Assessment.risk_analysis:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis + 29, // 11: google.cloud.recaptchaenterprise.v1.Assessment.token_properties:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties + 21, // 12: google.cloud.recaptchaenterprise.v1.Assessment.account_verification:type_name -> google.cloud.recaptchaenterprise.v1.AccountVerificationInfo + 34, // 13: google.cloud.recaptchaenterprise.v1.Assessment.account_defender_assessment:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment + 22, // 14: google.cloud.recaptchaenterprise.v1.Assessment.private_password_leak_verification:type_name -> google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification + 64, // 15: google.cloud.recaptchaenterprise.v1.Assessment.firewall_policy_assessment:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment + 30, // 16: google.cloud.recaptchaenterprise.v1.Assessment.fraud_prevention_assessment:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment + 31, // 17: google.cloud.recaptchaenterprise.v1.Assessment.fraud_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals + 33, // 18: google.cloud.recaptchaenterprise.v1.Assessment.phone_fraud_assessment:type_name -> google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment + 25, // 19: google.cloud.recaptchaenterprise.v1.Event.transaction_data:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData + 26, // 20: google.cloud.recaptchaenterprise.v1.Event.user_info:type_name -> google.cloud.recaptchaenterprise.v1.UserInfo 4, // 21: google.cloud.recaptchaenterprise.v1.Event.fraud_prevention:type_name -> google.cloud.recaptchaenterprise.v1.Event.FraudPrevention - 74, // 22: google.cloud.recaptchaenterprise.v1.TransactionData.shipping_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address - 74, // 23: google.cloud.recaptchaenterprise.v1.TransactionData.billing_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address - 75, // 24: google.cloud.recaptchaenterprise.v1.TransactionData.user:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User - 75, // 25: google.cloud.recaptchaenterprise.v1.TransactionData.merchants:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User - 76, // 26: google.cloud.recaptchaenterprise.v1.TransactionData.items:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Item - 77, // 27: google.cloud.recaptchaenterprise.v1.TransactionData.gateway_info:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo - 92, // 28: google.cloud.recaptchaenterprise.v1.UserInfo.create_account_time:type_name -> google.protobuf.Timestamp - 26, // 29: google.cloud.recaptchaenterprise.v1.UserInfo.user_ids:type_name -> google.cloud.recaptchaenterprise.v1.UserId + 79, // 22: google.cloud.recaptchaenterprise.v1.TransactionData.shipping_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address + 79, // 23: google.cloud.recaptchaenterprise.v1.TransactionData.billing_address:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Address + 80, // 24: google.cloud.recaptchaenterprise.v1.TransactionData.user:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User + 80, // 25: google.cloud.recaptchaenterprise.v1.TransactionData.merchants:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.User + 81, // 26: google.cloud.recaptchaenterprise.v1.TransactionData.items:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.Item + 82, // 27: google.cloud.recaptchaenterprise.v1.TransactionData.gateway_info:type_name -> google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfo + 97, // 28: google.cloud.recaptchaenterprise.v1.UserInfo.create_account_time:type_name -> google.protobuf.Timestamp + 27, // 29: google.cloud.recaptchaenterprise.v1.UserInfo.user_ids:type_name -> google.cloud.recaptchaenterprise.v1.UserId 5, // 30: google.cloud.recaptchaenterprise.v1.RiskAnalysis.reasons:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason 6, // 31: google.cloud.recaptchaenterprise.v1.TokenProperties.invalid_reason:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReason - 92, // 32: google.cloud.recaptchaenterprise.v1.TokenProperties.create_time:type_name -> google.protobuf.Timestamp - 78, // 33: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.stolen_instrument_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict - 79, // 34: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.card_testing_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict - 80, // 35: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.behavioral_trust_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdict - 81, // 36: google.cloud.recaptchaenterprise.v1.FraudSignals.user_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignals - 82, // 37: google.cloud.recaptchaenterprise.v1.FraudSignals.card_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals + 97, // 32: google.cloud.recaptchaenterprise.v1.TokenProperties.create_time:type_name -> google.protobuf.Timestamp + 83, // 33: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.stolen_instrument_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdict + 84, // 34: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.card_testing_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdict + 85, // 35: google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.behavioral_trust_verdict:type_name -> google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdict + 86, // 36: google.cloud.recaptchaenterprise.v1.FraudSignals.user_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignals + 87, // 37: google.cloud.recaptchaenterprise.v1.FraudSignals.card_signals:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals 8, // 38: google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict.reasons:type_name -> google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict.SmsTollFraudReason - 31, // 39: google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment.sms_toll_fraud_verdict:type_name -> google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict + 32, // 39: google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment.sms_toll_fraud_verdict:type_name -> google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict 9, // 40: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.labels:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel - 53, // 41: google.cloud.recaptchaenterprise.v1.CreateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key - 53, // 42: google.cloud.recaptchaenterprise.v1.ListKeysResponse.keys:type_name -> google.cloud.recaptchaenterprise.v1.Key - 53, // 43: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key - 93, // 44: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.update_mask:type_name -> google.protobuf.FieldMask - 64, // 45: google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 64, // 46: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse.firewall_policies:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 64, // 47: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 93, // 48: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest.update_mask:type_name -> google.protobuf.FieldMask - 92, // 49: google.cloud.recaptchaenterprise.v1.Metrics.start_time:type_name -> google.protobuf.Timestamp - 60, // 50: google.cloud.recaptchaenterprise.v1.Metrics.score_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics - 61, // 51: google.cloud.recaptchaenterprise.v1.Metrics.challenge_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ChallengeMetrics - 55, // 52: google.cloud.recaptchaenterprise.v1.Key.web_settings:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings - 56, // 53: google.cloud.recaptchaenterprise.v1.Key.android_settings:type_name -> google.cloud.recaptchaenterprise.v1.AndroidKeySettings - 57, // 54: google.cloud.recaptchaenterprise.v1.Key.ios_settings:type_name -> google.cloud.recaptchaenterprise.v1.IOSKeySettings - 83, // 55: google.cloud.recaptchaenterprise.v1.Key.labels:type_name -> google.cloud.recaptchaenterprise.v1.Key.LabelsEntry - 92, // 56: google.cloud.recaptchaenterprise.v1.Key.create_time:type_name -> google.protobuf.Timestamp - 54, // 57: google.cloud.recaptchaenterprise.v1.Key.testing_options:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions - 73, // 58: google.cloud.recaptchaenterprise.v1.Key.waf_settings:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings - 10, // 59: google.cloud.recaptchaenterprise.v1.TestingOptions.testing_challenge:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge - 11, // 60: google.cloud.recaptchaenterprise.v1.WebKeySettings.integration_type:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType - 12, // 61: google.cloud.recaptchaenterprise.v1.WebKeySettings.challenge_security_preference:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference - 58, // 62: google.cloud.recaptchaenterprise.v1.IOSKeySettings.apple_developer_id:type_name -> google.cloud.recaptchaenterprise.v1.AppleDeveloperId - 84, // 63: google.cloud.recaptchaenterprise.v1.ScoreDistribution.score_buckets:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry - 59, // 64: google.cloud.recaptchaenterprise.v1.ScoreMetrics.overall_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution - 85, // 65: google.cloud.recaptchaenterprise.v1.ScoreMetrics.action_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry - 94, // 66: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment.error:type_name -> google.rpc.Status - 64, // 67: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 86, // 68: google.cloud.recaptchaenterprise.v1.FirewallAction.allow:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.AllowAction - 87, // 69: google.cloud.recaptchaenterprise.v1.FirewallAction.block:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.BlockAction - 88, // 70: google.cloud.recaptchaenterprise.v1.FirewallAction.include_recaptcha_script:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptAction - 89, // 71: google.cloud.recaptchaenterprise.v1.FirewallAction.redirect:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectAction - 90, // 72: google.cloud.recaptchaenterprise.v1.FirewallAction.substitute:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteAction - 91, // 73: google.cloud.recaptchaenterprise.v1.FirewallAction.set_header:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderAction - 63, // 74: google.cloud.recaptchaenterprise.v1.FirewallPolicy.actions:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction - 71, // 75: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership - 72, // 76: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse.related_account_groups:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroup - 71, // 77: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership - 14, // 78: google.cloud.recaptchaenterprise.v1.WafSettings.waf_service:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafService - 13, // 79: google.cloud.recaptchaenterprise.v1.WafSettings.waf_feature:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature - 7, // 80: google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.card_labels:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.CardLabel - 59, // 81: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry.value:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution - 15, // 82: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest - 17, // 83: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest - 34, // 84: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:input_type -> google.cloud.recaptchaenterprise.v1.CreateKeyRequest - 35, // 85: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:input_type -> google.cloud.recaptchaenterprise.v1.ListKeysRequest - 37, // 86: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:input_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest - 38, // 87: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:input_type -> google.cloud.recaptchaenterprise.v1.GetKeyRequest - 39, // 88: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:input_type -> google.cloud.recaptchaenterprise.v1.UpdateKeyRequest - 40, // 89: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:input_type -> google.cloud.recaptchaenterprise.v1.DeleteKeyRequest - 49, // 90: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:input_type -> google.cloud.recaptchaenterprise.v1.MigrateKeyRequest - 50, // 91: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:input_type -> google.cloud.recaptchaenterprise.v1.GetMetricsRequest - 41, // 92: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest - 42, // 93: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListFirewallPolicies:input_type -> google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest - 44, // 94: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest - 45, // 95: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest - 46, // 96: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest - 47, // 97: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ReorderFirewallPolicies:input_type -> google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest - 67, // 98: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest - 65, // 99: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest - 69, // 100: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest - 22, // 101: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.Assessment - 18, // 102: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse - 53, // 103: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key - 36, // 104: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:output_type -> google.cloud.recaptchaenterprise.v1.ListKeysResponse - 52, // 105: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:output_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse - 53, // 106: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:output_type -> google.cloud.recaptchaenterprise.v1.Key - 53, // 107: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key - 95, // 108: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:output_type -> google.protobuf.Empty - 53, // 109: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key - 51, // 110: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:output_type -> google.cloud.recaptchaenterprise.v1.Metrics - 64, // 111: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 43, // 112: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListFirewallPolicies:output_type -> google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse - 64, // 113: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 64, // 114: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy - 95, // 115: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteFirewallPolicy:output_type -> google.protobuf.Empty - 48, // 116: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ReorderFirewallPolicies:output_type -> google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse - 68, // 117: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse - 66, // 118: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse - 70, // 119: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse - 101, // [101:120] is the sub-list for method output_type - 82, // [82:101] is the sub-list for method input_type - 82, // [82:82] is the sub-list for extension type_name - 82, // [82:82] is the sub-list for extension extendee - 0, // [0:82] is the sub-list for field type_name + 54, // 41: google.cloud.recaptchaenterprise.v1.CreateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key + 54, // 42: google.cloud.recaptchaenterprise.v1.ListKeysResponse.keys:type_name -> google.cloud.recaptchaenterprise.v1.Key + 54, // 43: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key + 98, // 44: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.update_mask:type_name -> google.protobuf.FieldMask + 66, // 45: google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 66, // 46: google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse.firewall_policies:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 66, // 47: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 98, // 48: google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest.update_mask:type_name -> google.protobuf.FieldMask + 97, // 49: google.cloud.recaptchaenterprise.v1.Metrics.start_time:type_name -> google.protobuf.Timestamp + 62, // 50: google.cloud.recaptchaenterprise.v1.Metrics.score_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics + 63, // 51: google.cloud.recaptchaenterprise.v1.Metrics.challenge_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ChallengeMetrics + 56, // 52: google.cloud.recaptchaenterprise.v1.Key.web_settings:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings + 57, // 53: google.cloud.recaptchaenterprise.v1.Key.android_settings:type_name -> google.cloud.recaptchaenterprise.v1.AndroidKeySettings + 58, // 54: google.cloud.recaptchaenterprise.v1.Key.ios_settings:type_name -> google.cloud.recaptchaenterprise.v1.IOSKeySettings + 59, // 55: google.cloud.recaptchaenterprise.v1.Key.express_settings:type_name -> google.cloud.recaptchaenterprise.v1.ExpressKeySettings + 88, // 56: google.cloud.recaptchaenterprise.v1.Key.labels:type_name -> google.cloud.recaptchaenterprise.v1.Key.LabelsEntry + 97, // 57: google.cloud.recaptchaenterprise.v1.Key.create_time:type_name -> google.protobuf.Timestamp + 55, // 58: google.cloud.recaptchaenterprise.v1.Key.testing_options:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions + 77, // 59: google.cloud.recaptchaenterprise.v1.Key.waf_settings:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings + 10, // 60: google.cloud.recaptchaenterprise.v1.TestingOptions.testing_challenge:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge + 11, // 61: google.cloud.recaptchaenterprise.v1.WebKeySettings.integration_type:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType + 12, // 62: google.cloud.recaptchaenterprise.v1.WebKeySettings.challenge_security_preference:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference + 60, // 63: google.cloud.recaptchaenterprise.v1.IOSKeySettings.apple_developer_id:type_name -> google.cloud.recaptchaenterprise.v1.AppleDeveloperId + 89, // 64: google.cloud.recaptchaenterprise.v1.ScoreDistribution.score_buckets:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry + 61, // 65: google.cloud.recaptchaenterprise.v1.ScoreMetrics.overall_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution + 90, // 66: google.cloud.recaptchaenterprise.v1.ScoreMetrics.action_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry + 99, // 67: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment.error:type_name -> google.rpc.Status + 66, // 68: google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessment.firewall_policy:type_name -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 91, // 69: google.cloud.recaptchaenterprise.v1.FirewallAction.allow:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.AllowAction + 92, // 70: google.cloud.recaptchaenterprise.v1.FirewallAction.block:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.BlockAction + 93, // 71: google.cloud.recaptchaenterprise.v1.FirewallAction.include_recaptcha_script:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptAction + 94, // 72: google.cloud.recaptchaenterprise.v1.FirewallAction.redirect:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectAction + 95, // 73: google.cloud.recaptchaenterprise.v1.FirewallAction.substitute:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteAction + 96, // 74: google.cloud.recaptchaenterprise.v1.FirewallAction.set_header:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderAction + 65, // 75: google.cloud.recaptchaenterprise.v1.FirewallPolicy.actions:type_name -> google.cloud.recaptchaenterprise.v1.FirewallAction + 75, // 76: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership + 76, // 77: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse.related_account_groups:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroup + 75, // 78: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership + 78, // 79: google.cloud.recaptchaenterprise.v1.AddIpOverrideRequest.ip_override_data:type_name -> google.cloud.recaptchaenterprise.v1.IpOverrideData + 14, // 80: google.cloud.recaptchaenterprise.v1.WafSettings.waf_service:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafService + 13, // 81: google.cloud.recaptchaenterprise.v1.WafSettings.waf_feature:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature + 15, // 82: google.cloud.recaptchaenterprise.v1.IpOverrideData.override_type:type_name -> google.cloud.recaptchaenterprise.v1.IpOverrideData.OverrideType + 7, // 83: google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.card_labels:type_name -> google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.CardLabel + 61, // 84: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry.value:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution + 16, // 85: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest + 18, // 86: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest + 35, // 87: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:input_type -> google.cloud.recaptchaenterprise.v1.CreateKeyRequest + 36, // 88: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:input_type -> google.cloud.recaptchaenterprise.v1.ListKeysRequest + 38, // 89: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:input_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest + 39, // 90: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:input_type -> google.cloud.recaptchaenterprise.v1.GetKeyRequest + 40, // 91: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:input_type -> google.cloud.recaptchaenterprise.v1.UpdateKeyRequest + 41, // 92: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:input_type -> google.cloud.recaptchaenterprise.v1.DeleteKeyRequest + 50, // 93: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:input_type -> google.cloud.recaptchaenterprise.v1.MigrateKeyRequest + 73, // 94: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AddIpOverride:input_type -> google.cloud.recaptchaenterprise.v1.AddIpOverrideRequest + 51, // 95: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:input_type -> google.cloud.recaptchaenterprise.v1.GetMetricsRequest + 42, // 96: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest + 43, // 97: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListFirewallPolicies:input_type -> google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest + 45, // 98: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest + 46, // 99: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest + 47, // 100: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteFirewallPolicy:input_type -> google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest + 48, // 101: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ReorderFirewallPolicies:input_type -> google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest + 69, // 102: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest + 67, // 103: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest + 71, // 104: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest + 23, // 105: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.Assessment + 19, // 106: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse + 54, // 107: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key + 37, // 108: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:output_type -> google.cloud.recaptchaenterprise.v1.ListKeysResponse + 53, // 109: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:output_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse + 54, // 110: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:output_type -> google.cloud.recaptchaenterprise.v1.Key + 54, // 111: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key + 100, // 112: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:output_type -> google.protobuf.Empty + 54, // 113: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key + 74, // 114: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AddIpOverride:output_type -> google.cloud.recaptchaenterprise.v1.AddIpOverrideResponse + 52, // 115: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:output_type -> google.cloud.recaptchaenterprise.v1.Metrics + 66, // 116: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 44, // 117: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListFirewallPolicies:output_type -> google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse + 66, // 118: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 66, // 119: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateFirewallPolicy:output_type -> google.cloud.recaptchaenterprise.v1.FirewallPolicy + 100, // 120: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteFirewallPolicy:output_type -> google.protobuf.Empty + 49, // 121: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ReorderFirewallPolicies:output_type -> google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse + 70, // 122: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse + 68, // 123: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse + 72, // 124: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse + 105, // [105:125] is the sub-list for method output_type + 85, // [85:105] is the sub-list for method input_type + 85, // [85:85] is the sub-list for extension type_name + 85, // [85:85] is the sub-list for extension extendee + 0, // [0:85] is the sub-list for field type_name } func init() { file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() } @@ -8809,7 +9133,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*AppleDeveloperId); i { + switch v := v.(*ExpressKeySettings); i { case 0: return &v.state case 1: @@ -8821,7 +9145,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*ScoreDistribution); i { + switch v := v.(*AppleDeveloperId); i { case 0: return &v.state case 1: @@ -8833,7 +9157,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*ScoreMetrics); i { + switch v := v.(*ScoreDistribution); i { case 0: return &v.state case 1: @@ -8845,7 +9169,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*ChallengeMetrics); i { + switch v := v.(*ScoreMetrics); i { case 0: return &v.state case 1: @@ -8857,7 +9181,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*FirewallPolicyAssessment); i { + switch v := v.(*ChallengeMetrics); i { case 0: return &v.state case 1: @@ -8869,7 +9193,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*FirewallAction); i { + switch v := v.(*FirewallPolicyAssessment); i { case 0: return &v.state case 1: @@ -8881,7 +9205,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*FirewallPolicy); i { + switch v := v.(*FirewallAction); i { case 0: return &v.state case 1: @@ -8893,7 +9217,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*ListRelatedAccountGroupMembershipsRequest); i { + switch v := v.(*FirewallPolicy); i { case 0: return &v.state case 1: @@ -8905,7 +9229,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*ListRelatedAccountGroupMembershipsResponse); i { + switch v := v.(*ListRelatedAccountGroupMembershipsRequest); i { case 0: return &v.state case 1: @@ -8917,7 +9241,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*ListRelatedAccountGroupsRequest); i { + switch v := v.(*ListRelatedAccountGroupMembershipsResponse); i { case 0: return &v.state case 1: @@ -8929,7 +9253,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*ListRelatedAccountGroupsResponse); i { + switch v := v.(*ListRelatedAccountGroupsRequest); i { case 0: return &v.state case 1: @@ -8941,7 +9265,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*SearchRelatedAccountGroupMembershipsRequest); i { + switch v := v.(*ListRelatedAccountGroupsResponse); i { case 0: return &v.state case 1: @@ -8953,7 +9277,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*SearchRelatedAccountGroupMembershipsResponse); i { + switch v := v.(*SearchRelatedAccountGroupMembershipsRequest); i { case 0: return &v.state case 1: @@ -8965,7 +9289,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*RelatedAccountGroupMembership); i { + switch v := v.(*SearchRelatedAccountGroupMembershipsResponse); i { case 0: return &v.state case 1: @@ -8977,7 +9301,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*RelatedAccountGroup); i { + switch v := v.(*AddIpOverrideRequest); i { case 0: return &v.state case 1: @@ -8989,7 +9313,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*WafSettings); i { + switch v := v.(*AddIpOverrideResponse); i { case 0: return &v.state case 1: @@ -9001,7 +9325,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*TransactionData_Address); i { + switch v := v.(*RelatedAccountGroupMembership); i { case 0: return &v.state case 1: @@ -9013,7 +9337,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*TransactionData_User); i { + switch v := v.(*RelatedAccountGroup); i { case 0: return &v.state case 1: @@ -9025,7 +9349,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*TransactionData_Item); i { + switch v := v.(*WafSettings); i { case 0: return &v.state case 1: @@ -9037,7 +9361,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*TransactionData_GatewayInfo); i { + switch v := v.(*IpOverrideData); i { case 0: return &v.state case 1: @@ -9049,7 +9373,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*FraudPreventionAssessment_StolenInstrumentVerdict); i { + switch v := v.(*TransactionData_Address); i { case 0: return &v.state case 1: @@ -9061,7 +9385,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*FraudPreventionAssessment_CardTestingVerdict); i { + switch v := v.(*TransactionData_User); i { case 0: return &v.state case 1: @@ -9073,7 +9397,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*FraudPreventionAssessment_BehavioralTrustVerdict); i { + switch v := v.(*TransactionData_Item); i { case 0: return &v.state case 1: @@ -9085,7 +9409,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*FraudSignals_UserSignals); i { + switch v := v.(*TransactionData_GatewayInfo); i { case 0: return &v.state case 1: @@ -9097,7 +9421,43 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*FraudSignals_CardSignals); i { + switch v := v.(*FraudPreventionAssessment_StolenInstrumentVerdict); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[68].Exporter = func(v any, i int) any { + switch v := v.(*FraudPreventionAssessment_CardTestingVerdict); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[69].Exporter = func(v any, i int) any { + switch v := v.(*FraudPreventionAssessment_BehavioralTrustVerdict); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[70].Exporter = func(v any, i int) any { + switch v := v.(*FraudSignals_UserSignals); i { case 0: return &v.state case 1: @@ -9109,6 +9469,18 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { } } file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[71].Exporter = func(v any, i int) any { + switch v := v.(*FraudSignals_CardSignals); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_AllowAction); i { case 0: return &v.state @@ -9120,7 +9492,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { return nil } } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[72].Exporter = func(v any, i int) any { + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_BlockAction); i { case 0: return &v.state @@ -9132,7 +9504,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { return nil } } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[73].Exporter = func(v any, i int) any { + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_IncludeRecaptchaScriptAction); i { case 0: return &v.state @@ -9144,7 +9516,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { return nil } } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[74].Exporter = func(v any, i int) any { + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_RedirectAction); i { case 0: return &v.state @@ -9156,7 +9528,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { return nil } } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[75].Exporter = func(v any, i int) any { + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[79].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_SubstituteAction); i { case 0: return &v.state @@ -9168,7 +9540,7 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { return nil } } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[76].Exporter = func(v any, i int) any { + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*FirewallAction_SetHeaderAction); i { case 0: return &v.state @@ -9195,8 +9567,9 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { (*Key_WebSettings)(nil), (*Key_AndroidSettings)(nil), (*Key_IosSettings)(nil), + (*Key_ExpressSettings)(nil), } - file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[48].OneofWrappers = []any{ + file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[49].OneofWrappers = []any{ (*FirewallAction_Allow)(nil), (*FirewallAction_Block)(nil), (*FirewallAction_IncludeRecaptchaScript)(nil), @@ -9209,8 +9582,8 @@ func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc, - NumEnums: 15, - NumMessages: 77, + NumEnums: 16, + NumMessages: 81, NumExtensions: 0, NumServices: 1, }, @@ -9263,6 +9636,11 @@ type RecaptchaEnterpriseServiceClient interface { // your user must have the reCAPTCHA Enterprise Admin IAM role in the // destination project. MigrateKey(ctx context.Context, in *MigrateKeyRequest, opts ...grpc.CallOption) (*Key, error) + // Adds an IP override to a key. The following restrictions hold: + // - The maximum number of IP overrides per key is 100. + // - For any conflict (such as IP already exists or IP part of an existing + // IP range), an error will be returned. + AddIpOverride(ctx context.Context, in *AddIpOverrideRequest, opts ...grpc.CallOption) (*AddIpOverrideResponse, error) // Get some aggregated metrics for a Key. This data can be used to build // dashboards. GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error) @@ -9377,6 +9755,15 @@ func (c *recaptchaEnterpriseServiceClient) MigrateKey(ctx context.Context, in *M return out, nil } +func (c *recaptchaEnterpriseServiceClient) AddIpOverride(ctx context.Context, in *AddIpOverrideRequest, opts ...grpc.CallOption) (*AddIpOverrideResponse, error) { + out := new(AddIpOverrideResponse) + err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AddIpOverride", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *recaptchaEnterpriseServiceClient) GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error) { out := new(Metrics) err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetMetrics", in, out, opts...) @@ -9495,6 +9882,11 @@ type RecaptchaEnterpriseServiceServer interface { // your user must have the reCAPTCHA Enterprise Admin IAM role in the // destination project. MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error) + // Adds an IP override to a key. The following restrictions hold: + // - The maximum number of IP overrides per key is 100. + // - For any conflict (such as IP already exists or IP part of an existing + // IP range), an error will be returned. + AddIpOverride(context.Context, *AddIpOverrideRequest) (*AddIpOverrideResponse, error) // Get some aggregated metrics for a Key. This data can be used to build // dashboards. GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error) @@ -9551,6 +9943,9 @@ func (*UnimplementedRecaptchaEnterpriseServiceServer) DeleteKey(context.Context, func (*UnimplementedRecaptchaEnterpriseServiceServer) MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error) { return nil, status1.Errorf(codes.Unimplemented, "method MigrateKey not implemented") } +func (*UnimplementedRecaptchaEnterpriseServiceServer) AddIpOverride(context.Context, *AddIpOverrideRequest) (*AddIpOverrideResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method AddIpOverride not implemented") +} func (*UnimplementedRecaptchaEnterpriseServiceServer) GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error) { return nil, status1.Errorf(codes.Unimplemented, "method GetMetrics not implemented") } @@ -9748,6 +10143,24 @@ func _RecaptchaEnterpriseService_MigrateKey_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _RecaptchaEnterpriseService_AddIpOverride_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddIpOverrideRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RecaptchaEnterpriseServiceServer).AddIpOverride(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AddIpOverride", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RecaptchaEnterpriseServiceServer).AddIpOverride(ctx, req.(*AddIpOverrideRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _RecaptchaEnterpriseService_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetMetricsRequest) if err := dec(in); err != nil { @@ -9968,6 +10381,10 @@ var _RecaptchaEnterpriseService_serviceDesc = grpc.ServiceDesc{ MethodName: "MigrateKey", Handler: _RecaptchaEnterpriseService_MigrateKey_Handler, }, + { + MethodName: "AddIpOverride", + Handler: _RecaptchaEnterpriseService_AddIpOverride_Handler, + }, { MethodName: "GetMetrics", Handler: _RecaptchaEnterpriseService_GetMetrics_Handler, diff --git a/shopping/css/apiv1/csspb/css_product_common.pb.go b/shopping/css/apiv1/csspb/css_product_common.pb.go index e091db2c132c..f55c6d43c571 100755 --- a/shopping/css/apiv1/csspb/css_product_common.pb.go +++ b/shopping/css/apiv1/csspb/css_product_common.pb.go @@ -542,17 +542,24 @@ func (x *Attributes) GetCustomLabel_4() string { return "" } -// The certification for the product. +// The certification for the product. Use the this attribute to describe +// certifications, such as energy efficiency ratings, associated with a product. type Certification struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of the certification. + // The name of the certification. At this time, the most common value is + // "EPREL", which represents energy efficiency certifications in the EU + // European Registry for Energy Labeling (EPREL) database. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Name of the certification body. + // The authority or certification body responsible for issuing the + // certification. At this time, the most common value is "EC" or + // “European_Commission” for energy labels in the EU. Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"` - // A unique code to identify the certification. + // The code of the certification. For example, for the EPREL certificate with + // the link https://eprel.ec.europa.eu/screen/product/dishwashers2019/123456 + // the code is 123456. The code is required for European Energy Labels. Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` }