blob: 93b679686833e00ca13aa8f91afdc96cb7f44acd [file] [log] [blame]
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc v4.25.3
// source: google/cloud/webrisk/v1/webrisk.proto
package webriskpb
import (
context "context"
reflect "reflect"
sync "sync"
longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb"
_ "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 type of threat. This maps directly to the threat list a threat may
// belong to.
type ThreatType int32
const (
// No entries should match this threat type. This threat type is unused.
ThreatType_THREAT_TYPE_UNSPECIFIED ThreatType = 0
// Malware targeting any platform.
ThreatType_MALWARE ThreatType = 1
// Social engineering targeting any platform.
ThreatType_SOCIAL_ENGINEERING ThreatType = 2
// Unwanted software targeting any platform.
ThreatType_UNWANTED_SOFTWARE ThreatType = 3
// A list of extended coverage social engineering URIs targeting any
// platform.
ThreatType_SOCIAL_ENGINEERING_EXTENDED_COVERAGE ThreatType = 4
)
// Enum value maps for ThreatType.
var (
ThreatType_name = map[int32]string{
0: "THREAT_TYPE_UNSPECIFIED",
1: "MALWARE",
2: "SOCIAL_ENGINEERING",
3: "UNWANTED_SOFTWARE",
4: "SOCIAL_ENGINEERING_EXTENDED_COVERAGE",
}
ThreatType_value = map[string]int32{
"THREAT_TYPE_UNSPECIFIED": 0,
"MALWARE": 1,
"SOCIAL_ENGINEERING": 2,
"UNWANTED_SOFTWARE": 3,
"SOCIAL_ENGINEERING_EXTENDED_COVERAGE": 4,
}
)
func (x ThreatType) Enum() *ThreatType {
p := new(ThreatType)
*p = x
return p
}
func (x ThreatType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ThreatType) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[0].Descriptor()
}
func (ThreatType) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[0]
}
func (x ThreatType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ThreatType.Descriptor instead.
func (ThreatType) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{0}
}
// The ways in which threat entry sets can be compressed.
type CompressionType int32
const (
// Unknown.
CompressionType_COMPRESSION_TYPE_UNSPECIFIED CompressionType = 0
// Raw, uncompressed data.
CompressionType_RAW CompressionType = 1
// Rice-Golomb encoded data.
CompressionType_RICE CompressionType = 2
)
// Enum value maps for CompressionType.
var (
CompressionType_name = map[int32]string{
0: "COMPRESSION_TYPE_UNSPECIFIED",
1: "RAW",
2: "RICE",
}
CompressionType_value = map[string]int32{
"COMPRESSION_TYPE_UNSPECIFIED": 0,
"RAW": 1,
"RICE": 2,
}
)
func (x CompressionType) Enum() *CompressionType {
p := new(CompressionType)
*p = x
return p
}
func (x CompressionType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CompressionType) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[1].Descriptor()
}
func (CompressionType) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[1]
}
func (x CompressionType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CompressionType.Descriptor instead.
func (CompressionType) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{1}
}
// The type of response sent to the client.
type ComputeThreatListDiffResponse_ResponseType int32
const (
// Unknown.
ComputeThreatListDiffResponse_RESPONSE_TYPE_UNSPECIFIED ComputeThreatListDiffResponse_ResponseType = 0
// Partial updates are applied to the client's existing local database.
ComputeThreatListDiffResponse_DIFF ComputeThreatListDiffResponse_ResponseType = 1
// Full updates resets the client's entire local database. This means
// that either the client had no state, was seriously out-of-date,
// or the client is believed to be corrupt.
ComputeThreatListDiffResponse_RESET ComputeThreatListDiffResponse_ResponseType = 2
)
// Enum value maps for ComputeThreatListDiffResponse_ResponseType.
var (
ComputeThreatListDiffResponse_ResponseType_name = map[int32]string{
0: "RESPONSE_TYPE_UNSPECIFIED",
1: "DIFF",
2: "RESET",
}
ComputeThreatListDiffResponse_ResponseType_value = map[string]int32{
"RESPONSE_TYPE_UNSPECIFIED": 0,
"DIFF": 1,
"RESET": 2,
}
)
func (x ComputeThreatListDiffResponse_ResponseType) Enum() *ComputeThreatListDiffResponse_ResponseType {
p := new(ComputeThreatListDiffResponse_ResponseType)
*p = x
return p
}
func (x ComputeThreatListDiffResponse_ResponseType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ComputeThreatListDiffResponse_ResponseType) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[2].Descriptor()
}
func (ComputeThreatListDiffResponse_ResponseType) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[2]
}
func (x ComputeThreatListDiffResponse_ResponseType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ComputeThreatListDiffResponse_ResponseType.Descriptor instead.
func (ComputeThreatListDiffResponse_ResponseType) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{1, 0}
}
// The abuse type found on the URI.
type ThreatInfo_AbuseType int32
const (
// Default.
ThreatInfo_ABUSE_TYPE_UNSPECIFIED ThreatInfo_AbuseType = 0
// The URI contains malware.
ThreatInfo_MALWARE ThreatInfo_AbuseType = 1
// The URI contains social engineering.
ThreatInfo_SOCIAL_ENGINEERING ThreatInfo_AbuseType = 2
// The URI contains unwanted software.
ThreatInfo_UNWANTED_SOFTWARE ThreatInfo_AbuseType = 3
)
// Enum value maps for ThreatInfo_AbuseType.
var (
ThreatInfo_AbuseType_name = map[int32]string{
0: "ABUSE_TYPE_UNSPECIFIED",
1: "MALWARE",
2: "SOCIAL_ENGINEERING",
3: "UNWANTED_SOFTWARE",
}
ThreatInfo_AbuseType_value = map[string]int32{
"ABUSE_TYPE_UNSPECIFIED": 0,
"MALWARE": 1,
"SOCIAL_ENGINEERING": 2,
"UNWANTED_SOFTWARE": 3,
}
)
func (x ThreatInfo_AbuseType) Enum() *ThreatInfo_AbuseType {
p := new(ThreatInfo_AbuseType)
*p = x
return p
}
func (x ThreatInfo_AbuseType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ThreatInfo_AbuseType) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[3].Descriptor()
}
func (ThreatInfo_AbuseType) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[3]
}
func (x ThreatInfo_AbuseType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ThreatInfo_AbuseType.Descriptor instead.
func (ThreatInfo_AbuseType) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12, 0}
}
// Enum representation of confidence.
type ThreatInfo_Confidence_ConfidenceLevel int32
const (
// Default.
ThreatInfo_Confidence_CONFIDENCE_LEVEL_UNSPECIFIED ThreatInfo_Confidence_ConfidenceLevel = 0
// Less than 60% confidence that the URI is unsafe.
ThreatInfo_Confidence_LOW ThreatInfo_Confidence_ConfidenceLevel = 1
// Between 60% and 80% confidence that the URI is unsafe.
ThreatInfo_Confidence_MEDIUM ThreatInfo_Confidence_ConfidenceLevel = 2
// Greater than 80% confidence that the URI is unsafe.
ThreatInfo_Confidence_HIGH ThreatInfo_Confidence_ConfidenceLevel = 3
)
// Enum value maps for ThreatInfo_Confidence_ConfidenceLevel.
var (
ThreatInfo_Confidence_ConfidenceLevel_name = map[int32]string{
0: "CONFIDENCE_LEVEL_UNSPECIFIED",
1: "LOW",
2: "MEDIUM",
3: "HIGH",
}
ThreatInfo_Confidence_ConfidenceLevel_value = map[string]int32{
"CONFIDENCE_LEVEL_UNSPECIFIED": 0,
"LOW": 1,
"MEDIUM": 2,
"HIGH": 3,
}
)
func (x ThreatInfo_Confidence_ConfidenceLevel) Enum() *ThreatInfo_Confidence_ConfidenceLevel {
p := new(ThreatInfo_Confidence_ConfidenceLevel)
*p = x
return p
}
func (x ThreatInfo_Confidence_ConfidenceLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ThreatInfo_Confidence_ConfidenceLevel) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[4].Descriptor()
}
func (ThreatInfo_Confidence_ConfidenceLevel) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[4]
}
func (x ThreatInfo_Confidence_ConfidenceLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ThreatInfo_Confidence_ConfidenceLevel.Descriptor instead.
func (ThreatInfo_Confidence_ConfidenceLevel) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12, 0, 0}
}
// Labels that explain how the URI was classified.
type ThreatInfo_ThreatJustification_JustificationLabel int32
const (
// Default.
ThreatInfo_ThreatJustification_JUSTIFICATION_LABEL_UNSPECIFIED ThreatInfo_ThreatJustification_JustificationLabel = 0
// The submitter manually verified that the submission is unsafe.
ThreatInfo_ThreatJustification_MANUAL_VERIFICATION ThreatInfo_ThreatJustification_JustificationLabel = 1
// The submitter received the submission from an end user.
ThreatInfo_ThreatJustification_USER_REPORT ThreatInfo_ThreatJustification_JustificationLabel = 2
// The submitter received the submission from an automated system.
ThreatInfo_ThreatJustification_AUTOMATED_REPORT ThreatInfo_ThreatJustification_JustificationLabel = 3
)
// Enum value maps for ThreatInfo_ThreatJustification_JustificationLabel.
var (
ThreatInfo_ThreatJustification_JustificationLabel_name = map[int32]string{
0: "JUSTIFICATION_LABEL_UNSPECIFIED",
1: "MANUAL_VERIFICATION",
2: "USER_REPORT",
3: "AUTOMATED_REPORT",
}
ThreatInfo_ThreatJustification_JustificationLabel_value = map[string]int32{
"JUSTIFICATION_LABEL_UNSPECIFIED": 0,
"MANUAL_VERIFICATION": 1,
"USER_REPORT": 2,
"AUTOMATED_REPORT": 3,
}
)
func (x ThreatInfo_ThreatJustification_JustificationLabel) Enum() *ThreatInfo_ThreatJustification_JustificationLabel {
p := new(ThreatInfo_ThreatJustification_JustificationLabel)
*p = x
return p
}
func (x ThreatInfo_ThreatJustification_JustificationLabel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ThreatInfo_ThreatJustification_JustificationLabel) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[5].Descriptor()
}
func (ThreatInfo_ThreatJustification_JustificationLabel) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[5]
}
func (x ThreatInfo_ThreatJustification_JustificationLabel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ThreatInfo_ThreatJustification_JustificationLabel.Descriptor instead.
func (ThreatInfo_ThreatJustification_JustificationLabel) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12, 1, 0}
}
// Platform types.
type ThreatDiscovery_Platform int32
const (
// Default.
ThreatDiscovery_PLATFORM_UNSPECIFIED ThreatDiscovery_Platform = 0
// General Android platform.
ThreatDiscovery_ANDROID ThreatDiscovery_Platform = 1
// General iOS platform.
ThreatDiscovery_IOS ThreatDiscovery_Platform = 2
// General macOS platform.
ThreatDiscovery_MACOS ThreatDiscovery_Platform = 3
// General Windows platform.
ThreatDiscovery_WINDOWS ThreatDiscovery_Platform = 4
)
// Enum value maps for ThreatDiscovery_Platform.
var (
ThreatDiscovery_Platform_name = map[int32]string{
0: "PLATFORM_UNSPECIFIED",
1: "ANDROID",
2: "IOS",
3: "MACOS",
4: "WINDOWS",
}
ThreatDiscovery_Platform_value = map[string]int32{
"PLATFORM_UNSPECIFIED": 0,
"ANDROID": 1,
"IOS": 2,
"MACOS": 3,
"WINDOWS": 4,
}
)
func (x ThreatDiscovery_Platform) Enum() *ThreatDiscovery_Platform {
p := new(ThreatDiscovery_Platform)
*p = x
return p
}
func (x ThreatDiscovery_Platform) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ThreatDiscovery_Platform) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[6].Descriptor()
}
func (ThreatDiscovery_Platform) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[6]
}
func (x ThreatDiscovery_Platform) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ThreatDiscovery_Platform.Descriptor instead.
func (ThreatDiscovery_Platform) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{13, 0}
}
// Enum that represents the state of the long-running operation.
type SubmitUriMetadata_State int32
const (
// Default unspecified state.
SubmitUriMetadata_STATE_UNSPECIFIED SubmitUriMetadata_State = 0
// The operation is currently running.
SubmitUriMetadata_RUNNING SubmitUriMetadata_State = 1
// The operation finished with a success status.
SubmitUriMetadata_SUCCEEDED SubmitUriMetadata_State = 2
// The operation was cancelled.
SubmitUriMetadata_CANCELLED SubmitUriMetadata_State = 3
// The operation finished with a failure status.
SubmitUriMetadata_FAILED SubmitUriMetadata_State = 4
// The operation was closed with no action taken.
SubmitUriMetadata_CLOSED SubmitUriMetadata_State = 5
)
// Enum value maps for SubmitUriMetadata_State.
var (
SubmitUriMetadata_State_name = map[int32]string{
0: "STATE_UNSPECIFIED",
1: "RUNNING",
2: "SUCCEEDED",
3: "CANCELLED",
4: "FAILED",
5: "CLOSED",
}
SubmitUriMetadata_State_value = map[string]int32{
"STATE_UNSPECIFIED": 0,
"RUNNING": 1,
"SUCCEEDED": 2,
"CANCELLED": 3,
"FAILED": 4,
"CLOSED": 5,
}
)
func (x SubmitUriMetadata_State) Enum() *SubmitUriMetadata_State {
p := new(SubmitUriMetadata_State)
*p = x
return p
}
func (x SubmitUriMetadata_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SubmitUriMetadata_State) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[7].Descriptor()
}
func (SubmitUriMetadata_State) Type() protoreflect.EnumType {
return &file_google_cloud_webrisk_v1_webrisk_proto_enumTypes[7]
}
func (x SubmitUriMetadata_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SubmitUriMetadata_State.Descriptor instead.
func (SubmitUriMetadata_State) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{16, 0}
}
// Describes an API diff request.
type ComputeThreatListDiffRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The threat list to update. Only a single ThreatType should be
// specified per request. If you want to handle multiple ThreatTypes, you must
// make one request per ThreatType.
ThreatType ThreatType `protobuf:"varint,1,opt,name=threat_type,json=threatType,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_type,omitempty"`
// The current version token of the client for the requested list (the
// client version that was received from the last successful diff).
// If the client does not have a version token (this is the first time calling
// ComputeThreatListDiff), this may be left empty and a full database
// snapshot will be returned.
VersionToken []byte `protobuf:"bytes,2,opt,name=version_token,json=versionToken,proto3" json:"version_token,omitempty"`
// Required. The constraints associated with this request.
Constraints *ComputeThreatListDiffRequest_Constraints `protobuf:"bytes,3,opt,name=constraints,proto3" json:"constraints,omitempty"`
}
func (x *ComputeThreatListDiffRequest) Reset() {
*x = ComputeThreatListDiffRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComputeThreatListDiffRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComputeThreatListDiffRequest) ProtoMessage() {}
func (x *ComputeThreatListDiffRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ComputeThreatListDiffRequest.ProtoReflect.Descriptor instead.
func (*ComputeThreatListDiffRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{0}
}
func (x *ComputeThreatListDiffRequest) GetThreatType() ThreatType {
if x != nil {
return x.ThreatType
}
return ThreatType_THREAT_TYPE_UNSPECIFIED
}
func (x *ComputeThreatListDiffRequest) GetVersionToken() []byte {
if x != nil {
return x.VersionToken
}
return nil
}
func (x *ComputeThreatListDiffRequest) GetConstraints() *ComputeThreatListDiffRequest_Constraints {
if x != nil {
return x.Constraints
}
return nil
}
type ComputeThreatListDiffResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The type of response. This may indicate that an action must be taken by the
// client when the response is received.
ResponseType ComputeThreatListDiffResponse_ResponseType `protobuf:"varint,4,opt,name=response_type,json=responseType,proto3,enum=google.cloud.webrisk.v1.ComputeThreatListDiffResponse_ResponseType" json:"response_type,omitempty"`
// A set of entries to add to a local threat type's list.
Additions *ThreatEntryAdditions `protobuf:"bytes,5,opt,name=additions,proto3" json:"additions,omitempty"`
// A set of entries to remove from a local threat type's list.
// This field may be empty.
Removals *ThreatEntryRemovals `protobuf:"bytes,6,opt,name=removals,proto3" json:"removals,omitempty"`
// The new opaque client version token. This should be retained by the client
// and passed into the next call of ComputeThreatListDiff as 'version_token'.
// A separate version token should be stored and used for each threatList.
NewVersionToken []byte `protobuf:"bytes,7,opt,name=new_version_token,json=newVersionToken,proto3" json:"new_version_token,omitempty"`
// The expected SHA256 hash of the client state; that is, of the sorted list
// of all hashes present in the database after applying the provided diff.
// If the client state doesn't match the expected state, the client must
// discard this diff and retry later.
Checksum *ComputeThreatListDiffResponse_Checksum `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"`
// The soonest the client should wait before issuing any diff
// request. Querying sooner is unlikely to produce a meaningful diff.
// Waiting longer is acceptable considering the use case.
// If this field is not set clients may update as soon as they want.
RecommendedNextDiff *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=recommended_next_diff,json=recommendedNextDiff,proto3" json:"recommended_next_diff,omitempty"`
}
func (x *ComputeThreatListDiffResponse) Reset() {
*x = ComputeThreatListDiffResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComputeThreatListDiffResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComputeThreatListDiffResponse) ProtoMessage() {}
func (x *ComputeThreatListDiffResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ComputeThreatListDiffResponse.ProtoReflect.Descriptor instead.
func (*ComputeThreatListDiffResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{1}
}
func (x *ComputeThreatListDiffResponse) GetResponseType() ComputeThreatListDiffResponse_ResponseType {
if x != nil {
return x.ResponseType
}
return ComputeThreatListDiffResponse_RESPONSE_TYPE_UNSPECIFIED
}
func (x *ComputeThreatListDiffResponse) GetAdditions() *ThreatEntryAdditions {
if x != nil {
return x.Additions
}
return nil
}
func (x *ComputeThreatListDiffResponse) GetRemovals() *ThreatEntryRemovals {
if x != nil {
return x.Removals
}
return nil
}
func (x *ComputeThreatListDiffResponse) GetNewVersionToken() []byte {
if x != nil {
return x.NewVersionToken
}
return nil
}
func (x *ComputeThreatListDiffResponse) GetChecksum() *ComputeThreatListDiffResponse_Checksum {
if x != nil {
return x.Checksum
}
return nil
}
func (x *ComputeThreatListDiffResponse) GetRecommendedNextDiff() *timestamppb.Timestamp {
if x != nil {
return x.RecommendedNextDiff
}
return nil
}
// Request to check URI entries against threatLists.
type SearchUrisRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The URI to be checked for matches.
Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
// Required. The ThreatLists to search in. Multiple ThreatLists may be
// specified.
ThreatTypes []ThreatType `protobuf:"varint,2,rep,packed,name=threat_types,json=threatTypes,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_types,omitempty"`
}
func (x *SearchUrisRequest) Reset() {
*x = SearchUrisRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchUrisRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchUrisRequest) ProtoMessage() {}
func (x *SearchUrisRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchUrisRequest.ProtoReflect.Descriptor instead.
func (*SearchUrisRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{2}
}
func (x *SearchUrisRequest) GetUri() string {
if x != nil {
return x.Uri
}
return ""
}
func (x *SearchUrisRequest) GetThreatTypes() []ThreatType {
if x != nil {
return x.ThreatTypes
}
return nil
}
type SearchUrisResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The threat list matches. This might be empty if the URI is on no list.
Threat *SearchUrisResponse_ThreatUri `protobuf:"bytes,1,opt,name=threat,proto3" json:"threat,omitempty"`
}
func (x *SearchUrisResponse) Reset() {
*x = SearchUrisResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchUrisResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchUrisResponse) ProtoMessage() {}
func (x *SearchUrisResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchUrisResponse.ProtoReflect.Descriptor instead.
func (*SearchUrisResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{3}
}
func (x *SearchUrisResponse) GetThreat() *SearchUrisResponse_ThreatUri {
if x != nil {
return x.Threat
}
return nil
}
// Request to return full hashes matched by the provided hash prefixes.
type SearchHashesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A hash prefix, consisting of the most significant 4-32 bytes of a SHA256
// hash. For JSON requests, this field is base64-encoded.
// Note that if this parameter is provided by a URI, it must be encoded using
// the web safe base64 variant (RFC 4648).
HashPrefix []byte `protobuf:"bytes,1,opt,name=hash_prefix,json=hashPrefix,proto3" json:"hash_prefix,omitempty"`
// Required. The ThreatLists to search in. Multiple ThreatLists may be
// specified.
ThreatTypes []ThreatType `protobuf:"varint,2,rep,packed,name=threat_types,json=threatTypes,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_types,omitempty"`
}
func (x *SearchHashesRequest) Reset() {
*x = SearchHashesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchHashesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchHashesRequest) ProtoMessage() {}
func (x *SearchHashesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchHashesRequest.ProtoReflect.Descriptor instead.
func (*SearchHashesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{4}
}
func (x *SearchHashesRequest) GetHashPrefix() []byte {
if x != nil {
return x.HashPrefix
}
return nil
}
func (x *SearchHashesRequest) GetThreatTypes() []ThreatType {
if x != nil {
return x.ThreatTypes
}
return nil
}
type SearchHashesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The full hashes that matched the requested prefixes.
// The hash will be populated in the key.
Threats []*SearchHashesResponse_ThreatHash `protobuf:"bytes,1,rep,name=threats,proto3" json:"threats,omitempty"`
// For requested entities that did not match the threat list, how long to
// cache the response until.
NegativeExpireTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=negative_expire_time,json=negativeExpireTime,proto3" json:"negative_expire_time,omitempty"`
}
func (x *SearchHashesResponse) Reset() {
*x = SearchHashesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchHashesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchHashesResponse) ProtoMessage() {}
func (x *SearchHashesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchHashesResponse.ProtoReflect.Descriptor instead.
func (*SearchHashesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{5}
}
func (x *SearchHashesResponse) GetThreats() []*SearchHashesResponse_ThreatHash {
if x != nil {
return x.Threats
}
return nil
}
func (x *SearchHashesResponse) GetNegativeExpireTime() *timestamppb.Timestamp {
if x != nil {
return x.NegativeExpireTime
}
return nil
}
// Contains the set of entries to add to a local database.
// May contain a combination of compressed and raw data in a single response.
type ThreatEntryAdditions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The raw SHA256-formatted entries.
// Repeated to allow returning sets of hashes with different prefix sizes.
RawHashes []*RawHashes `protobuf:"bytes,1,rep,name=raw_hashes,json=rawHashes,proto3" json:"raw_hashes,omitempty"`
// The encoded 4-byte prefixes of SHA256-formatted entries, using a
// Golomb-Rice encoding. The hashes are converted to uint32, sorted in
// ascending order, then delta encoded and stored as encoded_data.
RiceHashes *RiceDeltaEncoding `protobuf:"bytes,2,opt,name=rice_hashes,json=riceHashes,proto3" json:"rice_hashes,omitempty"`
}
func (x *ThreatEntryAdditions) Reset() {
*x = ThreatEntryAdditions{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatEntryAdditions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatEntryAdditions) ProtoMessage() {}
func (x *ThreatEntryAdditions) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatEntryAdditions.ProtoReflect.Descriptor instead.
func (*ThreatEntryAdditions) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{6}
}
func (x *ThreatEntryAdditions) GetRawHashes() []*RawHashes {
if x != nil {
return x.RawHashes
}
return nil
}
func (x *ThreatEntryAdditions) GetRiceHashes() *RiceDeltaEncoding {
if x != nil {
return x.RiceHashes
}
return nil
}
// Contains the set of entries to remove from a local database.
type ThreatEntryRemovals struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The raw removal indices for a local list.
RawIndices *RawIndices `protobuf:"bytes,1,opt,name=raw_indices,json=rawIndices,proto3" json:"raw_indices,omitempty"`
// The encoded local, lexicographically-sorted list indices, using a
// Golomb-Rice encoding. Used for sending compressed removal indices. The
// removal indices (uint32) are sorted in ascending order, then delta encoded
// and stored as encoded_data.
RiceIndices *RiceDeltaEncoding `protobuf:"bytes,2,opt,name=rice_indices,json=riceIndices,proto3" json:"rice_indices,omitempty"`
}
func (x *ThreatEntryRemovals) Reset() {
*x = ThreatEntryRemovals{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatEntryRemovals) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatEntryRemovals) ProtoMessage() {}
func (x *ThreatEntryRemovals) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatEntryRemovals.ProtoReflect.Descriptor instead.
func (*ThreatEntryRemovals) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{7}
}
func (x *ThreatEntryRemovals) GetRawIndices() *RawIndices {
if x != nil {
return x.RawIndices
}
return nil
}
func (x *ThreatEntryRemovals) GetRiceIndices() *RiceDeltaEncoding {
if x != nil {
return x.RiceIndices
}
return nil
}
// A set of raw indices to remove from a local list.
type RawIndices struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The indices to remove from a lexicographically-sorted local list.
Indices []int32 `protobuf:"varint,1,rep,packed,name=indices,proto3" json:"indices,omitempty"`
}
func (x *RawIndices) Reset() {
*x = RawIndices{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RawIndices) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RawIndices) ProtoMessage() {}
func (x *RawIndices) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 RawIndices.ProtoReflect.Descriptor instead.
func (*RawIndices) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{8}
}
func (x *RawIndices) GetIndices() []int32 {
if x != nil {
return x.Indices
}
return nil
}
// The uncompressed threat entries in hash format.
// Hashes can be anywhere from 4 to 32 bytes in size. A large majority are 4
// bytes, but some hashes are lengthened if they collide with the hash of a
// popular URI.
//
// Used for sending ThreatEntryAdditons to clients that do not support
// compression, or when sending non-4-byte hashes to clients that do support
// compression.
type RawHashes struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The number of bytes for each prefix encoded below. This field can be
// anywhere from 4 (shortest prefix) to 32 (full SHA256 hash).
// In practice this is almost always 4, except in exceptional circumstances.
PrefixSize int32 `protobuf:"varint,1,opt,name=prefix_size,json=prefixSize,proto3" json:"prefix_size,omitempty"`
// The hashes, in binary format, concatenated into one long string. Hashes are
// sorted in lexicographic order. For JSON API users, hashes are
// base64-encoded.
RawHashes []byte `protobuf:"bytes,2,opt,name=raw_hashes,json=rawHashes,proto3" json:"raw_hashes,omitempty"`
}
func (x *RawHashes) Reset() {
*x = RawHashes{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RawHashes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RawHashes) ProtoMessage() {}
func (x *RawHashes) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 RawHashes.ProtoReflect.Descriptor instead.
func (*RawHashes) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{9}
}
func (x *RawHashes) GetPrefixSize() int32 {
if x != nil {
return x.PrefixSize
}
return 0
}
func (x *RawHashes) GetRawHashes() []byte {
if x != nil {
return x.RawHashes
}
return nil
}
// The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or
// compressed removal indices.
type RiceDeltaEncoding struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The offset of the first entry in the encoded data, or, if only a single
// integer was encoded, that single integer's value. If the field is empty or
// missing, assume zero.
FirstValue int64 `protobuf:"varint,1,opt,name=first_value,json=firstValue,proto3" json:"first_value,omitempty"`
// The Golomb-Rice parameter, which is a number between 2 and 28. This field
// is missing (that is, zero) if `num_entries` is zero.
RiceParameter int32 `protobuf:"varint,2,opt,name=rice_parameter,json=riceParameter,proto3" json:"rice_parameter,omitempty"`
// The number of entries that are delta encoded in the encoded data. If only a
// single integer was encoded, this will be zero and the single value will be
// stored in `first_value`.
EntryCount int32 `protobuf:"varint,3,opt,name=entry_count,json=entryCount,proto3" json:"entry_count,omitempty"`
// The encoded deltas that are encoded using the Golomb-Rice coder.
EncodedData []byte `protobuf:"bytes,4,opt,name=encoded_data,json=encodedData,proto3" json:"encoded_data,omitempty"`
}
func (x *RiceDeltaEncoding) Reset() {
*x = RiceDeltaEncoding{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RiceDeltaEncoding) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RiceDeltaEncoding) ProtoMessage() {}
func (x *RiceDeltaEncoding) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 RiceDeltaEncoding.ProtoReflect.Descriptor instead.
func (*RiceDeltaEncoding) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{10}
}
func (x *RiceDeltaEncoding) GetFirstValue() int64 {
if x != nil {
return x.FirstValue
}
return 0
}
func (x *RiceDeltaEncoding) GetRiceParameter() int32 {
if x != nil {
return x.RiceParameter
}
return 0
}
func (x *RiceDeltaEncoding) GetEntryCount() int32 {
if x != nil {
return x.EntryCount
}
return 0
}
func (x *RiceDeltaEncoding) GetEncodedData() []byte {
if x != nil {
return x.EncodedData
}
return nil
}
// Wraps a URI that might be displaying malicious content.
type Submission struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The URI that is being reported for malicious content to be
// analyzed.
Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
// Output only. ThreatTypes found to be associated with the submitted URI
// after reviewing it. This might be empty if the URI was not added to any
// list.
ThreatTypes []ThreatType `protobuf:"varint,2,rep,packed,name=threat_types,json=threatTypes,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_types,omitempty"`
}
func (x *Submission) Reset() {
*x = Submission{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Submission) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Submission) ProtoMessage() {}
func (x *Submission) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 Submission.ProtoReflect.Descriptor instead.
func (*Submission) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{11}
}
func (x *Submission) GetUri() string {
if x != nil {
return x.Uri
}
return ""
}
func (x *Submission) GetThreatTypes() []ThreatType {
if x != nil {
return x.ThreatTypes
}
return nil
}
// Context about the submission including the type of abuse found on the URI and
// supporting details.
// option (google.api.message_visibility).restriction = "TRUSTED_TESTER";
type ThreatInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The type of abuse.
AbuseType ThreatInfo_AbuseType `protobuf:"varint,1,opt,name=abuse_type,json=abuseType,proto3,enum=google.cloud.webrisk.v1.ThreatInfo_AbuseType" json:"abuse_type,omitempty"`
// Confidence that the URI is unsafe.
ThreatConfidence *ThreatInfo_Confidence `protobuf:"bytes,2,opt,name=threat_confidence,json=threatConfidence,proto3" json:"threat_confidence,omitempty"`
// Context about why the URI is unsafe.
ThreatJustification *ThreatInfo_ThreatJustification `protobuf:"bytes,3,opt,name=threat_justification,json=threatJustification,proto3" json:"threat_justification,omitempty"`
}
func (x *ThreatInfo) Reset() {
*x = ThreatInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatInfo) ProtoMessage() {}
func (x *ThreatInfo) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatInfo.ProtoReflect.Descriptor instead.
func (*ThreatInfo) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12}
}
func (x *ThreatInfo) GetAbuseType() ThreatInfo_AbuseType {
if x != nil {
return x.AbuseType
}
return ThreatInfo_ABUSE_TYPE_UNSPECIFIED
}
func (x *ThreatInfo) GetThreatConfidence() *ThreatInfo_Confidence {
if x != nil {
return x.ThreatConfidence
}
return nil
}
func (x *ThreatInfo) GetThreatJustification() *ThreatInfo_ThreatJustification {
if x != nil {
return x.ThreatJustification
}
return nil
}
// Details about how the threat was discovered.
type ThreatDiscovery struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Platform on which the threat was discovered.
Platform ThreatDiscovery_Platform `protobuf:"varint,1,opt,name=platform,proto3,enum=google.cloud.webrisk.v1.ThreatDiscovery_Platform" json:"platform,omitempty"`
// CLDR region code of the countries/regions the URI poses a threat ordered
// from most impact to least impact. Example: "US" for United States.
RegionCodes []string `protobuf:"bytes,2,rep,name=region_codes,json=regionCodes,proto3" json:"region_codes,omitempty"`
}
func (x *ThreatDiscovery) Reset() {
*x = ThreatDiscovery{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatDiscovery) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatDiscovery) ProtoMessage() {}
func (x *ThreatDiscovery) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatDiscovery.ProtoReflect.Descriptor instead.
func (*ThreatDiscovery) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{13}
}
func (x *ThreatDiscovery) GetPlatform() ThreatDiscovery_Platform {
if x != nil {
return x.Platform
}
return ThreatDiscovery_PLATFORM_UNSPECIFIED
}
func (x *ThreatDiscovery) GetRegionCodes() []string {
if x != nil {
return x.RegionCodes
}
return nil
}
// Request to send a potentially phishy URI to WebRisk.
type CreateSubmissionRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project that is making the submission. This
// string is in the format "projects/{project_number}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The submission that contains the content of the phishing report.
Submission *Submission `protobuf:"bytes,2,opt,name=submission,proto3" json:"submission,omitempty"`
}
func (x *CreateSubmissionRequest) Reset() {
*x = CreateSubmissionRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateSubmissionRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateSubmissionRequest) ProtoMessage() {}
func (x *CreateSubmissionRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 CreateSubmissionRequest.ProtoReflect.Descriptor instead.
func (*CreateSubmissionRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{14}
}
func (x *CreateSubmissionRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateSubmissionRequest) GetSubmission() *Submission {
if x != nil {
return x.Submission
}
return nil
}
// Request to send a potentially malicious URI to WebRisk.
type SubmitUriRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project that is making the submission. This
// string is in the format "projects/{project_number}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The submission that contains the URI to be scanned.
Submission *Submission `protobuf:"bytes,2,opt,name=submission,proto3" json:"submission,omitempty"`
// Provides additional information about the submission.
ThreatInfo *ThreatInfo `protobuf:"bytes,3,opt,name=threat_info,json=threatInfo,proto3" json:"threat_info,omitempty"`
// Provides additional information about how the submission was discovered.
ThreatDiscovery *ThreatDiscovery `protobuf:"bytes,4,opt,name=threat_discovery,json=threatDiscovery,proto3" json:"threat_discovery,omitempty"`
}
func (x *SubmitUriRequest) Reset() {
*x = SubmitUriRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SubmitUriRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SubmitUriRequest) ProtoMessage() {}
func (x *SubmitUriRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SubmitUriRequest.ProtoReflect.Descriptor instead.
func (*SubmitUriRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{15}
}
func (x *SubmitUriRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *SubmitUriRequest) GetSubmission() *Submission {
if x != nil {
return x.Submission
}
return nil
}
func (x *SubmitUriRequest) GetThreatInfo() *ThreatInfo {
if x != nil {
return x.ThreatInfo
}
return nil
}
func (x *SubmitUriRequest) GetThreatDiscovery() *ThreatDiscovery {
if x != nil {
return x.ThreatDiscovery
}
return nil
}
// Metadata for the Submit URI long-running operation.
// option (google.api.message_visibility).restriction = "TRUSTED_TESTER";
type SubmitUriMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The state of the operation.
State SubmitUriMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.webrisk.v1.SubmitUriMetadata_State" json:"state,omitempty"`
// Creation time of the operation.
CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Latest update time of the operation.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
}
func (x *SubmitUriMetadata) Reset() {
*x = SubmitUriMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SubmitUriMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SubmitUriMetadata) ProtoMessage() {}
func (x *SubmitUriMetadata) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SubmitUriMetadata.ProtoReflect.Descriptor instead.
func (*SubmitUriMetadata) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{16}
}
func (x *SubmitUriMetadata) GetState() SubmitUriMetadata_State {
if x != nil {
return x.State
}
return SubmitUriMetadata_STATE_UNSPECIFIED
}
func (x *SubmitUriMetadata) GetCreateTime() *timestamppb.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *SubmitUriMetadata) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
// The constraints for this diff.
type ComputeThreatListDiffRequest_Constraints struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The maximum size in number of entries. The diff will not contain more
// entries than this value. This should be a power of 2 between 2**10 and
// 2**20. If zero, no diff size limit is set.
MaxDiffEntries int32 `protobuf:"varint,1,opt,name=max_diff_entries,json=maxDiffEntries,proto3" json:"max_diff_entries,omitempty"`
// Sets the maximum number of entries that the client is willing to have
// in the local database. This should be a power of 2 between 2**10 and
// 2**20. If zero, no database size limit is set.
MaxDatabaseEntries int32 `protobuf:"varint,2,opt,name=max_database_entries,json=maxDatabaseEntries,proto3" json:"max_database_entries,omitempty"`
// The compression types supported by the client.
SupportedCompressions []CompressionType `protobuf:"varint,3,rep,packed,name=supported_compressions,json=supportedCompressions,proto3,enum=google.cloud.webrisk.v1.CompressionType" json:"supported_compressions,omitempty"`
}
func (x *ComputeThreatListDiffRequest_Constraints) Reset() {
*x = ComputeThreatListDiffRequest_Constraints{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComputeThreatListDiffRequest_Constraints) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComputeThreatListDiffRequest_Constraints) ProtoMessage() {}
func (x *ComputeThreatListDiffRequest_Constraints) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ComputeThreatListDiffRequest_Constraints.ProtoReflect.Descriptor instead.
func (*ComputeThreatListDiffRequest_Constraints) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{0, 0}
}
func (x *ComputeThreatListDiffRequest_Constraints) GetMaxDiffEntries() int32 {
if x != nil {
return x.MaxDiffEntries
}
return 0
}
func (x *ComputeThreatListDiffRequest_Constraints) GetMaxDatabaseEntries() int32 {
if x != nil {
return x.MaxDatabaseEntries
}
return 0
}
func (x *ComputeThreatListDiffRequest_Constraints) GetSupportedCompressions() []CompressionType {
if x != nil {
return x.SupportedCompressions
}
return nil
}
// The expected state of a client's local database.
type ComputeThreatListDiffResponse_Checksum struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The SHA256 hash of the client state; that is, of the sorted list of all
// hashes present in the database.
Sha256 []byte `protobuf:"bytes,1,opt,name=sha256,proto3" json:"sha256,omitempty"`
}
func (x *ComputeThreatListDiffResponse_Checksum) Reset() {
*x = ComputeThreatListDiffResponse_Checksum{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ComputeThreatListDiffResponse_Checksum) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ComputeThreatListDiffResponse_Checksum) ProtoMessage() {}
func (x *ComputeThreatListDiffResponse_Checksum) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ComputeThreatListDiffResponse_Checksum.ProtoReflect.Descriptor instead.
func (*ComputeThreatListDiffResponse_Checksum) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{1, 0}
}
func (x *ComputeThreatListDiffResponse_Checksum) GetSha256() []byte {
if x != nil {
return x.Sha256
}
return nil
}
// Contains threat information on a matching uri.
type SearchUrisResponse_ThreatUri struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The ThreatList this threat belongs to.
ThreatTypes []ThreatType `protobuf:"varint,1,rep,packed,name=threat_types,json=threatTypes,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_types,omitempty"`
// The cache lifetime for the returned match. Clients must not cache this
// response past this timestamp to avoid false positives.
ExpireTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
}
func (x *SearchUrisResponse_ThreatUri) Reset() {
*x = SearchUrisResponse_ThreatUri{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchUrisResponse_ThreatUri) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchUrisResponse_ThreatUri) ProtoMessage() {}
func (x *SearchUrisResponse_ThreatUri) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchUrisResponse_ThreatUri.ProtoReflect.Descriptor instead.
func (*SearchUrisResponse_ThreatUri) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{3, 0}
}
func (x *SearchUrisResponse_ThreatUri) GetThreatTypes() []ThreatType {
if x != nil {
return x.ThreatTypes
}
return nil
}
func (x *SearchUrisResponse_ThreatUri) GetExpireTime() *timestamppb.Timestamp {
if x != nil {
return x.ExpireTime
}
return nil
}
// Contains threat information on a matching hash.
type SearchHashesResponse_ThreatHash struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The ThreatList this threat belongs to.
// This must contain at least one entry.
ThreatTypes []ThreatType `protobuf:"varint,1,rep,packed,name=threat_types,json=threatTypes,proto3,enum=google.cloud.webrisk.v1.ThreatType" json:"threat_types,omitempty"`
// A 32 byte SHA256 hash. This field is in binary format. For JSON
// requests, hashes are base64-encoded.
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
// The cache lifetime for the returned match. Clients must not cache this
// response past this timestamp to avoid false positives.
ExpireTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
}
func (x *SearchHashesResponse_ThreatHash) Reset() {
*x = SearchHashesResponse_ThreatHash{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchHashesResponse_ThreatHash) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchHashesResponse_ThreatHash) ProtoMessage() {}
func (x *SearchHashesResponse_ThreatHash) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 SearchHashesResponse_ThreatHash.ProtoReflect.Descriptor instead.
func (*SearchHashesResponse_ThreatHash) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{5, 0}
}
func (x *SearchHashesResponse_ThreatHash) GetThreatTypes() []ThreatType {
if x != nil {
return x.ThreatTypes
}
return nil
}
func (x *SearchHashesResponse_ThreatHash) GetHash() []byte {
if x != nil {
return x.Hash
}
return nil
}
func (x *SearchHashesResponse_ThreatHash) GetExpireTime() *timestamppb.Timestamp {
if x != nil {
return x.ExpireTime
}
return nil
}
// Confidence that a URI is unsafe.
type ThreatInfo_Confidence struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Value:
//
// *ThreatInfo_Confidence_Score
// *ThreatInfo_Confidence_Level
Value isThreatInfo_Confidence_Value `protobuf_oneof:"value"`
}
func (x *ThreatInfo_Confidence) Reset() {
*x = ThreatInfo_Confidence{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatInfo_Confidence) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatInfo_Confidence) ProtoMessage() {}
func (x *ThreatInfo_Confidence) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatInfo_Confidence.ProtoReflect.Descriptor instead.
func (*ThreatInfo_Confidence) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12, 0}
}
func (m *ThreatInfo_Confidence) GetValue() isThreatInfo_Confidence_Value {
if m != nil {
return m.Value
}
return nil
}
func (x *ThreatInfo_Confidence) GetScore() float32 {
if x, ok := x.GetValue().(*ThreatInfo_Confidence_Score); ok {
return x.Score
}
return 0
}
func (x *ThreatInfo_Confidence) GetLevel() ThreatInfo_Confidence_ConfidenceLevel {
if x, ok := x.GetValue().(*ThreatInfo_Confidence_Level); ok {
return x.Level
}
return ThreatInfo_Confidence_CONFIDENCE_LEVEL_UNSPECIFIED
}
type isThreatInfo_Confidence_Value interface {
isThreatInfo_Confidence_Value()
}
type ThreatInfo_Confidence_Score struct {
// A decimal representation of confidence in the range of 0
// to 1 where 0 indicates no confidence and 1 indicates
// complete confidence.
Score float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof"`
}
type ThreatInfo_Confidence_Level struct {
// Enum representation of confidence.
Level ThreatInfo_Confidence_ConfidenceLevel `protobuf:"varint,2,opt,name=level,proto3,enum=google.cloud.webrisk.v1.ThreatInfo_Confidence_ConfidenceLevel,oneof"`
}
func (*ThreatInfo_Confidence_Score) isThreatInfo_Confidence_Value() {}
func (*ThreatInfo_Confidence_Level) isThreatInfo_Confidence_Value() {}
// Context about why the URI is unsafe.
type ThreatInfo_ThreatJustification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Labels associated with this URI that explain how it was classified.
Labels []ThreatInfo_ThreatJustification_JustificationLabel `protobuf:"varint,1,rep,packed,name=labels,proto3,enum=google.cloud.webrisk.v1.ThreatInfo_ThreatJustification_JustificationLabel" json:"labels,omitempty"`
// Free-form context on why this URI is unsafe.
Comments []string `protobuf:"bytes,2,rep,name=comments,proto3" json:"comments,omitempty"`
}
func (x *ThreatInfo_ThreatJustification) Reset() {
*x = ThreatInfo_ThreatJustification{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ThreatInfo_ThreatJustification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ThreatInfo_ThreatJustification) ProtoMessage() {}
func (x *ThreatInfo_ThreatJustification) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_webrisk_v1_webrisk_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 ThreatInfo_ThreatJustification.ProtoReflect.Descriptor instead.
func (*ThreatInfo_ThreatJustification) Descriptor() ([]byte, []int) {
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP(), []int{12, 1}
}
func (x *ThreatInfo_ThreatJustification) GetLabels() []ThreatInfo_ThreatJustification_JustificationLabel {
if x != nil {
return x.Labels
}
return nil
}
func (x *ThreatInfo_ThreatJustification) GetComments() []string {
if x != nil {
return x.Comments
}
return nil
}
var File_google_cloud_webrisk_v1_webrisk_proto protoreflect.FileDescriptor
var file_google_cloud_webrisk_v1_webrisk_proto_rawDesc = []byte{
0x0a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x77,
0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31,
0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e,
0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69,
0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67,
0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 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, 0xc5, 0x03, 0x0a, 0x1c, 0x43, 0x6f,
0x6d, 0x70, 0x75, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44,
0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77,
0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74,
0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, 0x68, 0x72, 0x65, 0x61,
0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x68, 0x0a, 0x0b, 0x63, 0x6f,
0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77,
0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74,
0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e,
0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61,
0x69, 0x6e, 0x74, 0x73, 0x1a, 0xca, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61,
0x69, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x69, 0x66, 0x66,
0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
0x6d, 0x61, 0x78, 0x44, 0x69, 0x66, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30,
0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65,
0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x61,
0x78, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73,
0x12, 0x5f, 0x0a, 0x16, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f,
0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72,
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x15, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x73, 0x22, 0xe1, 0x04, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a,
0x09, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
0x09, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x08, 0x72, 0x65,
0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72,
0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x08, 0x72, 0x65, 0x6d, 0x6f,
0x76, 0x61, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x0f, 0x6e, 0x65, 0x77, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x12, 0x5b, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d,
0x70, 0x75, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69,
0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4e, 0x0a,
0x15, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x78,
0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x02, 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, 0x13, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d,
0x65, 0x6e, 0x64, 0x65, 0x64, 0x4e, 0x65, 0x78, 0x74, 0x44, 0x69, 0x66, 0x66, 0x1a, 0x22, 0x0a,
0x08, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61,
0x32, 0x35, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35,
0x36, 0x22, 0x42, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70,
0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x54, 0x59,
0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x46, 0x46, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45,
0x53, 0x45, 0x54, 0x10, 0x02, 0x22, 0x77, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55,
0x72, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x72,
0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75, 0x72,
0x69, 0x12, 0x4b, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x0b, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xf6,
0x01, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x69, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e,
0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x55, 0x72, 0x69, 0x52, 0x06, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x1a, 0x90, 0x01, 0x0a, 0x09, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x55,
0x72, 0x69, 0x12, 0x46, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e,
0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x74,
0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78,
0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x65, 0x78, 0x70,
0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72,
0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78,
0x12, 0x4b, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31,
0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x0b, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xe0, 0x02,
0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76,
0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x48, 0x61, 0x73,
0x68, 0x52, 0x07, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x14, 0x6e, 0x65,
0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69,
0x6d, 0x65, 0x18, 0x02, 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, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x45, 0x78,
0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0xa5, 0x01, 0x0a, 0x0a, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61,
0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62,
0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79,
0x70, 0x65, 0x52, 0x0b, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12,
0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68,
0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 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, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x22, 0xa6, 0x01, 0x0a, 0x14, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x72, 0x61, 0x77,
0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62,
0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x48, 0x61, 0x73, 0x68, 0x65,
0x73, 0x52, 0x09, 0x72, 0x61, 0x77, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0b,
0x72, 0x69, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x63, 0x65,
0x44, 0x65, 0x6c, 0x74, 0x61, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x72,
0x69, 0x63, 0x65, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x13, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c,
0x73, 0x12, 0x44, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31,
0x2e, 0x52, 0x61, 0x77, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x0a, 0x72, 0x61, 0x77,
0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x72, 0x69, 0x63, 0x65, 0x5f,
0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62,
0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x74,
0x61, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x72, 0x69, 0x63, 0x65, 0x49,
0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x0a, 0x52, 0x61, 0x77, 0x49, 0x6e, 0x64,
0x69, 0x63, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18,
0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x4b,
0x0a, 0x09, 0x52, 0x61, 0x77, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
0x72, 0x61, 0x77, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x09, 0x72, 0x61, 0x77, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x11,
0x52, 0x69, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x56, 0x61, 0x6c,
0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x69, 0x63, 0x65,
0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x65, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e,
0x63, 0x6f, 0x64, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a,
0x0a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x03, 0x75,
0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x75,
0x72, 0x69, 0x12, 0x4b, 0x0a, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e,
0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0,
0x41, 0x03, 0x52, 0x0b, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22,
0xf7, 0x06, 0x0a, 0x0a, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4c,
0x0a, 0x0a, 0x61, 0x62, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x62, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70,
0x65, 0x52, 0x09, 0x61, 0x62, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5b, 0x0a, 0x11,
0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x10, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x14, 0x74, 0x68, 0x72,
0x65, 0x61, 0x74, 0x5f, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x52, 0x13, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xd9, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64,
0x65, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x56, 0x0a, 0x05,
0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69,
0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x22, 0x52, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x46, 0x49,
0x44, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57,
0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x08,
0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x1a, 0x90, 0x02, 0x0a, 0x13, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4a, 0x75, 0x73, 0x74,
0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x06, 0x6c, 0x61, 0x62,
0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b,
0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x2e, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a,
0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x79, 0x0a, 0x12, 0x4a, 0x75, 0x73,
0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12,
0x23, 0x0a, 0x1f, 0x4a, 0x55, 0x53, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x56,
0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a,
0x0b, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x14,
0x0a, 0x10, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4f,
0x52, 0x54, 0x10, 0x03, 0x22, 0x63, 0x0a, 0x09, 0x41, 0x62, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70,
0x65, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x42, 0x55, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a,
0x07, 0x4d, 0x41, 0x4c, 0x57, 0x41, 0x52, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f,
0x43, 0x49, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x45, 0x52, 0x49, 0x4e, 0x47,
0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x57, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x53,
0x4f, 0x46, 0x54, 0x57, 0x41, 0x52, 0x45, 0x10, 0x03, 0x22, 0xd7, 0x01, 0x0a, 0x0f, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x4d, 0x0a,
0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77,
0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74,
0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x21, 0x0a, 0x0c,
0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22,
0x52, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x14, 0x50,
0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44,
0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x4d,
0x41, 0x43, 0x4f, 0x53, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57,
0x53, 0x10, 0x04, 0x22, 0xb0, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75,
0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0a,
0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d,
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x02, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x6d, 0x69,
0x74, 0x55, 0x72, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02,
0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6d,
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72,
0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0b, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x66,
0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76,
0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x53, 0x0a, 0x10, 0x74, 0x68, 0x72, 0x65,
0x61, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x22, 0xb8, 0x02,
0x0a, 0x11, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x55, 0x72, 0x69, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62,
0x6d, 0x69, 0x74, 0x55, 0x72, 0x69, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 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, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15,
0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47,
0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10,
0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03,
0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06,
0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x8f, 0x01, 0x0a, 0x0a, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x48, 0x52, 0x45, 0x41,
0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x41, 0x4c, 0x57, 0x41, 0x52, 0x45, 0x10,
0x01, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x47, 0x49,
0x4e, 0x45, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x57,
0x41, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x4f, 0x46, 0x54, 0x57, 0x41, 0x52, 0x45, 0x10, 0x03,
0x12, 0x28, 0x0a, 0x24, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e,
0x45, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f,
0x43, 0x4f, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x10, 0x04, 0x2a, 0x46, 0x0a, 0x0f, 0x43, 0x6f,
0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
0x1c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
0x07, 0x0a, 0x03, 0x52, 0x41, 0x57, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x49, 0x43, 0x45,
0x10, 0x02, 0x32, 0xcd, 0x07, 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x52, 0x69, 0x73, 0x6b, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xd3, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74,
0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12,
0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77,
0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74,
0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31,
0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69,
0x73, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b,
0xda, 0x41, 0x25, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x63, 0x6f, 0x6e,
0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b,
0x2f, 0x76, 0x31, 0x2f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x3a,
0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x91, 0x01, 0x0a, 0x0a,
0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x69, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x69, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31,
0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x2a, 0xda, 0x41, 0x10, 0x75, 0x72, 0x69, 0x2c, 0x74, 0x68, 0x72, 0x65,
0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f,
0x2f, 0x76, 0x31, 0x2f, 0x75, 0x72, 0x69, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12,
0xa1, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73,
0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
0x68, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65,
0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x48,
0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0xda,
0x41, 0x18, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2c, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13,
0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x61,
0x72, 0x63, 0x68, 0x12, 0xb6, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75,
0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e,
0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22,
0x4b, 0xda, 0x41, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x73, 0x75, 0x62, 0x6d, 0x69,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x0a, 0x73, 0x75, 0x62,
0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa7, 0x01, 0x0a,
0x09, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x55, 0x72, 0x69, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x55, 0x72, 0x69, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c,
0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6d, 0x69,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x55, 0x72, 0x69,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01,
0x2a, 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, 0x75, 0x72, 0x69, 0x73, 0x3a,
0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x1a, 0x4a, 0xca, 0x41, 0x16, 0x77, 0x65, 0x62, 0x72, 0x69,
0x73, 0x6b, 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, 0xb6, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x57, 0x65,
0x62, 0x52, 0x69, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67,
0x6f, 0x2f, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f,
0x77, 0x65, 0x62, 0x72, 0x69, 0x73, 0x6b, 0x70, 0x62, 0x3b, 0x77, 0x65, 0x62, 0x72, 0x69, 0x73,
0x6b, 0x70, 0x62, 0xa2, 0x02, 0x04, 0x47, 0x43, 0x57, 0x52, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x57, 0x65, 0x62, 0x52, 0x69, 0x73,
0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c,
0x6f, 0x75, 0x64, 0x5c, 0x57, 0x65, 0x62, 0x52, 0x69, 0x73, 0x6b, 0x5c, 0x56, 0x31, 0xea, 0x02,
0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a,
0x57, 0x65, 0x62, 0x52, 0x69, 0x73, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (
file_google_cloud_webrisk_v1_webrisk_proto_rawDescOnce sync.Once
file_google_cloud_webrisk_v1_webrisk_proto_rawDescData = file_google_cloud_webrisk_v1_webrisk_proto_rawDesc
)
func file_google_cloud_webrisk_v1_webrisk_proto_rawDescGZIP() []byte {
file_google_cloud_webrisk_v1_webrisk_proto_rawDescOnce.Do(func() {
file_google_cloud_webrisk_v1_webrisk_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_webrisk_v1_webrisk_proto_rawDescData)
})
return file_google_cloud_webrisk_v1_webrisk_proto_rawDescData
}
var file_google_cloud_webrisk_v1_webrisk_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_google_cloud_webrisk_v1_webrisk_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_google_cloud_webrisk_v1_webrisk_proto_goTypes = []interface{}{
(ThreatType)(0), // 0: google.cloud.webrisk.v1.ThreatType
(CompressionType)(0), // 1: google.cloud.webrisk.v1.CompressionType
(ComputeThreatListDiffResponse_ResponseType)(0), // 2: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.ResponseType
(ThreatInfo_AbuseType)(0), // 3: google.cloud.webrisk.v1.ThreatInfo.AbuseType
(ThreatInfo_Confidence_ConfidenceLevel)(0), // 4: google.cloud.webrisk.v1.ThreatInfo.Confidence.ConfidenceLevel
(ThreatInfo_ThreatJustification_JustificationLabel)(0), // 5: google.cloud.webrisk.v1.ThreatInfo.ThreatJustification.JustificationLabel
(ThreatDiscovery_Platform)(0), // 6: google.cloud.webrisk.v1.ThreatDiscovery.Platform
(SubmitUriMetadata_State)(0), // 7: google.cloud.webrisk.v1.SubmitUriMetadata.State
(*ComputeThreatListDiffRequest)(nil), // 8: google.cloud.webrisk.v1.ComputeThreatListDiffRequest
(*ComputeThreatListDiffResponse)(nil), // 9: google.cloud.webrisk.v1.ComputeThreatListDiffResponse
(*SearchUrisRequest)(nil), // 10: google.cloud.webrisk.v1.SearchUrisRequest
(*SearchUrisResponse)(nil), // 11: google.cloud.webrisk.v1.SearchUrisResponse
(*SearchHashesRequest)(nil), // 12: google.cloud.webrisk.v1.SearchHashesRequest
(*SearchHashesResponse)(nil), // 13: google.cloud.webrisk.v1.SearchHashesResponse
(*ThreatEntryAdditions)(nil), // 14: google.cloud.webrisk.v1.ThreatEntryAdditions
(*ThreatEntryRemovals)(nil), // 15: google.cloud.webrisk.v1.ThreatEntryRemovals
(*RawIndices)(nil), // 16: google.cloud.webrisk.v1.RawIndices
(*RawHashes)(nil), // 17: google.cloud.webrisk.v1.RawHashes
(*RiceDeltaEncoding)(nil), // 18: google.cloud.webrisk.v1.RiceDeltaEncoding
(*Submission)(nil), // 19: google.cloud.webrisk.v1.Submission
(*ThreatInfo)(nil), // 20: google.cloud.webrisk.v1.ThreatInfo
(*ThreatDiscovery)(nil), // 21: google.cloud.webrisk.v1.ThreatDiscovery
(*CreateSubmissionRequest)(nil), // 22: google.cloud.webrisk.v1.CreateSubmissionRequest
(*SubmitUriRequest)(nil), // 23: google.cloud.webrisk.v1.SubmitUriRequest
(*SubmitUriMetadata)(nil), // 24: google.cloud.webrisk.v1.SubmitUriMetadata
(*ComputeThreatListDiffRequest_Constraints)(nil), // 25: google.cloud.webrisk.v1.ComputeThreatListDiffRequest.Constraints
(*ComputeThreatListDiffResponse_Checksum)(nil), // 26: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.Checksum
(*SearchUrisResponse_ThreatUri)(nil), // 27: google.cloud.webrisk.v1.SearchUrisResponse.ThreatUri
(*SearchHashesResponse_ThreatHash)(nil), // 28: google.cloud.webrisk.v1.SearchHashesResponse.ThreatHash
(*ThreatInfo_Confidence)(nil), // 29: google.cloud.webrisk.v1.ThreatInfo.Confidence
(*ThreatInfo_ThreatJustification)(nil), // 30: google.cloud.webrisk.v1.ThreatInfo.ThreatJustification
(*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp
(*longrunningpb.Operation)(nil), // 32: google.longrunning.Operation
}
var file_google_cloud_webrisk_v1_webrisk_proto_depIdxs = []int32{
0, // 0: google.cloud.webrisk.v1.ComputeThreatListDiffRequest.threat_type:type_name -> google.cloud.webrisk.v1.ThreatType
25, // 1: google.cloud.webrisk.v1.ComputeThreatListDiffRequest.constraints:type_name -> google.cloud.webrisk.v1.ComputeThreatListDiffRequest.Constraints
2, // 2: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.response_type:type_name -> google.cloud.webrisk.v1.ComputeThreatListDiffResponse.ResponseType
14, // 3: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.additions:type_name -> google.cloud.webrisk.v1.ThreatEntryAdditions
15, // 4: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.removals:type_name -> google.cloud.webrisk.v1.ThreatEntryRemovals
26, // 5: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.checksum:type_name -> google.cloud.webrisk.v1.ComputeThreatListDiffResponse.Checksum
31, // 6: google.cloud.webrisk.v1.ComputeThreatListDiffResponse.recommended_next_diff:type_name -> google.protobuf.Timestamp
0, // 7: google.cloud.webrisk.v1.SearchUrisRequest.threat_types:type_name -> google.cloud.webrisk.v1.ThreatType
27, // 8: google.cloud.webrisk.v1.SearchUrisResponse.threat:type_name -> google.cloud.webrisk.v1.SearchUrisResponse.ThreatUri
0, // 9: google.cloud.webrisk.v1.SearchHashesRequest.threat_types:type_name -> google.cloud.webrisk.v1.ThreatType
28, // 10: google.cloud.webrisk.v1.SearchHashesResponse.threats:type_name -> google.cloud.webrisk.v1.SearchHashesResponse.ThreatHash
31, // 11: google.cloud.webrisk.v1.SearchHashesResponse.negative_expire_time:type_name -> google.protobuf.Timestamp
17, // 12: google.cloud.webrisk.v1.ThreatEntryAdditions.raw_hashes:type_name -> google.cloud.webrisk.v1.RawHashes
18, // 13: google.cloud.webrisk.v1.ThreatEntryAdditions.rice_hashes:type_name -> google.cloud.webrisk.v1.RiceDeltaEncoding
16, // 14: google.cloud.webrisk.v1.ThreatEntryRemovals.raw_indices:type_name -> google.cloud.webrisk.v1.RawIndices
18, // 15: google.cloud.webrisk.v1.ThreatEntryRemovals.rice_indices:type_name -> google.cloud.webrisk.v1.RiceDeltaEncoding
0, // 16: google.cloud.webrisk.v1.Submission.threat_types:type_name -> google.cloud.webrisk.v1.ThreatType
3, // 17: google.cloud.webrisk.v1.ThreatInfo.abuse_type:type_name -> google.cloud.webrisk.v1.ThreatInfo.AbuseType
29, // 18: google.cloud.webrisk.v1.ThreatInfo.threat_confidence:type_name -> google.cloud.webrisk.v1.ThreatInfo.Confidence
30, // 19: google.cloud.webrisk.v1.ThreatInfo.threat_justification:type_name -> google.cloud.webrisk.v1.ThreatInfo.ThreatJustification
6, // 20: google.cloud.webrisk.v1.ThreatDiscovery.platform:type_name -> google.cloud.webrisk.v1.ThreatDiscovery.Platform
19, // 21: google.cloud.webrisk.v1.CreateSubmissionRequest.submission:type_name -> google.cloud.webrisk.v1.Submission
19, // 22: google.cloud.webrisk.v1.SubmitUriRequest.submission:type_name -> google.cloud.webrisk.v1.Submission
20, // 23: google.cloud.webrisk.v1.SubmitUriRequest.threat_info:type_name -> google.cloud.webrisk.v1.ThreatInfo
21, // 24: google.cloud.webrisk.v1.SubmitUriRequest.threat_discovery:type_name -> google.cloud.webrisk.v1.ThreatDiscovery
7, // 25: google.cloud.webrisk.v1.SubmitUriMetadata.state:type_name -> google.cloud.webrisk.v1.SubmitUriMetadata.State
31, // 26: google.cloud.webrisk.v1.SubmitUriMetadata.create_time:type_name -> google.protobuf.Timestamp
31, // 27: google.cloud.webrisk.v1.SubmitUriMetadata.update_time:type_name -> google.protobuf.Timestamp
1, // 28: google.cloud.webrisk.v1.ComputeThreatListDiffRequest.Constraints.supported_compressions:type_name -> google.cloud.webrisk.v1.CompressionType
0, // 29: google.cloud.webrisk.v1.SearchUrisResponse.ThreatUri.threat_types:type_name -> google.cloud.webrisk.v1.ThreatType
31, // 30: google.cloud.webrisk.v1.SearchUrisResponse.ThreatUri.expire_time:type_name -> google.protobuf.Timestamp
0, // 31: google.cloud.webrisk.v1.SearchHashesResponse.ThreatHash.threat_types:type_name -> google.cloud.webrisk.v1.ThreatType
31, // 32: google.cloud.webrisk.v1.SearchHashesResponse.ThreatHash.expire_time:type_name -> google.protobuf.Timestamp
4, // 33: google.cloud.webrisk.v1.ThreatInfo.Confidence.level:type_name -> google.cloud.webrisk.v1.ThreatInfo.Confidence.ConfidenceLevel
5, // 34: google.cloud.webrisk.v1.ThreatInfo.ThreatJustification.labels:type_name -> google.cloud.webrisk.v1.ThreatInfo.ThreatJustification.JustificationLabel
8, // 35: google.cloud.webrisk.v1.WebRiskService.ComputeThreatListDiff:input_type -> google.cloud.webrisk.v1.ComputeThreatListDiffRequest
10, // 36: google.cloud.webrisk.v1.WebRiskService.SearchUris:input_type -> google.cloud.webrisk.v1.SearchUrisRequest
12, // 37: google.cloud.webrisk.v1.WebRiskService.SearchHashes:input_type -> google.cloud.webrisk.v1.SearchHashesRequest
22, // 38: google.cloud.webrisk.v1.WebRiskService.CreateSubmission:input_type -> google.cloud.webrisk.v1.CreateSubmissionRequest
23, // 39: google.cloud.webrisk.v1.WebRiskService.SubmitUri:input_type -> google.cloud.webrisk.v1.SubmitUriRequest
9, // 40: google.cloud.webrisk.v1.WebRiskService.ComputeThreatListDiff:output_type -> google.cloud.webrisk.v1.ComputeThreatListDiffResponse
11, // 41: google.cloud.webrisk.v1.WebRiskService.SearchUris:output_type -> google.cloud.webrisk.v1.SearchUrisResponse
13, // 42: google.cloud.webrisk.v1.WebRiskService.SearchHashes:output_type -> google.cloud.webrisk.v1.SearchHashesResponse
19, // 43: google.cloud.webrisk.v1.WebRiskService.CreateSubmission:output_type -> google.cloud.webrisk.v1.Submission
32, // 44: google.cloud.webrisk.v1.WebRiskService.SubmitUri:output_type -> google.longrunning.Operation
40, // [40:45] is the sub-list for method output_type
35, // [35:40] is the sub-list for method input_type
35, // [35:35] is the sub-list for extension type_name
35, // [35:35] is the sub-list for extension extendee
0, // [0:35] is the sub-list for field type_name
}
func init() { file_google_cloud_webrisk_v1_webrisk_proto_init() }
func file_google_cloud_webrisk_v1_webrisk_proto_init() {
if File_google_cloud_webrisk_v1_webrisk_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComputeThreatListDiffRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComputeThreatListDiffResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchUrisRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchUrisResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchHashesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchHashesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatEntryAdditions); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatEntryRemovals); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RawIndices); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RawHashes); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RiceDeltaEncoding); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Submission); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatDiscovery); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateSubmissionRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SubmitUriRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SubmitUriMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComputeThreatListDiffRequest_Constraints); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ComputeThreatListDiffResponse_Checksum); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchUrisResponse_ThreatUri); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchHashesResponse_ThreatHash); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatInfo_Confidence); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ThreatInfo_ThreatJustification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_webrisk_v1_webrisk_proto_msgTypes[21].OneofWrappers = []interface{}{
(*ThreatInfo_Confidence_Score)(nil),
(*ThreatInfo_Confidence_Level)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_webrisk_v1_webrisk_proto_rawDesc,
NumEnums: 8,
NumMessages: 23,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_google_cloud_webrisk_v1_webrisk_proto_goTypes,
DependencyIndexes: file_google_cloud_webrisk_v1_webrisk_proto_depIdxs,
EnumInfos: file_google_cloud_webrisk_v1_webrisk_proto_enumTypes,
MessageInfos: file_google_cloud_webrisk_v1_webrisk_proto_msgTypes,
}.Build()
File_google_cloud_webrisk_v1_webrisk_proto = out.File
file_google_cloud_webrisk_v1_webrisk_proto_rawDesc = nil
file_google_cloud_webrisk_v1_webrisk_proto_goTypes = nil
file_google_cloud_webrisk_v1_webrisk_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
// WebRiskServiceClient is the client API for WebRiskService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type WebRiskServiceClient interface {
// Gets the most recent threat list diffs. These diffs should be applied to
// a local database of hashes to keep it up-to-date. If the local database is
// empty or excessively out-of-date, a complete snapshot of the database will
// be returned. This Method only updates a single ThreatList at a time. To
// update multiple ThreatList databases, this method needs to be called once
// for each list.
ComputeThreatListDiff(ctx context.Context, in *ComputeThreatListDiffRequest, opts ...grpc.CallOption) (*ComputeThreatListDiffResponse, error)
// This method is used to check whether a URI is on a given threatList.
// Multiple threatLists may be searched in a single query.
// The response will list all requested threatLists the URI was found to
// match. If the URI is not found on any of the requested ThreatList an
// empty response will be returned.
SearchUris(ctx context.Context, in *SearchUrisRequest, opts ...grpc.CallOption) (*SearchUrisResponse, error)
// Gets the full hashes that match the requested hash prefix.
// This is used after a hash prefix is looked up in a threatList
// and there is a match. The client side threatList only holds partial hashes
// so the client must query this method to determine if there is a full
// hash match of a threat.
SearchHashes(ctx context.Context, in *SearchHashesRequest, opts ...grpc.CallOption) (*SearchHashesResponse, error)
// Creates a Submission of a URI suspected of containing phishing content to
// be reviewed. If the result verifies the existence of malicious phishing
// content, the site will be added to the [Google's Social Engineering
// lists](https://support.google.com/webmasters/answer/6350487/) in order to
// protect users that could get exposed to this threat in the future. Only
// allowlisted projects can use this method during Early Access. Please reach
// out to Sales or your customer engineer to obtain access.
CreateSubmission(ctx context.Context, in *CreateSubmissionRequest, opts ...grpc.CallOption) (*Submission, error)
// Submits a URI suspected of containing malicious content to be reviewed.
// Returns a google.longrunning.Operation which, once the review is complete,
// is updated with its result. You can use the [Pub/Sub API]
// (https://cloud.google.com/pubsub) to receive notifications for the returned
// Operation. If the result verifies the existence of malicious content, the
// site will be added to the [Google's Social Engineering lists]
// (https://support.google.com/webmasters/answer/6350487/) in order to
// protect users that could get exposed to this threat in the future. Only
// allowlisted projects can use this method during Early Access. Please reach
// out to Sales or your customer engineer to obtain access.
SubmitUri(ctx context.Context, in *SubmitUriRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error)
}
type webRiskServiceClient struct {
cc grpc.ClientConnInterface
}
func NewWebRiskServiceClient(cc grpc.ClientConnInterface) WebRiskServiceClient {
return &webRiskServiceClient{cc}
}
func (c *webRiskServiceClient) ComputeThreatListDiff(ctx context.Context, in *ComputeThreatListDiffRequest, opts ...grpc.CallOption) (*ComputeThreatListDiffResponse, error) {
out := new(ComputeThreatListDiffResponse)
err := c.cc.Invoke(ctx, "/google.cloud.webrisk.v1.WebRiskService/ComputeThreatListDiff", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *webRiskServiceClient) SearchUris(ctx context.Context, in *SearchUrisRequest, opts ...grpc.CallOption) (*SearchUrisResponse, error) {
out := new(SearchUrisResponse)
err := c.cc.Invoke(ctx, "/google.cloud.webrisk.v1.WebRiskService/SearchUris", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *webRiskServiceClient) SearchHashes(ctx context.Context, in *SearchHashesRequest, opts ...grpc.CallOption) (*SearchHashesResponse, error) {
out := new(SearchHashesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.webrisk.v1.WebRiskService/SearchHashes", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *webRiskServiceClient) CreateSubmission(ctx context.Context, in *CreateSubmissionRequest, opts ...grpc.CallOption) (*Submission, error) {
out := new(Submission)
err := c.cc.Invoke(ctx, "/google.cloud.webrisk.v1.WebRiskService/CreateSubmission", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *webRiskServiceClient) SubmitUri(ctx context.Context, in *SubmitUriRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) {
out := new(longrunningpb.Operation)
err := c.cc.Invoke(ctx, "/google.cloud.webrisk.v1.WebRiskService/SubmitUri", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// WebRiskServiceServer is the server API for WebRiskService service.
type WebRiskServiceServer interface {
// Gets the most recent threat list diffs. These diffs should be applied to
// a local database of hashes to keep it up-to-date. If the local database is
// empty or excessively out-of-date, a complete snapshot of the database will
// be returned. This Method only updates a single ThreatList at a time. To
// update multiple ThreatList databases, this method needs to be called once
// for each list.
ComputeThreatListDiff(context.Context, *ComputeThreatListDiffRequest) (*ComputeThreatListDiffResponse, error)
// This method is used to check whether a URI is on a given threatList.
// Multiple threatLists may be searched in a single query.
// The response will list all requested threatLists the URI was found to
// match. If the URI is not found on any of the requested ThreatList an
// empty response will be returned.
SearchUris(context.Context, *SearchUrisRequest) (*SearchUrisResponse, error)
// Gets the full hashes that match the requested hash prefix.
// This is used after a hash prefix is looked up in a threatList
// and there is a match. The client side threatList only holds partial hashes
// so the client must query this method to determine if there is a full
// hash match of a threat.
SearchHashes(context.Context, *SearchHashesRequest) (*SearchHashesResponse, error)
// Creates a Submission of a URI suspected of containing phishing content to
// be reviewed. If the result verifies the existence of malicious phishing
// content, the site will be added to the [Google's Social Engineering
// lists](https://support.google.com/webmasters/answer/6350487/) in order to
// protect users that could get exposed to this threat in the future. Only
// allowlisted projects can use this method during Early Access. Please reach
// out to Sales or your customer engineer to obtain access.
CreateSubmission(context.Context, *CreateSubmissionRequest) (*Submission, error)
// Submits a URI suspected of containing malicious content to be reviewed.
// Returns a google.longrunning.Operation which, once the review is complete,
// is updated with its result. You can use the [Pub/Sub API]
// (https://cloud.google.com/pubsub) to receive notifications for the returned
// Operation. If the result verifies the existence of malicious content, the
// site will be added to the [Google's Social Engineering lists]
// (https://support.google.com/webmasters/answer/6350487/) in order to
// protect users that could get exposed to this threat in the future. Only
// allowlisted projects can use this method during Early Access. Please reach
// out to Sales or your customer engineer to obtain access.
SubmitUri(context.Context, *SubmitUriRequest) (*longrunningpb.Operation, error)
}
// UnimplementedWebRiskServiceServer can be embedded to have forward compatible implementations.
type UnimplementedWebRiskServiceServer struct {
}
func (*UnimplementedWebRiskServiceServer) ComputeThreatListDiff(context.Context, *ComputeThreatListDiffRequest) (*ComputeThreatListDiffResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ComputeThreatListDiff not implemented")
}
func (*UnimplementedWebRiskServiceServer) SearchUris(context.Context, *SearchUrisRequest) (*SearchUrisResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SearchUris not implemented")
}
func (*UnimplementedWebRiskServiceServer) SearchHashes(context.Context, *SearchHashesRequest) (*SearchHashesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SearchHashes not implemented")
}
func (*UnimplementedWebRiskServiceServer) CreateSubmission(context.Context, *CreateSubmissionRequest) (*Submission, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateSubmission not implemented")
}
func (*UnimplementedWebRiskServiceServer) SubmitUri(context.Context, *SubmitUriRequest) (*longrunningpb.Operation, error) {
return nil, status.Errorf(codes.Unimplemented, "method SubmitUri not implemented")
}
func RegisterWebRiskServiceServer(s *grpc.Server, srv WebRiskServiceServer) {
s.RegisterService(&_WebRiskService_serviceDesc, srv)
}
func _WebRiskService_ComputeThreatListDiff_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ComputeThreatListDiffRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WebRiskServiceServer).ComputeThreatListDiff(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.webrisk.v1.WebRiskService/ComputeThreatListDiff",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WebRiskServiceServer).ComputeThreatListDiff(ctx, req.(*ComputeThreatListDiffRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WebRiskService_SearchUris_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SearchUrisRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WebRiskServiceServer).SearchUris(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.webrisk.v1.WebRiskService/SearchUris",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WebRiskServiceServer).SearchUris(ctx, req.(*SearchUrisRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WebRiskService_SearchHashes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SearchHashesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WebRiskServiceServer).SearchHashes(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.webrisk.v1.WebRiskService/SearchHashes",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WebRiskServiceServer).SearchHashes(ctx, req.(*SearchHashesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WebRiskService_CreateSubmission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateSubmissionRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WebRiskServiceServer).CreateSubmission(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.webrisk.v1.WebRiskService/CreateSubmission",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WebRiskServiceServer).CreateSubmission(ctx, req.(*CreateSubmissionRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WebRiskService_SubmitUri_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SubmitUriRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WebRiskServiceServer).SubmitUri(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.webrisk.v1.WebRiskService/SubmitUri",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WebRiskServiceServer).SubmitUri(ctx, req.(*SubmitUriRequest))
}
return interceptor(ctx, in, info, handler)
}
var _WebRiskService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.webrisk.v1.WebRiskService",
HandlerType: (*WebRiskServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ComputeThreatListDiff",
Handler: _WebRiskService_ComputeThreatListDiff_Handler,
},
{
MethodName: "SearchUris",
Handler: _WebRiskService_SearchUris_Handler,
},
{
MethodName: "SearchHashes",
Handler: _WebRiskService_SearchHashes_Handler,
},
{
MethodName: "CreateSubmission",
Handler: _WebRiskService_CreateSubmission_Handler,
},
{
MethodName: "SubmitUri",
Handler: _WebRiskService_SubmitUri_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/webrisk/v1/webrisk.proto",
}