blob: 411e77287cd3ef67327376b0a63b73c68dd62adf [file] [log] [blame]
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.12.2
// source: google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto
package recaptchaenterprisepb
import (
context "context"
reflect "reflect"
sync "sync"
empty "github.com/golang/protobuf/ptypes/empty"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
_ "google.golang.org/genproto/googleapis/api/annotations"
field_mask "google.golang.org/genproto/protobuf/field_mask"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Enum that represents the types of annotations.
type AnnotateAssessmentRequest_Annotation int32
const (
// Default unspecified type.
AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED AnnotateAssessmentRequest_Annotation = 0
// Provides information that the event turned out to be legitimate.
AnnotateAssessmentRequest_LEGITIMATE AnnotateAssessmentRequest_Annotation = 1
// Provides information that the event turned out to be fraudulent.
AnnotateAssessmentRequest_FRAUDULENT AnnotateAssessmentRequest_Annotation = 2
// Provides information that the event was related to a login event in which
// the user typed the correct password. Deprecated, prefer indicating
// CORRECT_PASSWORD through the reasons field instead.
//
// Deprecated: Do not use.
AnnotateAssessmentRequest_PASSWORD_CORRECT AnnotateAssessmentRequest_Annotation = 3
// Provides information that the event was related to a login event in which
// the user typed the incorrect password. Deprecated, prefer indicating
// INCORRECT_PASSWORD through the reasons field instead.
//
// Deprecated: Do not use.
AnnotateAssessmentRequest_PASSWORD_INCORRECT AnnotateAssessmentRequest_Annotation = 4
)
// Enum value maps for AnnotateAssessmentRequest_Annotation.
var (
AnnotateAssessmentRequest_Annotation_name = map[int32]string{
0: "ANNOTATION_UNSPECIFIED",
1: "LEGITIMATE",
2: "FRAUDULENT",
3: "PASSWORD_CORRECT",
4: "PASSWORD_INCORRECT",
}
AnnotateAssessmentRequest_Annotation_value = map[string]int32{
"ANNOTATION_UNSPECIFIED": 0,
"LEGITIMATE": 1,
"FRAUDULENT": 2,
"PASSWORD_CORRECT": 3,
"PASSWORD_INCORRECT": 4,
}
)
func (x AnnotateAssessmentRequest_Annotation) Enum() *AnnotateAssessmentRequest_Annotation {
p := new(AnnotateAssessmentRequest_Annotation)
*p = x
return p
}
func (x AnnotateAssessmentRequest_Annotation) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AnnotateAssessmentRequest_Annotation) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[0].Descriptor()
}
func (AnnotateAssessmentRequest_Annotation) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[0]
}
func (x AnnotateAssessmentRequest_Annotation) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AnnotateAssessmentRequest_Annotation.Descriptor instead.
func (AnnotateAssessmentRequest_Annotation) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{1, 0}
}
// Enum that represents potential reasons for annotating an assessment.
type AnnotateAssessmentRequest_Reason int32
const (
// Default unspecified reason.
AnnotateAssessmentRequest_REASON_UNSPECIFIED AnnotateAssessmentRequest_Reason = 0
// Indicates that the transaction had a chargeback issued with no other
// details. When possible, specify the type by using CHARGEBACK_FRAUD or
// CHARGEBACK_DISPUTE instead.
AnnotateAssessmentRequest_CHARGEBACK AnnotateAssessmentRequest_Reason = 1
// Indicates that the transaction had a chargeback issued related to an
// alleged unauthorized transaction from the cardholder's perspective (for
// example, the card number was stolen).
AnnotateAssessmentRequest_CHARGEBACK_FRAUD AnnotateAssessmentRequest_Reason = 8
// Indicates that the transaction had a chargeback issued related to the
// cardholder having provided their card details but allegedly not being
// satisfied with the purchase (for example, misrepresentation, attempted
// cancellation).
AnnotateAssessmentRequest_CHARGEBACK_DISPUTE AnnotateAssessmentRequest_Reason = 9
// Indicates that the completed payment transaction was refunded by the
// seller.
AnnotateAssessmentRequest_REFUND AnnotateAssessmentRequest_Reason = 10
// Indicates that the completed payment transaction was determined to be
// fraudulent by the seller, and was cancelled and refunded as a result.
AnnotateAssessmentRequest_REFUND_FRAUD AnnotateAssessmentRequest_Reason = 11
// Indicates that the payment transaction was accepted, and the user was
// charged.
AnnotateAssessmentRequest_TRANSACTION_ACCEPTED AnnotateAssessmentRequest_Reason = 12
// Indicates that the payment transaction was declined, for example due to
// invalid card details.
AnnotateAssessmentRequest_TRANSACTION_DECLINED AnnotateAssessmentRequest_Reason = 13
// Indicates the transaction associated with the assessment is suspected of
// being fraudulent based on the payment method, billing details, shipping
// address or other transaction information.
AnnotateAssessmentRequest_PAYMENT_HEURISTICS AnnotateAssessmentRequest_Reason = 2
// Indicates that the user was served a 2FA challenge. An old assessment
// with `ENUM_VALUES.INITIATED_TWO_FACTOR` reason that has not been
// overwritten with `PASSED_TWO_FACTOR` is treated as an abandoned 2FA flow.
// This is equivalent to `FAILED_TWO_FACTOR`.
AnnotateAssessmentRequest_INITIATED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 7
// Indicates that the user passed a 2FA challenge.
AnnotateAssessmentRequest_PASSED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 3
// Indicates that the user failed a 2FA challenge.
AnnotateAssessmentRequest_FAILED_TWO_FACTOR AnnotateAssessmentRequest_Reason = 4
// Indicates the user provided the correct password.
AnnotateAssessmentRequest_CORRECT_PASSWORD AnnotateAssessmentRequest_Reason = 5
// Indicates the user provided an incorrect password.
AnnotateAssessmentRequest_INCORRECT_PASSWORD AnnotateAssessmentRequest_Reason = 6
// Indicates that the user sent unwanted and abusive messages to other users
// of the platform, such as spam, scams, phishing, or social engineering.
AnnotateAssessmentRequest_SOCIAL_SPAM AnnotateAssessmentRequest_Reason = 14
)
// Enum value maps for AnnotateAssessmentRequest_Reason.
var (
AnnotateAssessmentRequest_Reason_name = map[int32]string{
0: "REASON_UNSPECIFIED",
1: "CHARGEBACK",
8: "CHARGEBACK_FRAUD",
9: "CHARGEBACK_DISPUTE",
10: "REFUND",
11: "REFUND_FRAUD",
12: "TRANSACTION_ACCEPTED",
13: "TRANSACTION_DECLINED",
2: "PAYMENT_HEURISTICS",
7: "INITIATED_TWO_FACTOR",
3: "PASSED_TWO_FACTOR",
4: "FAILED_TWO_FACTOR",
5: "CORRECT_PASSWORD",
6: "INCORRECT_PASSWORD",
14: "SOCIAL_SPAM",
}
AnnotateAssessmentRequest_Reason_value = map[string]int32{
"REASON_UNSPECIFIED": 0,
"CHARGEBACK": 1,
"CHARGEBACK_FRAUD": 8,
"CHARGEBACK_DISPUTE": 9,
"REFUND": 10,
"REFUND_FRAUD": 11,
"TRANSACTION_ACCEPTED": 12,
"TRANSACTION_DECLINED": 13,
"PAYMENT_HEURISTICS": 2,
"INITIATED_TWO_FACTOR": 7,
"PASSED_TWO_FACTOR": 3,
"FAILED_TWO_FACTOR": 4,
"CORRECT_PASSWORD": 5,
"INCORRECT_PASSWORD": 6,
"SOCIAL_SPAM": 14,
}
)
func (x AnnotateAssessmentRequest_Reason) Enum() *AnnotateAssessmentRequest_Reason {
p := new(AnnotateAssessmentRequest_Reason)
*p = x
return p
}
func (x AnnotateAssessmentRequest_Reason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AnnotateAssessmentRequest_Reason) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[1].Descriptor()
}
func (AnnotateAssessmentRequest_Reason) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[1]
}
func (x AnnotateAssessmentRequest_Reason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AnnotateAssessmentRequest_Reason.Descriptor instead.
func (AnnotateAssessmentRequest_Reason) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{1, 1}
}
// Reasons contributing to the risk analysis verdict.
type RiskAnalysis_ClassificationReason int32
const (
// Default unspecified type.
RiskAnalysis_CLASSIFICATION_REASON_UNSPECIFIED RiskAnalysis_ClassificationReason = 0
// Interactions matched the behavior of an automated agent.
RiskAnalysis_AUTOMATION RiskAnalysis_ClassificationReason = 1
// The event originated from an illegitimate environment.
RiskAnalysis_UNEXPECTED_ENVIRONMENT RiskAnalysis_ClassificationReason = 2
// Traffic volume from the event source is higher than normal.
RiskAnalysis_TOO_MUCH_TRAFFIC RiskAnalysis_ClassificationReason = 3
// Interactions with the site were significantly different than expected
// patterns.
RiskAnalysis_UNEXPECTED_USAGE_PATTERNS RiskAnalysis_ClassificationReason = 4
// Too little traffic has been received from this site thus far to generate
// quality risk analysis.
RiskAnalysis_LOW_CONFIDENCE_SCORE RiskAnalysis_ClassificationReason = 5
)
// Enum value maps for RiskAnalysis_ClassificationReason.
var (
RiskAnalysis_ClassificationReason_name = map[int32]string{
0: "CLASSIFICATION_REASON_UNSPECIFIED",
1: "AUTOMATION",
2: "UNEXPECTED_ENVIRONMENT",
3: "TOO_MUCH_TRAFFIC",
4: "UNEXPECTED_USAGE_PATTERNS",
5: "LOW_CONFIDENCE_SCORE",
}
RiskAnalysis_ClassificationReason_value = map[string]int32{
"CLASSIFICATION_REASON_UNSPECIFIED": 0,
"AUTOMATION": 1,
"UNEXPECTED_ENVIRONMENT": 2,
"TOO_MUCH_TRAFFIC": 3,
"UNEXPECTED_USAGE_PATTERNS": 4,
"LOW_CONFIDENCE_SCORE": 5,
}
)
func (x RiskAnalysis_ClassificationReason) Enum() *RiskAnalysis_ClassificationReason {
p := new(RiskAnalysis_ClassificationReason)
*p = x
return p
}
func (x RiskAnalysis_ClassificationReason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (RiskAnalysis_ClassificationReason) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[2].Descriptor()
}
func (RiskAnalysis_ClassificationReason) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[2]
}
func (x RiskAnalysis_ClassificationReason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use RiskAnalysis_ClassificationReason.Descriptor instead.
func (RiskAnalysis_ClassificationReason) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{6, 0}
}
// Enum that represents the types of invalid token reasons.
type TokenProperties_InvalidReason int32
const (
// Default unspecified type.
TokenProperties_INVALID_REASON_UNSPECIFIED TokenProperties_InvalidReason = 0
// If the failure reason was not accounted for.
TokenProperties_UNKNOWN_INVALID_REASON TokenProperties_InvalidReason = 1
// The provided user verification token was malformed.
TokenProperties_MALFORMED TokenProperties_InvalidReason = 2
// The user verification token had expired.
TokenProperties_EXPIRED TokenProperties_InvalidReason = 3
// The user verification had already been seen.
TokenProperties_DUPE TokenProperties_InvalidReason = 4
// The user verification token was not present.
TokenProperties_MISSING TokenProperties_InvalidReason = 5
// A retriable error (such as network failure) occurred on the browser.
// Could easily be simulated by an attacker.
TokenProperties_BROWSER_ERROR TokenProperties_InvalidReason = 6
)
// Enum value maps for TokenProperties_InvalidReason.
var (
TokenProperties_InvalidReason_name = map[int32]string{
0: "INVALID_REASON_UNSPECIFIED",
1: "UNKNOWN_INVALID_REASON",
2: "MALFORMED",
3: "EXPIRED",
4: "DUPE",
5: "MISSING",
6: "BROWSER_ERROR",
}
TokenProperties_InvalidReason_value = map[string]int32{
"INVALID_REASON_UNSPECIFIED": 0,
"UNKNOWN_INVALID_REASON": 1,
"MALFORMED": 2,
"EXPIRED": 3,
"DUPE": 4,
"MISSING": 5,
"BROWSER_ERROR": 6,
}
)
func (x TokenProperties_InvalidReason) Enum() *TokenProperties_InvalidReason {
p := new(TokenProperties_InvalidReason)
*p = x
return p
}
func (x TokenProperties_InvalidReason) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TokenProperties_InvalidReason) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[3].Descriptor()
}
func (TokenProperties_InvalidReason) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[3]
}
func (x TokenProperties_InvalidReason) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TokenProperties_InvalidReason.Descriptor instead.
func (TokenProperties_InvalidReason) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{7, 0}
}
// Labels returned by account defender for this request.
type AccountDefenderAssessment_AccountDefenderLabel int32
const (
// Default unspecified type.
AccountDefenderAssessment_ACCOUNT_DEFENDER_LABEL_UNSPECIFIED AccountDefenderAssessment_AccountDefenderLabel = 0
// The request matches a known good profile for the user.
AccountDefenderAssessment_PROFILE_MATCH AccountDefenderAssessment_AccountDefenderLabel = 1
// The request is potentially a suspicious login event and must be further
// verified either through multi-factor authentication or another system.
AccountDefenderAssessment_SUSPICIOUS_LOGIN_ACTIVITY AccountDefenderAssessment_AccountDefenderLabel = 2
// The request matched a profile that previously had suspicious account
// creation behavior. This can mean that this is a fake account.
AccountDefenderAssessment_SUSPICIOUS_ACCOUNT_CREATION AccountDefenderAssessment_AccountDefenderLabel = 3
// The account in the request has a high number of related accounts. It does
// not necessarily imply that the account is bad but can require further
// investigation.
AccountDefenderAssessment_RELATED_ACCOUNTS_NUMBER_HIGH AccountDefenderAssessment_AccountDefenderLabel = 4
)
// Enum value maps for AccountDefenderAssessment_AccountDefenderLabel.
var (
AccountDefenderAssessment_AccountDefenderLabel_name = map[int32]string{
0: "ACCOUNT_DEFENDER_LABEL_UNSPECIFIED",
1: "PROFILE_MATCH",
2: "SUSPICIOUS_LOGIN_ACTIVITY",
3: "SUSPICIOUS_ACCOUNT_CREATION",
4: "RELATED_ACCOUNTS_NUMBER_HIGH",
}
AccountDefenderAssessment_AccountDefenderLabel_value = map[string]int32{
"ACCOUNT_DEFENDER_LABEL_UNSPECIFIED": 0,
"PROFILE_MATCH": 1,
"SUSPICIOUS_LOGIN_ACTIVITY": 2,
"SUSPICIOUS_ACCOUNT_CREATION": 3,
"RELATED_ACCOUNTS_NUMBER_HIGH": 4,
}
)
func (x AccountDefenderAssessment_AccountDefenderLabel) Enum() *AccountDefenderAssessment_AccountDefenderLabel {
p := new(AccountDefenderAssessment_AccountDefenderLabel)
*p = x
return p
}
func (x AccountDefenderAssessment_AccountDefenderLabel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (AccountDefenderAssessment_AccountDefenderLabel) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[4].Descriptor()
}
func (AccountDefenderAssessment_AccountDefenderLabel) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[4]
}
func (x AccountDefenderAssessment_AccountDefenderLabel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use AccountDefenderAssessment_AccountDefenderLabel.Descriptor instead.
func (AccountDefenderAssessment_AccountDefenderLabel) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{8, 0}
}
// Enum that represents the challenge option for challenge-based (CHECKBOX,
// INVISIBLE) testing keys.
type TestingOptions_TestingChallenge int32
const (
// Perform the normal risk analysis and return either nocaptcha or a
// challenge depending on risk and trust factors.
TestingOptions_TESTING_CHALLENGE_UNSPECIFIED TestingOptions_TestingChallenge = 0
// Challenge requests for this key always return a nocaptcha, which
// does not require a solution.
TestingOptions_NOCAPTCHA TestingOptions_TestingChallenge = 1
// Challenge requests for this key always return an unsolvable
// challenge.
TestingOptions_UNSOLVABLE_CHALLENGE TestingOptions_TestingChallenge = 2
)
// Enum value maps for TestingOptions_TestingChallenge.
var (
TestingOptions_TestingChallenge_name = map[int32]string{
0: "TESTING_CHALLENGE_UNSPECIFIED",
1: "NOCAPTCHA",
2: "UNSOLVABLE_CHALLENGE",
}
TestingOptions_TestingChallenge_value = map[string]int32{
"TESTING_CHALLENGE_UNSPECIFIED": 0,
"NOCAPTCHA": 1,
"UNSOLVABLE_CHALLENGE": 2,
}
)
func (x TestingOptions_TestingChallenge) Enum() *TestingOptions_TestingChallenge {
p := new(TestingOptions_TestingChallenge)
*p = x
return p
}
func (x TestingOptions_TestingChallenge) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TestingOptions_TestingChallenge) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[5].Descriptor()
}
func (TestingOptions_TestingChallenge) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[5]
}
func (x TestingOptions_TestingChallenge) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TestingOptions_TestingChallenge.Descriptor instead.
func (TestingOptions_TestingChallenge) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{21, 0}
}
// Enum that represents the integration types for web keys.
type WebKeySettings_IntegrationType int32
const (
// Default type that indicates this enum hasn't been specified. This is not
// a valid IntegrationType, one of the other types must be specified
// instead.
WebKeySettings_INTEGRATION_TYPE_UNSPECIFIED WebKeySettings_IntegrationType = 0
// Only used to produce scores. It doesn't display the "I'm not a robot"
// checkbox and never shows captcha challenges.
WebKeySettings_SCORE WebKeySettings_IntegrationType = 1
// Displays the "I'm not a robot" checkbox and may show captcha challenges
// after it is checked.
WebKeySettings_CHECKBOX WebKeySettings_IntegrationType = 2
// Doesn't display the "I'm not a robot" checkbox, but may show captcha
// challenges after risk analysis.
WebKeySettings_INVISIBLE WebKeySettings_IntegrationType = 3
)
// Enum value maps for WebKeySettings_IntegrationType.
var (
WebKeySettings_IntegrationType_name = map[int32]string{
0: "INTEGRATION_TYPE_UNSPECIFIED",
1: "SCORE",
2: "CHECKBOX",
3: "INVISIBLE",
}
WebKeySettings_IntegrationType_value = map[string]int32{
"INTEGRATION_TYPE_UNSPECIFIED": 0,
"SCORE": 1,
"CHECKBOX": 2,
"INVISIBLE": 3,
}
)
func (x WebKeySettings_IntegrationType) Enum() *WebKeySettings_IntegrationType {
p := new(WebKeySettings_IntegrationType)
*p = x
return p
}
func (x WebKeySettings_IntegrationType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WebKeySettings_IntegrationType) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[6].Descriptor()
}
func (WebKeySettings_IntegrationType) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[6]
}
func (x WebKeySettings_IntegrationType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use WebKeySettings_IntegrationType.Descriptor instead.
func (WebKeySettings_IntegrationType) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{22, 0}
}
// Enum that represents the possible challenge frequency and difficulty
// configurations for a web key.
type WebKeySettings_ChallengeSecurityPreference int32
const (
// Default type that indicates this enum hasn't been specified.
WebKeySettings_CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED WebKeySettings_ChallengeSecurityPreference = 0
// Key tends to show fewer and easier challenges.
WebKeySettings_USABILITY WebKeySettings_ChallengeSecurityPreference = 1
// Key tends to show balanced (in amount and difficulty) challenges.
WebKeySettings_BALANCE WebKeySettings_ChallengeSecurityPreference = 2
// Key tends to show more and harder challenges.
WebKeySettings_SECURITY WebKeySettings_ChallengeSecurityPreference = 3
)
// Enum value maps for WebKeySettings_ChallengeSecurityPreference.
var (
WebKeySettings_ChallengeSecurityPreference_name = map[int32]string{
0: "CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED",
1: "USABILITY",
2: "BALANCE",
3: "SECURITY",
}
WebKeySettings_ChallengeSecurityPreference_value = map[string]int32{
"CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED": 0,
"USABILITY": 1,
"BALANCE": 2,
"SECURITY": 3,
}
)
func (x WebKeySettings_ChallengeSecurityPreference) Enum() *WebKeySettings_ChallengeSecurityPreference {
p := new(WebKeySettings_ChallengeSecurityPreference)
*p = x
return p
}
func (x WebKeySettings_ChallengeSecurityPreference) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WebKeySettings_ChallengeSecurityPreference) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[7].Descriptor()
}
func (WebKeySettings_ChallengeSecurityPreference) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[7]
}
func (x WebKeySettings_ChallengeSecurityPreference) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use WebKeySettings_ChallengeSecurityPreference.Descriptor instead.
func (WebKeySettings_ChallengeSecurityPreference) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{22, 1}
}
// Supported WAF features. For more information, see
// https://cloud.google.com/recaptcha-enterprise/docs/usecase#comparison_of_features.
type WafSettings_WafFeature int32
const (
// Undefined feature.
WafSettings_WAF_FEATURE_UNSPECIFIED WafSettings_WafFeature = 0
// Redirects suspicious traffic to reCAPTCHA.
WafSettings_CHALLENGE_PAGE WafSettings_WafFeature = 1
// Use reCAPTCHA session-tokens to protect the whole user session on the
// site's domain.
WafSettings_SESSION_TOKEN WafSettings_WafFeature = 2
// Use reCAPTCHA action-tokens to protect user actions.
WafSettings_ACTION_TOKEN WafSettings_WafFeature = 3
)
// Enum value maps for WafSettings_WafFeature.
var (
WafSettings_WafFeature_name = map[int32]string{
0: "WAF_FEATURE_UNSPECIFIED",
1: "CHALLENGE_PAGE",
2: "SESSION_TOKEN",
3: "ACTION_TOKEN",
}
WafSettings_WafFeature_value = map[string]int32{
"WAF_FEATURE_UNSPECIFIED": 0,
"CHALLENGE_PAGE": 1,
"SESSION_TOKEN": 2,
"ACTION_TOKEN": 3,
}
)
func (x WafSettings_WafFeature) Enum() *WafSettings_WafFeature {
p := new(WafSettings_WafFeature)
*p = x
return p
}
func (x WafSettings_WafFeature) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WafSettings_WafFeature) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[8].Descriptor()
}
func (WafSettings_WafFeature) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[8]
}
func (x WafSettings_WafFeature) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use WafSettings_WafFeature.Descriptor instead.
func (WafSettings_WafFeature) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{36, 0}
}
// Web Application Firewalls supported by reCAPTCHA Enterprise.
type WafSettings_WafService int32
const (
// Undefined WAF
WafSettings_WAF_SERVICE_UNSPECIFIED WafSettings_WafService = 0
// Cloud Armor
WafSettings_CA WafSettings_WafService = 1
)
// Enum value maps for WafSettings_WafService.
var (
WafSettings_WafService_name = map[int32]string{
0: "WAF_SERVICE_UNSPECIFIED",
1: "CA",
}
WafSettings_WafService_value = map[string]int32{
"WAF_SERVICE_UNSPECIFIED": 0,
"CA": 1,
}
)
func (x WafSettings_WafService) Enum() *WafSettings_WafService {
p := new(WafSettings_WafService)
*p = x
return p
}
func (x WafSettings_WafService) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WafSettings_WafService) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[9].Descriptor()
}
func (WafSettings_WafService) Type() protoreflect.EnumType {
return &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes[9]
}
func (x WafSettings_WafService) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use WafSettings_WafService.Descriptor instead.
func (WafSettings_WafService) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{36, 1}
}
// The create assessment request message.
type CreateAssessmentRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project in which the assessment will be created,
// in the format "projects/{project}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The assessment details.
Assessment *Assessment `protobuf:"bytes,2,opt,name=assessment,proto3" json:"assessment,omitempty"`
}
func (x *CreateAssessmentRequest) Reset() {
*x = CreateAssessmentRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateAssessmentRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateAssessmentRequest) ProtoMessage() {}
func (x *CreateAssessmentRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 CreateAssessmentRequest.ProtoReflect.Descriptor instead.
func (*CreateAssessmentRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{0}
}
func (x *CreateAssessmentRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateAssessmentRequest) GetAssessment() *Assessment {
if x != nil {
return x.Assessment
}
return nil
}
// The request message to annotate an Assessment.
type AnnotateAssessmentRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the Assessment, in the format
// "projects/{project}/assessments/{assessment}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. The annotation that will be assigned to the Event. This field can be left
// empty to provide reasons that apply to an event without concluding whether
// the event is legitimate or fraudulent.
Annotation AnnotateAssessmentRequest_Annotation `protobuf:"varint,2,opt,name=annotation,proto3,enum=google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest_Annotation" json:"annotation,omitempty"`
// Optional. Optional reasons for the annotation that will be assigned to the Event.
Reasons []AnnotateAssessmentRequest_Reason `protobuf:"varint,3,rep,packed,name=reasons,proto3,enum=google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest_Reason" json:"reasons,omitempty"`
// Optional. Unique stable hashed user identifier to apply to the assessment.
// This is an alternative to setting the hashed_account_id in
// CreateAssessment, for example when the account identifier is not yet known
// in the initial request. It is recommended that the identifier is hashed
// using hmac-sha256 with stable secret.
HashedAccountId []byte `protobuf:"bytes,4,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
}
func (x *AnnotateAssessmentRequest) Reset() {
*x = AnnotateAssessmentRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AnnotateAssessmentRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AnnotateAssessmentRequest) ProtoMessage() {}
func (x *AnnotateAssessmentRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AnnotateAssessmentRequest.ProtoReflect.Descriptor instead.
func (*AnnotateAssessmentRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{1}
}
func (x *AnnotateAssessmentRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AnnotateAssessmentRequest) GetAnnotation() AnnotateAssessmentRequest_Annotation {
if x != nil {
return x.Annotation
}
return AnnotateAssessmentRequest_ANNOTATION_UNSPECIFIED
}
func (x *AnnotateAssessmentRequest) GetReasons() []AnnotateAssessmentRequest_Reason {
if x != nil {
return x.Reasons
}
return nil
}
func (x *AnnotateAssessmentRequest) GetHashedAccountId() []byte {
if x != nil {
return x.HashedAccountId
}
return nil
}
// Empty response for AnnotateAssessment.
type AnnotateAssessmentResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *AnnotateAssessmentResponse) Reset() {
*x = AnnotateAssessmentResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AnnotateAssessmentResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AnnotateAssessmentResponse) ProtoMessage() {}
func (x *AnnotateAssessmentResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AnnotateAssessmentResponse.ProtoReflect.Descriptor instead.
func (*AnnotateAssessmentResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{2}
}
// Private password leak verification info.
type PrivatePasswordLeakVerification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. Exactly 26-bit prefix of the SHA-256 hash of the canonicalized username. It
// is used to look up password leaks associated with that hash prefix.
LookupHashPrefix []byte `protobuf:"bytes,1,opt,name=lookup_hash_prefix,json=lookupHashPrefix,proto3" json:"lookup_hash_prefix,omitempty"`
// Optional. Encrypted Scrypt hash of the canonicalized username+password. It is
// re-encrypted by the server and returned through
// `reencrypted_user_credentials_hash`.
EncryptedUserCredentialsHash []byte `protobuf:"bytes,2,opt,name=encrypted_user_credentials_hash,json=encryptedUserCredentialsHash,proto3" json:"encrypted_user_credentials_hash,omitempty"`
// Output only. List of prefixes of the encrypted potential password leaks that matched the
// given parameters. They must be compared with the client-side decryption
// prefix of `reencrypted_user_credentials_hash`
EncryptedLeakMatchPrefixes [][]byte `protobuf:"bytes,3,rep,name=encrypted_leak_match_prefixes,json=encryptedLeakMatchPrefixes,proto3" json:"encrypted_leak_match_prefixes,omitempty"`
// Output only. Corresponds to the re-encryption of the `encrypted_user_credentials_hash`
// field. It is used to match potential password leaks within
// `encrypted_leak_match_prefixes`.
ReencryptedUserCredentialsHash []byte `protobuf:"bytes,4,opt,name=reencrypted_user_credentials_hash,json=reencryptedUserCredentialsHash,proto3" json:"reencrypted_user_credentials_hash,omitempty"`
}
func (x *PrivatePasswordLeakVerification) Reset() {
*x = PrivatePasswordLeakVerification{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PrivatePasswordLeakVerification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PrivatePasswordLeakVerification) ProtoMessage() {}
func (x *PrivatePasswordLeakVerification) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 PrivatePasswordLeakVerification.ProtoReflect.Descriptor instead.
func (*PrivatePasswordLeakVerification) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{3}
}
func (x *PrivatePasswordLeakVerification) GetLookupHashPrefix() []byte {
if x != nil {
return x.LookupHashPrefix
}
return nil
}
func (x *PrivatePasswordLeakVerification) GetEncryptedUserCredentialsHash() []byte {
if x != nil {
return x.EncryptedUserCredentialsHash
}
return nil
}
func (x *PrivatePasswordLeakVerification) GetEncryptedLeakMatchPrefixes() [][]byte {
if x != nil {
return x.EncryptedLeakMatchPrefixes
}
return nil
}
func (x *PrivatePasswordLeakVerification) GetReencryptedUserCredentialsHash() []byte {
if x != nil {
return x.ReencryptedUserCredentialsHash
}
return nil
}
// A recaptcha assessment resource.
type Assessment struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The resource name for the Assessment in the format
// "projects/{project}/assessments/{assessment}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The event being assessed.
Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
// Output only. The risk analysis result for the event being assessed.
RiskAnalysis *RiskAnalysis `protobuf:"bytes,3,opt,name=risk_analysis,json=riskAnalysis,proto3" json:"risk_analysis,omitempty"`
// Output only. Properties of the provided event token.
TokenProperties *TokenProperties `protobuf:"bytes,4,opt,name=token_properties,json=tokenProperties,proto3" json:"token_properties,omitempty"`
// Assessment returned by account defender when a hashed_account_id is
// provided.
AccountDefenderAssessment *AccountDefenderAssessment `protobuf:"bytes,6,opt,name=account_defender_assessment,json=accountDefenderAssessment,proto3" json:"account_defender_assessment,omitempty"`
// The private password leak verification field contains the parameters that
// are used to to check for leaks privately without sharing user credentials.
PrivatePasswordLeakVerification *PrivatePasswordLeakVerification `protobuf:"bytes,8,opt,name=private_password_leak_verification,json=privatePasswordLeakVerification,proto3" json:"private_password_leak_verification,omitempty"`
}
func (x *Assessment) Reset() {
*x = Assessment{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Assessment) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Assessment) ProtoMessage() {}
func (x *Assessment) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Assessment.ProtoReflect.Descriptor instead.
func (*Assessment) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{4}
}
func (x *Assessment) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Assessment) GetEvent() *Event {
if x != nil {
return x.Event
}
return nil
}
func (x *Assessment) GetRiskAnalysis() *RiskAnalysis {
if x != nil {
return x.RiskAnalysis
}
return nil
}
func (x *Assessment) GetTokenProperties() *TokenProperties {
if x != nil {
return x.TokenProperties
}
return nil
}
func (x *Assessment) GetAccountDefenderAssessment() *AccountDefenderAssessment {
if x != nil {
return x.AccountDefenderAssessment
}
return nil
}
func (x *Assessment) GetPrivatePasswordLeakVerification() *PrivatePasswordLeakVerification {
if x != nil {
return x.PrivatePasswordLeakVerification
}
return nil
}
type Event struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. The user response token provided by the reCAPTCHA client-side integration
// on your site.
Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
// Optional. The site key that was used to invoke reCAPTCHA on your site and generate
// the token.
SiteKey string `protobuf:"bytes,2,opt,name=site_key,json=siteKey,proto3" json:"site_key,omitempty"`
// Optional. The user agent present in the request from the user's device related to
// this event.
UserAgent string `protobuf:"bytes,3,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
// Optional. The IP address in the request from the user's device related to this event.
UserIpAddress string `protobuf:"bytes,4,opt,name=user_ip_address,json=userIpAddress,proto3" json:"user_ip_address,omitempty"`
// Optional. The expected action for this type of event. This should be the same action
// provided at token generation time on client-side platforms already
// integrated with recaptcha enterprise.
ExpectedAction string `protobuf:"bytes,5,opt,name=expected_action,json=expectedAction,proto3" json:"expected_action,omitempty"`
// Optional. Unique stable hashed user identifier for the request. The identifier must
// be hashed using hmac-sha256 with stable secret.
HashedAccountId []byte `protobuf:"bytes,6,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
}
func (x *Event) Reset() {
*x = Event{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Event) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Event) ProtoMessage() {}
func (x *Event) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Event.ProtoReflect.Descriptor instead.
func (*Event) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{5}
}
func (x *Event) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
func (x *Event) GetSiteKey() string {
if x != nil {
return x.SiteKey
}
return ""
}
func (x *Event) GetUserAgent() string {
if x != nil {
return x.UserAgent
}
return ""
}
func (x *Event) GetUserIpAddress() string {
if x != nil {
return x.UserIpAddress
}
return ""
}
func (x *Event) GetExpectedAction() string {
if x != nil {
return x.ExpectedAction
}
return ""
}
func (x *Event) GetHashedAccountId() []byte {
if x != nil {
return x.HashedAccountId
}
return nil
}
// Risk analysis result for an event.
type RiskAnalysis struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Legitimate event score from 0.0 to 1.0.
// (1.0 means very likely legitimate traffic while 0.0 means very likely
// non-legitimate traffic).
Score float32 `protobuf:"fixed32,1,opt,name=score,proto3" json:"score,omitempty"`
// Reasons contributing to the risk analysis verdict.
Reasons []RiskAnalysis_ClassificationReason `protobuf:"varint,2,rep,packed,name=reasons,proto3,enum=google.cloud.recaptchaenterprise.v1.RiskAnalysis_ClassificationReason" json:"reasons,omitempty"`
}
func (x *RiskAnalysis) Reset() {
*x = RiskAnalysis{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RiskAnalysis) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RiskAnalysis) ProtoMessage() {}
func (x *RiskAnalysis) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 RiskAnalysis.ProtoReflect.Descriptor instead.
func (*RiskAnalysis) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{6}
}
func (x *RiskAnalysis) GetScore() float32 {
if x != nil {
return x.Score
}
return 0
}
func (x *RiskAnalysis) GetReasons() []RiskAnalysis_ClassificationReason {
if x != nil {
return x.Reasons
}
return nil
}
type TokenProperties struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Whether the provided user response token is valid. When valid = false, the
// reason could be specified in invalid_reason or it could also be due to
// a user failing to solve a challenge or a sitekey mismatch (i.e the sitekey
// used to generate the token was different than the one specified in the
// assessment).
Valid bool `protobuf:"varint,1,opt,name=valid,proto3" json:"valid,omitempty"`
// Reason associated with the response when valid = false.
InvalidReason TokenProperties_InvalidReason `protobuf:"varint,2,opt,name=invalid_reason,json=invalidReason,proto3,enum=google.cloud.recaptchaenterprise.v1.TokenProperties_InvalidReason" json:"invalid_reason,omitempty"`
// The timestamp corresponding to the generation of the token.
CreateTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// The hostname of the page on which the token was generated (Web keys only).
Hostname string `protobuf:"bytes,4,opt,name=hostname,proto3" json:"hostname,omitempty"`
// Action name provided at token generation.
Action string `protobuf:"bytes,5,opt,name=action,proto3" json:"action,omitempty"`
}
func (x *TokenProperties) Reset() {
*x = TokenProperties{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TokenProperties) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TokenProperties) ProtoMessage() {}
func (x *TokenProperties) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 TokenProperties.ProtoReflect.Descriptor instead.
func (*TokenProperties) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{7}
}
func (x *TokenProperties) GetValid() bool {
if x != nil {
return x.Valid
}
return false
}
func (x *TokenProperties) GetInvalidReason() TokenProperties_InvalidReason {
if x != nil {
return x.InvalidReason
}
return TokenProperties_INVALID_REASON_UNSPECIFIED
}
func (x *TokenProperties) GetCreateTime() *timestamp.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *TokenProperties) GetHostname() string {
if x != nil {
return x.Hostname
}
return ""
}
func (x *TokenProperties) GetAction() string {
if x != nil {
return x.Action
}
return ""
}
// Account defender risk assessment.
type AccountDefenderAssessment struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Labels for this request.
Labels []AccountDefenderAssessment_AccountDefenderLabel `protobuf:"varint,1,rep,packed,name=labels,proto3,enum=google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment_AccountDefenderLabel" json:"labels,omitempty"`
}
func (x *AccountDefenderAssessment) Reset() {
*x = AccountDefenderAssessment{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AccountDefenderAssessment) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccountDefenderAssessment) ProtoMessage() {}
func (x *AccountDefenderAssessment) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 AccountDefenderAssessment.ProtoReflect.Descriptor instead.
func (*AccountDefenderAssessment) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{8}
}
func (x *AccountDefenderAssessment) GetLabels() []AccountDefenderAssessment_AccountDefenderLabel {
if x != nil {
return x.Labels
}
return nil
}
// The create key request message.
type CreateKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project in which the key will be created, in the
// format "projects/{project}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. Information to create a reCAPTCHA Enterprise key.
Key *Key `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
}
func (x *CreateKeyRequest) Reset() {
*x = CreateKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateKeyRequest) ProtoMessage() {}
func (x *CreateKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 CreateKeyRequest.ProtoReflect.Descriptor instead.
func (*CreateKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{9}
}
func (x *CreateKeyRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateKeyRequest) GetKey() *Key {
if x != nil {
return x.Key
}
return nil
}
// The list keys request message.
type ListKeysRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project that contains the keys that will be
// listed, in the format "projects/{project}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of keys to return. Default is 10. Max limit is
// 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. The next_page_token value returned from a previous.
// ListKeysRequest, if any.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListKeysRequest) Reset() {
*x = ListKeysRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListKeysRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListKeysRequest) ProtoMessage() {}
func (x *ListKeysRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 ListKeysRequest.ProtoReflect.Descriptor instead.
func (*ListKeysRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{10}
}
func (x *ListKeysRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListKeysRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListKeysRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response to request to list keys in a project.
type ListKeysResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Key details.
Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
// Token to retrieve the next page of results. It is set to empty if no keys
// remain in results.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListKeysResponse) Reset() {
*x = ListKeysResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListKeysResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListKeysResponse) ProtoMessage() {}
func (x *ListKeysResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 ListKeysResponse.ProtoReflect.Descriptor instead.
func (*ListKeysResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{11}
}
func (x *ListKeysResponse) GetKeys() []*Key {
if x != nil {
return x.Keys
}
return nil
}
func (x *ListKeysResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// The retrieve legacy secret key request message.
type RetrieveLegacySecretKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The public key name linked to the requested secret key in the format
// "projects/{project}/keys/{key}".
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
}
func (x *RetrieveLegacySecretKeyRequest) Reset() {
*x = RetrieveLegacySecretKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RetrieveLegacySecretKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RetrieveLegacySecretKeyRequest) ProtoMessage() {}
func (x *RetrieveLegacySecretKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 RetrieveLegacySecretKeyRequest.ProtoReflect.Descriptor instead.
func (*RetrieveLegacySecretKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{12}
}
func (x *RetrieveLegacySecretKeyRequest) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
// The get key request message.
type GetKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the requested key, in the format
// "projects/{project}/keys/{key}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetKeyRequest) Reset() {
*x = GetKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetKeyRequest) ProtoMessage() {}
func (x *GetKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 GetKeyRequest.ProtoReflect.Descriptor instead.
func (*GetKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{13}
}
func (x *GetKeyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// The update key request message.
type UpdateKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The key to update.
Key *Key `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// Optional. The mask to control which fields of the key get updated. If the mask is not
// present, all fields will be updated.
UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}
func (x *UpdateKeyRequest) Reset() {
*x = UpdateKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateKeyRequest) ProtoMessage() {}
func (x *UpdateKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 UpdateKeyRequest.ProtoReflect.Descriptor instead.
func (*UpdateKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{14}
}
func (x *UpdateKeyRequest) GetKey() *Key {
if x != nil {
return x.Key
}
return nil
}
func (x *UpdateKeyRequest) GetUpdateMask() *field_mask.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
// The delete key request message.
type DeleteKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the key to be deleted, in the format
// "projects/{project}/keys/{key}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *DeleteKeyRequest) Reset() {
*x = DeleteKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteKeyRequest) ProtoMessage() {}
func (x *DeleteKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 DeleteKeyRequest.ProtoReflect.Descriptor instead.
func (*DeleteKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{15}
}
func (x *DeleteKeyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// The migrate key request message.
type MigrateKeyRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the key to be migrated, in the format
// "projects/{project}/keys/{key}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *MigrateKeyRequest) Reset() {
*x = MigrateKeyRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MigrateKeyRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MigrateKeyRequest) ProtoMessage() {}
func (x *MigrateKeyRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 MigrateKeyRequest.ProtoReflect.Descriptor instead.
func (*MigrateKeyRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{16}
}
func (x *MigrateKeyRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// The get metrics request message.
type GetMetricsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the requested metrics, in the format
// "projects/{project}/keys/{key}/metrics".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetMetricsRequest) Reset() {
*x = GetMetricsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetMetricsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetMetricsRequest) ProtoMessage() {}
func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 GetMetricsRequest.ProtoReflect.Descriptor instead.
func (*GetMetricsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{17}
}
func (x *GetMetricsRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Metrics for a single Key.
type Metrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Output only. The name of the metrics, in the format
// "projects/{project}/keys/{key}/metrics".
Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
// Inclusive start time aligned to a day (UTC).
StartTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// Metrics will be continuous and in order by dates, and in the granularity
// of day. All Key types should have score-based data.
ScoreMetrics []*ScoreMetrics `protobuf:"bytes,2,rep,name=score_metrics,json=scoreMetrics,proto3" json:"score_metrics,omitempty"`
// Metrics will be continuous and in order by dates, and in the granularity
// of day. Only challenge-based keys (CHECKBOX, INVISIBLE), will have
// challenge-based data.
ChallengeMetrics []*ChallengeMetrics `protobuf:"bytes,3,rep,name=challenge_metrics,json=challengeMetrics,proto3" json:"challenge_metrics,omitempty"`
}
func (x *Metrics) Reset() {
*x = Metrics{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Metrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Metrics) ProtoMessage() {}
func (x *Metrics) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Metrics.ProtoReflect.Descriptor instead.
func (*Metrics) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{18}
}
func (x *Metrics) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Metrics) GetStartTime() *timestamp.Timestamp {
if x != nil {
return x.StartTime
}
return nil
}
func (x *Metrics) GetScoreMetrics() []*ScoreMetrics {
if x != nil {
return x.ScoreMetrics
}
return nil
}
func (x *Metrics) GetChallengeMetrics() []*ChallengeMetrics {
if x != nil {
return x.ChallengeMetrics
}
return nil
}
// Secret key is used only in legacy reCAPTCHA. It must be used in a 3rd party
// integration with legacy reCAPTCHA.
type RetrieveLegacySecretKeyResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The secret key (also known as shared secret) authorizes communication
// between your application backend and the reCAPTCHA Enterprise server to
// create an assessment.
// The secret key needs to be kept safe for security purposes.
LegacySecretKey string `protobuf:"bytes,1,opt,name=legacy_secret_key,json=legacySecretKey,proto3" json:"legacy_secret_key,omitempty"`
}
func (x *RetrieveLegacySecretKeyResponse) Reset() {
*x = RetrieveLegacySecretKeyResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RetrieveLegacySecretKeyResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RetrieveLegacySecretKeyResponse) ProtoMessage() {}
func (x *RetrieveLegacySecretKeyResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 RetrieveLegacySecretKeyResponse.ProtoReflect.Descriptor instead.
func (*RetrieveLegacySecretKeyResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{19}
}
func (x *RetrieveLegacySecretKeyResponse) GetLegacySecretKey() string {
if x != nil {
return x.LegacySecretKey
}
return ""
}
// A key used to identify and configure applications (web and/or mobile) that
// use reCAPTCHA Enterprise.
type Key struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The resource name for the Key in the format
// "projects/{project}/keys/{key}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Human-readable display name of this key. Modifiable by user.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Platform specific settings for this key. The key can only be used on a
// platform for which the settings are enabled.
//
// Types that are assignable to PlatformSettings:
//
// *Key_WebSettings
// *Key_AndroidSettings
// *Key_IosSettings
PlatformSettings isKey_PlatformSettings `protobuf_oneof:"platform_settings"`
// See <a href="https://cloud.google.com/recaptcha-enterprise/docs/labels">
// Creating and managing labels</a>.
Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// The timestamp corresponding to the creation of this Key.
CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// Options for user acceptance testing.
TestingOptions *TestingOptions `protobuf:"bytes,9,opt,name=testing_options,json=testingOptions,proto3" json:"testing_options,omitempty"`
// Settings for WAF
WafSettings *WafSettings `protobuf:"bytes,10,opt,name=waf_settings,json=wafSettings,proto3" json:"waf_settings,omitempty"`
}
func (x *Key) Reset() {
*x = Key{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Key) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Key) ProtoMessage() {}
func (x *Key) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 Key.ProtoReflect.Descriptor instead.
func (*Key) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{20}
}
func (x *Key) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Key) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (m *Key) GetPlatformSettings() isKey_PlatformSettings {
if m != nil {
return m.PlatformSettings
}
return nil
}
func (x *Key) GetWebSettings() *WebKeySettings {
if x, ok := x.GetPlatformSettings().(*Key_WebSettings); ok {
return x.WebSettings
}
return nil
}
func (x *Key) GetAndroidSettings() *AndroidKeySettings {
if x, ok := x.GetPlatformSettings().(*Key_AndroidSettings); ok {
return x.AndroidSettings
}
return nil
}
func (x *Key) GetIosSettings() *IOSKeySettings {
if x, ok := x.GetPlatformSettings().(*Key_IosSettings); ok {
return x.IosSettings
}
return nil
}
func (x *Key) GetLabels() map[string]string {
if x != nil {
return x.Labels
}
return nil
}
func (x *Key) GetCreateTime() *timestamp.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *Key) GetTestingOptions() *TestingOptions {
if x != nil {
return x.TestingOptions
}
return nil
}
func (x *Key) GetWafSettings() *WafSettings {
if x != nil {
return x.WafSettings
}
return nil
}
type isKey_PlatformSettings interface {
isKey_PlatformSettings()
}
type Key_WebSettings struct {
// Settings for keys that can be used by websites.
WebSettings *WebKeySettings `protobuf:"bytes,3,opt,name=web_settings,json=webSettings,proto3,oneof"`
}
type Key_AndroidSettings struct {
// Settings for keys that can be used by Android apps.
AndroidSettings *AndroidKeySettings `protobuf:"bytes,4,opt,name=android_settings,json=androidSettings,proto3,oneof"`
}
type Key_IosSettings struct {
// Settings for keys that can be used by iOS apps.
IosSettings *IOSKeySettings `protobuf:"bytes,5,opt,name=ios_settings,json=iosSettings,proto3,oneof"`
}
func (*Key_WebSettings) isKey_PlatformSettings() {}
func (*Key_AndroidSettings) isKey_PlatformSettings() {}
func (*Key_IosSettings) isKey_PlatformSettings() {}
// Options for user acceptance testing.
type TestingOptions struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All assessments for this Key will return this score. Must be between 0
// (likely not legitimate) and 1 (likely legitimate) inclusive.
TestingScore float32 `protobuf:"fixed32,1,opt,name=testing_score,json=testingScore,proto3" json:"testing_score,omitempty"`
// For challenge-based keys only (CHECKBOX, INVISIBLE), all challenge requests
// for this site will return nocaptcha if NOCAPTCHA, or an unsolvable
// challenge if CHALLENGE.
TestingChallenge TestingOptions_TestingChallenge `protobuf:"varint,2,opt,name=testing_challenge,json=testingChallenge,proto3,enum=google.cloud.recaptchaenterprise.v1.TestingOptions_TestingChallenge" json:"testing_challenge,omitempty"`
}
func (x *TestingOptions) Reset() {
*x = TestingOptions{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TestingOptions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TestingOptions) ProtoMessage() {}
func (x *TestingOptions) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 TestingOptions.ProtoReflect.Descriptor instead.
func (*TestingOptions) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{21}
}
func (x *TestingOptions) GetTestingScore() float32 {
if x != nil {
return x.TestingScore
}
return 0
}
func (x *TestingOptions) GetTestingChallenge() TestingOptions_TestingChallenge {
if x != nil {
return x.TestingChallenge
}
return TestingOptions_TESTING_CHALLENGE_UNSPECIFIED
}
// Settings specific to keys that can be used by websites.
type WebKeySettings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// If set to true, it means allowed_domains will not be enforced.
AllowAllDomains bool `protobuf:"varint,3,opt,name=allow_all_domains,json=allowAllDomains,proto3" json:"allow_all_domains,omitempty"`
// Domains or subdomains of websites allowed to use the key. All subdomains
// of an allowed domain are automatically allowed. A valid domain requires a
// host and must not include any path, port, query or fragment.
// Examples: 'example.com' or 'subdomain.example.com'
AllowedDomains []string `protobuf:"bytes,1,rep,name=allowed_domains,json=allowedDomains,proto3" json:"allowed_domains,omitempty"`
// If set to true, the key can be used on AMP (Accelerated Mobile Pages)
// websites. This is supported only for the SCORE integration type.
AllowAmpTraffic bool `protobuf:"varint,2,opt,name=allow_amp_traffic,json=allowAmpTraffic,proto3" json:"allow_amp_traffic,omitempty"`
// Required. Describes how this key is integrated with the website.
IntegrationType WebKeySettings_IntegrationType `protobuf:"varint,4,opt,name=integration_type,json=integrationType,proto3,enum=google.cloud.recaptchaenterprise.v1.WebKeySettings_IntegrationType" json:"integration_type,omitempty"`
// Settings for the frequency and difficulty at which this key triggers
// captcha challenges. This should only be specified for IntegrationTypes
// CHECKBOX and INVISIBLE.
ChallengeSecurityPreference WebKeySettings_ChallengeSecurityPreference `protobuf:"varint,5,opt,name=challenge_security_preference,json=challengeSecurityPreference,proto3,enum=google.cloud.recaptchaenterprise.v1.WebKeySettings_ChallengeSecurityPreference" json:"challenge_security_preference,omitempty"`
}
func (x *WebKeySettings) Reset() {
*x = WebKeySettings{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WebKeySettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WebKeySettings) ProtoMessage() {}
func (x *WebKeySettings) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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 WebKeySettings.ProtoReflect.Descriptor instead.
func (*WebKeySettings) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{22}
}
func (x *WebKeySettings) GetAllowAllDomains() bool {
if x != nil {
return x.AllowAllDomains
}
return false
}
func (x *WebKeySettings) GetAllowedDomains() []string {
if x != nil {
return x.AllowedDomains
}
return nil
}
func (x *WebKeySettings) GetAllowAmpTraffic() bool {
if x != nil {
return x.AllowAmpTraffic
}
return false
}
func (x *WebKeySettings) GetIntegrationType() WebKeySettings_IntegrationType {
if x != nil {
return x.IntegrationType
}
return WebKeySettings_INTEGRATION_TYPE_UNSPECIFIED
}
func (x *WebKeySettings) GetChallengeSecurityPreference() WebKeySettings_ChallengeSecurityPreference {
if x != nil {
return x.ChallengeSecurityPreference
}
return WebKeySettings_CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED
}
// Settings specific to keys that can be used by Android apps.
type AndroidKeySettings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// If set to true, allowed_package_names are not enforced.
AllowAllPackageNames bool `protobuf:"varint,2,opt,name=allow_all_package_names,json=allowAllPackageNames,proto3" json:"allow_all_package_names,omitempty"`
// Android package names of apps allowed to use the key.
// Example: 'com.companyname.appname'
AllowedPackageNames []string `protobuf:"bytes,1,rep,name=allowed_package_names,json=allowedPackageNames,proto3" json:"allowed_package_names,omitempty"`
}
func (x *AndroidKeySettings) Reset() {
*x = AndroidKeySettings{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AndroidKeySettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AndroidKeySettings) ProtoMessage() {}
func (x *AndroidKeySettings) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23]
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 AndroidKeySettings.ProtoReflect.Descriptor instead.
func (*AndroidKeySettings) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{23}
}
func (x *AndroidKeySettings) GetAllowAllPackageNames() bool {
if x != nil {
return x.AllowAllPackageNames
}
return false
}
func (x *AndroidKeySettings) GetAllowedPackageNames() []string {
if x != nil {
return x.AllowedPackageNames
}
return nil
}
// Settings specific to keys that can be used by iOS apps.
type IOSKeySettings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// If set to true, allowed_bundle_ids are not enforced.
AllowAllBundleIds bool `protobuf:"varint,2,opt,name=allow_all_bundle_ids,json=allowAllBundleIds,proto3" json:"allow_all_bundle_ids,omitempty"`
// iOS bundle ids of apps allowed to use the key.
// Example: 'com.companyname.productname.appname'
AllowedBundleIds []string `protobuf:"bytes,1,rep,name=allowed_bundle_ids,json=allowedBundleIds,proto3" json:"allowed_bundle_ids,omitempty"`
}
func (x *IOSKeySettings) Reset() {
*x = IOSKeySettings{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *IOSKeySettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*IOSKeySettings) ProtoMessage() {}
func (x *IOSKeySettings) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24]
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 IOSKeySettings.ProtoReflect.Descriptor instead.
func (*IOSKeySettings) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{24}
}
func (x *IOSKeySettings) GetAllowAllBundleIds() bool {
if x != nil {
return x.AllowAllBundleIds
}
return false
}
func (x *IOSKeySettings) GetAllowedBundleIds() []string {
if x != nil {
return x.AllowedBundleIds
}
return nil
}
// Score distribution.
type ScoreDistribution struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Map key is score value multiplied by 100. The scores are discrete values
// between [0, 1]. The maximum number of buckets is on order of a few dozen,
// but typically much lower (ie. 10).
ScoreBuckets map[int32]int64 `protobuf:"bytes,1,rep,name=score_buckets,json=scoreBuckets,proto3" json:"score_buckets,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *ScoreDistribution) Reset() {
*x = ScoreDistribution{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScoreDistribution) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScoreDistribution) ProtoMessage() {}
func (x *ScoreDistribution) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25]
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 ScoreDistribution.ProtoReflect.Descriptor instead.
func (*ScoreDistribution) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{25}
}
func (x *ScoreDistribution) GetScoreBuckets() map[int32]int64 {
if x != nil {
return x.ScoreBuckets
}
return nil
}
// Metrics related to scoring.
type ScoreMetrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Aggregated score metrics for all traffic.
OverallMetrics *ScoreDistribution `protobuf:"bytes,1,opt,name=overall_metrics,json=overallMetrics,proto3" json:"overall_metrics,omitempty"`
// Action-based metrics. The map key is the action name which specified by the
// site owners at time of the "execute" client-side call.
// Populated only for SCORE keys.
ActionMetrics map[string]*ScoreDistribution `protobuf:"bytes,2,rep,name=action_metrics,json=actionMetrics,proto3" json:"action_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *ScoreMetrics) Reset() {
*x = ScoreMetrics{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScoreMetrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScoreMetrics) ProtoMessage() {}
func (x *ScoreMetrics) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26]
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 ScoreMetrics.ProtoReflect.Descriptor instead.
func (*ScoreMetrics) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{26}
}
func (x *ScoreMetrics) GetOverallMetrics() *ScoreDistribution {
if x != nil {
return x.OverallMetrics
}
return nil
}
func (x *ScoreMetrics) GetActionMetrics() map[string]*ScoreDistribution {
if x != nil {
return x.ActionMetrics
}
return nil
}
// Metrics related to challenges.
type ChallengeMetrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Count of reCAPTCHA checkboxes or badges rendered. This is mostly equivalent
// to a count of pageloads for pages that include reCAPTCHA.
PageloadCount int64 `protobuf:"varint,1,opt,name=pageload_count,json=pageloadCount,proto3" json:"pageload_count,omitempty"`
// Count of nocaptchas (successful verification without a challenge) issued.
NocaptchaCount int64 `protobuf:"varint,2,opt,name=nocaptcha_count,json=nocaptchaCount,proto3" json:"nocaptcha_count,omitempty"`
// Count of submitted challenge solutions that were incorrect or otherwise
// deemed suspicious such that a subsequent challenge was triggered.
FailedCount int64 `protobuf:"varint,3,opt,name=failed_count,json=failedCount,proto3" json:"failed_count,omitempty"`
// Count of nocaptchas (successful verification without a challenge) plus
// submitted challenge solutions that were correct and resulted in
// verification.
PassedCount int64 `protobuf:"varint,4,opt,name=passed_count,json=passedCount,proto3" json:"passed_count,omitempty"`
}
func (x *ChallengeMetrics) Reset() {
*x = ChallengeMetrics{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ChallengeMetrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChallengeMetrics) ProtoMessage() {}
func (x *ChallengeMetrics) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27]
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 ChallengeMetrics.ProtoReflect.Descriptor instead.
func (*ChallengeMetrics) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{27}
}
func (x *ChallengeMetrics) GetPageloadCount() int64 {
if x != nil {
return x.PageloadCount
}
return 0
}
func (x *ChallengeMetrics) GetNocaptchaCount() int64 {
if x != nil {
return x.NocaptchaCount
}
return 0
}
func (x *ChallengeMetrics) GetFailedCount() int64 {
if x != nil {
return x.FailedCount
}
return 0
}
func (x *ChallengeMetrics) GetPassedCount() int64 {
if x != nil {
return x.PassedCount
}
return 0
}
// The request message to list memberships in a related account group.
type ListRelatedAccountGroupMembershipsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name for the related account group in the format
// `projects/{project}/relatedaccountgroups/{relatedaccountgroup}`.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of accounts to return. The service might return fewer
// than this value.
// If unspecified, at most 50 accounts are returned.
// The maximum value is 1000; values above 1000 are coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token, received from a previous `ListRelatedAccountGroupMemberships`
// call.
//
// When paginating, all other parameters provided to
// `ListRelatedAccountGroupMemberships` must match the call that provided the
// page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListRelatedAccountGroupMembershipsRequest) Reset() {
*x = ListRelatedAccountGroupMembershipsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRelatedAccountGroupMembershipsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRelatedAccountGroupMembershipsRequest) ProtoMessage() {}
func (x *ListRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28]
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 ListRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{28}
}
func (x *ListRelatedAccountGroupMembershipsRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListRelatedAccountGroupMembershipsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListRelatedAccountGroupMembershipsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// The response to a `ListRelatedAccountGroupMemberships` call.
type ListRelatedAccountGroupMembershipsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The memberships listed by the query.
RelatedAccountGroupMemberships []*RelatedAccountGroupMembership `protobuf:"bytes,1,rep,name=related_account_group_memberships,json=relatedAccountGroupMemberships,proto3" json:"related_account_group_memberships,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListRelatedAccountGroupMembershipsResponse) Reset() {
*x = ListRelatedAccountGroupMembershipsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRelatedAccountGroupMembershipsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRelatedAccountGroupMembershipsResponse) ProtoMessage() {}
func (x *ListRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29]
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 ListRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{29}
}
func (x *ListRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership {
if x != nil {
return x.RelatedAccountGroupMemberships
}
return nil
}
func (x *ListRelatedAccountGroupMembershipsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// The request message to list related account groups.
type ListRelatedAccountGroupsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project to list related account groups from, in the format
// "projects/{project}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of groups to return. The service might return fewer than
// this value.
// If unspecified, at most 50 groups are returned.
// The maximum value is 1000; values above 1000 are coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token, received from a previous `ListRelatedAccountGroups` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other parameters provided to
// `ListRelatedAccountGroups` must match the call that provided the page
// token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListRelatedAccountGroupsRequest) Reset() {
*x = ListRelatedAccountGroupsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRelatedAccountGroupsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRelatedAccountGroupsRequest) ProtoMessage() {}
func (x *ListRelatedAccountGroupsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30]
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 ListRelatedAccountGroupsRequest.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{30}
}
func (x *ListRelatedAccountGroupsRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListRelatedAccountGroupsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListRelatedAccountGroupsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// The response to a `ListRelatedAccountGroups` call.
type ListRelatedAccountGroupsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The groups of related accounts listed by the query.
RelatedAccountGroups []*RelatedAccountGroup `protobuf:"bytes,1,rep,name=related_account_groups,json=relatedAccountGroups,proto3" json:"related_account_groups,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListRelatedAccountGroupsResponse) Reset() {
*x = ListRelatedAccountGroupsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListRelatedAccountGroupsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListRelatedAccountGroupsResponse) ProtoMessage() {}
func (x *ListRelatedAccountGroupsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31]
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 ListRelatedAccountGroupsResponse.ProtoReflect.Descriptor instead.
func (*ListRelatedAccountGroupsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{31}
}
func (x *ListRelatedAccountGroupsResponse) GetRelatedAccountGroups() []*RelatedAccountGroup {
if x != nil {
return x.RelatedAccountGroups
}
return nil
}
func (x *ListRelatedAccountGroupsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// The request message to search related account group memberships.
type SearchRelatedAccountGroupMembershipsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The name of the project to search related account group memberships from.
// Specify the project name in the following format: "projects/{project}".
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
// Optional. The unique stable hashed user identifier we should search connections to.
// The identifier should correspond to a `hashed_account_id` provided in a
// previous `CreateAssessment` or `AnnotateAssessment` call.
HashedAccountId []byte `protobuf:"bytes,2,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
// Optional. The maximum number of groups to return. The service might return fewer than
// this value.
// If unspecified, at most 50 groups are returned.
// The maximum value is 1000; values above 1000 are coerced to 1000.
PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token, received from a previous
// `SearchRelatedAccountGroupMemberships` call. Provide this to retrieve the
// subsequent page.
//
// When paginating, all other parameters provided to
// `SearchRelatedAccountGroupMemberships` must match the call that provided
// the page token.
PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *SearchRelatedAccountGroupMembershipsRequest) Reset() {
*x = SearchRelatedAccountGroupMembershipsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchRelatedAccountGroupMembershipsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchRelatedAccountGroupMembershipsRequest) ProtoMessage() {}
func (x *SearchRelatedAccountGroupMembershipsRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32]
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 SearchRelatedAccountGroupMembershipsRequest.ProtoReflect.Descriptor instead.
func (*SearchRelatedAccountGroupMembershipsRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{32}
}
func (x *SearchRelatedAccountGroupMembershipsRequest) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *SearchRelatedAccountGroupMembershipsRequest) GetHashedAccountId() []byte {
if x != nil {
return x.HashedAccountId
}
return nil
}
func (x *SearchRelatedAccountGroupMembershipsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *SearchRelatedAccountGroupMembershipsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// The response to a `SearchRelatedAccountGroupMemberships` call.
type SearchRelatedAccountGroupMembershipsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The queried memberships.
RelatedAccountGroupMemberships []*RelatedAccountGroupMembership `protobuf:"bytes,1,rep,name=related_account_group_memberships,json=relatedAccountGroupMemberships,proto3" json:"related_account_group_memberships,omitempty"`
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *SearchRelatedAccountGroupMembershipsResponse) Reset() {
*x = SearchRelatedAccountGroupMembershipsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchRelatedAccountGroupMembershipsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchRelatedAccountGroupMembershipsResponse) ProtoMessage() {}
func (x *SearchRelatedAccountGroupMembershipsResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33]
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 SearchRelatedAccountGroupMembershipsResponse.ProtoReflect.Descriptor instead.
func (*SearchRelatedAccountGroupMembershipsResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{33}
}
func (x *SearchRelatedAccountGroupMembershipsResponse) GetRelatedAccountGroupMemberships() []*RelatedAccountGroupMembership {
if x != nil {
return x.RelatedAccountGroupMemberships
}
return nil
}
func (x *SearchRelatedAccountGroupMembershipsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// A membership in a group of related accounts.
type RelatedAccountGroupMembership struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name for this membership in the format
// `projects/{project}/relatedaccountgroups/{relatedaccountgroup}/memberships/{membership}`.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The unique stable hashed user identifier of the member. The identifier
// corresponds to a `hashed_account_id` provided in a previous
// `CreateAssessment` or `AnnotateAssessment` call.
HashedAccountId []byte `protobuf:"bytes,2,opt,name=hashed_account_id,json=hashedAccountId,proto3" json:"hashed_account_id,omitempty"`
}
func (x *RelatedAccountGroupMembership) Reset() {
*x = RelatedAccountGroupMembership{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RelatedAccountGroupMembership) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RelatedAccountGroupMembership) ProtoMessage() {}
func (x *RelatedAccountGroupMembership) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34]
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 RelatedAccountGroupMembership.ProtoReflect.Descriptor instead.
func (*RelatedAccountGroupMembership) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{34}
}
func (x *RelatedAccountGroupMembership) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *RelatedAccountGroupMembership) GetHashedAccountId() []byte {
if x != nil {
return x.HashedAccountId
}
return nil
}
// A group of related accounts.
type RelatedAccountGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name for the related account group in the format
// `projects/{project}/relatedaccountgroups/{related_account_group}`.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *RelatedAccountGroup) Reset() {
*x = RelatedAccountGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RelatedAccountGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RelatedAccountGroup) ProtoMessage() {}
func (x *RelatedAccountGroup) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35]
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 RelatedAccountGroup.ProtoReflect.Descriptor instead.
func (*RelatedAccountGroup) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{35}
}
func (x *RelatedAccountGroup) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Settings specific to keys that can be used for WAF (Web Application
// Firewall).
type WafSettings struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The WAF service that uses this key.
WafService WafSettings_WafService `protobuf:"varint,1,opt,name=waf_service,json=wafService,proto3,enum=google.cloud.recaptchaenterprise.v1.WafSettings_WafService" json:"waf_service,omitempty"`
// Required. The WAF feature for which this key is enabled.
WafFeature WafSettings_WafFeature `protobuf:"varint,2,opt,name=waf_feature,json=wafFeature,proto3,enum=google.cloud.recaptchaenterprise.v1.WafSettings_WafFeature" json:"waf_feature,omitempty"`
}
func (x *WafSettings) Reset() {
*x = WafSettings{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WafSettings) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WafSettings) ProtoMessage() {}
func (x *WafSettings) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36]
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 WafSettings.ProtoReflect.Descriptor instead.
func (*WafSettings) Descriptor() ([]byte, []int) {
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP(), []int{36}
}
func (x *WafSettings) GetWafService() WafSettings_WafService {
if x != nil {
return x.WafService
}
return WafSettings_WAF_SERVICE_UNSPECIFIED
}
func (x *WafSettings) GetWafFeature() WafSettings_WafFeature {
if x != nil {
return x.WafFeature
}
return WafSettings_WAF_FEATURE_UNSPECIFIED
}
var File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto protoreflect.FileDescriptor
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = []byte{
0x0a, 0x3d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
0x65, 0x2e, 0x76, 0x31, 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, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b,
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, 0xbc, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
0x12, 0x54, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x73,
0x73, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65,
0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbf, 0x06, 0x0a, 0x19, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x72, 0x65, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41,
0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x6e, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x64, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41,
0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x2e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x72, 0x65,
0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c,
0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x49,
0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x45, 0x47, 0x49, 0x54, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x10, 0x01,
0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x52, 0x41, 0x55, 0x44, 0x55, 0x4c, 0x45, 0x4e, 0x54, 0x10, 0x02,
0x12, 0x18, 0x0a, 0x10, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x43, 0x4f, 0x52,
0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x50, 0x41,
0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54,
0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x22, 0xcf, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41,
0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x48, 0x41,
0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x46, 0x52, 0x41, 0x55, 0x44, 0x10, 0x08, 0x12,
0x16, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x44, 0x49,
0x53, 0x50, 0x55, 0x54, 0x45, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x46, 0x55, 0x4e,
0x44, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x5f, 0x46, 0x52,
0x41, 0x55, 0x44, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12,
0x18, 0x0a, 0x14, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44,
0x45, 0x43, 0x4c, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x59,
0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x55, 0x52, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10,
0x02, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x54,
0x57, 0x4f, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x50,
0x41, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x54, 0x57, 0x4f, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52,
0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x57, 0x4f,
0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x52,
0x52, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x05, 0x12,
0x16, 0x0a, 0x12, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x50, 0x41, 0x53,
0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x4f, 0x43, 0x49, 0x41,
0x4c, 0x5f, 0x53, 0x50, 0x41, 0x4d, 0x10, 0x0e, 0x22, 0x1c, 0x0a, 0x1a, 0x41, 0x6e, 0x6e, 0x6f,
0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x02, 0x0a, 0x1f, 0x50, 0x72, 0x69, 0x76, 0x61,
0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x61, 0x6b, 0x56, 0x65,
0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x6c, 0x6f,
0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6c, 0x6f, 0x6f,
0x6b, 0x75, 0x70, 0x48, 0x61, 0x73, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x4a, 0x0a,
0x1f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1c, 0x65, 0x6e, 0x63,
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x1d, 0x65, 0x6e, 0x63,
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c,
0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x4c, 0x65, 0x61, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65,
0x73, 0x12, 0x4e, 0x0a, 0x21, 0x72, 0x65, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x1e, 0x72, 0x65, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x55, 0x73,
0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x61, 0x73,
0x68, 0x22, 0x9f, 0x05, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74,
0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x05, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5b, 0x0a, 0x0d, 0x72,
0x69, 0x73, 0x6b, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x72, 0x69, 0x73, 0x6b,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x64, 0x0a, 0x10, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x7e,
0x0a, 0x1b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d,
0x65, 0x6e, 0x74, 0x52, 0x19, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x91,
0x01, 0x0a, 0x22, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77,
0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
0x64, 0x4c, 0x65, 0x61, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x1f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x4c, 0x65, 0x61, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x3a, 0x5f, 0xea, 0x41, 0x5c, 0x0a, 0x2d, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x73, 0x65,
0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73,
0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65,
0x6e, 0x74, 0x7d, 0x22, 0xf2, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a,
0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x69, 0x74, 0x65,
0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
0x07, 0x73, 0x69, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72,
0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x0f,
0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72,
0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x78, 0x70,
0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x11, 0x68, 0x61, 0x73, 0x68, 0x65,
0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc1, 0x02, 0x0a, 0x0c, 0x52, 0x69, 0x73,
0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f,
0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12,
0x60, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x73, 0x69, 0x73, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
0x73, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x4c,
0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41,
0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10,
0x01, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f,
0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a,
0x10, 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x55, 0x43, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49,
0x43, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45,
0x44, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4e, 0x53,
0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x44,
0x45, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x05, 0x22, 0x97, 0x03, 0x0a,
0x0f, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x69, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x69, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a,
0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65,
0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x01,
0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x02, 0x12,
0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04,
0x44, 0x55, 0x50, 0x45, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x52, 0x4f, 0x57, 0x53, 0x45, 0x52, 0x5f, 0x45,
0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x22, 0xbe, 0x02, 0x0a, 0x19, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73,
0x6d, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0e, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
0x73, 0x22, 0xb3, 0x01, 0x0a, 0x14, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x66,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43,
0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x5f, 0x4c,
0x41, 0x42, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4d, 0x41,
0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x55, 0x53, 0x50, 0x49, 0x43, 0x49,
0x4f, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49,
0x54, 0x59, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x55, 0x53, 0x50, 0x49, 0x43, 0x49, 0x4f,
0x55, 0x53, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54,
0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x45, 0x44,
0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52,
0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x22, 0xa0, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4b, 0x65, 0x79, 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, 0x3f, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79,
0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xa4, 0x01, 0x0a, 0x0f, 0x4c,
0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b,
0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a,
0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x78, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b,
0x65, 0x79, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x62, 0x0a, 0x1e, 0x52,
0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63,
0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa,
0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22,
0x53, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b,
0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79,
0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70,
0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 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, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x10,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x11, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x4b,
0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a,
0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a,
0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x73, 0x63,
0x6f, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x73, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x73, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x3a, 0x56, 0xea, 0x41, 0x53, 0x0a, 0x2a, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73,
0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x4d,
0x0a, 0x1f, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72,
0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65,
0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x22, 0xb0, 0x06,
0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73,
0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0c,
0x77, 0x65, 0x62, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x64, 0x0a, 0x10, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69,
0x64, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65,
0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x6e, 0x64,
0x72, 0x6f, 0x69, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x58, 0x0a, 0x0c,
0x69, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6f, 0x73, 0x53, 0x65,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79,
0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61,
0x62, 0x65, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74,
0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
0x0e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x53, 0x0a, 0x0c, 0x77, 0x61, 0x66, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18,
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0b, 0x77, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a,
0x4a, 0xea, 0x41, 0x47, 0x0a, 0x26, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d,
0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x42, 0x13, 0x0a, 0x11, 0x70,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x22, 0x88, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73,
0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74,
0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x71, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74,
0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e,
0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x74, 0x65, 0x73, 0x74, 0x69,
0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x10, 0x54,
0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12,
0x21, 0x0a, 0x1d, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x48, 0x41, 0x4c, 0x4c,
0x45, 0x4e, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x43, 0x41, 0x50, 0x54, 0x43, 0x48, 0x41, 0x10,
0x01, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x4e, 0x53, 0x4f, 0x4c, 0x56, 0x41, 0x42, 0x4c, 0x45, 0x5f,
0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x22, 0xf1, 0x04, 0x0a, 0x0e,
0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2a,
0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c,
0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61,
0x69, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6d, 0x70,
0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6d, 0x70, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12,
0x73, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x54, 0x79, 0x70, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e,
0x67, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x73, 0x2e, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x63,
0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x49, 0x6e,
0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a,
0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50,
0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
0x09, 0x0a, 0x05, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x48,
0x45, 0x43, 0x4b, 0x42, 0x4f, 0x58, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x56, 0x49,
0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x22, 0x76, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6c, 0x6c,
0x65, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x65, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45,
0x4e, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x45,
0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x53, 0x41, 0x42, 0x49, 0x4c, 0x49,
0x54, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10,
0x02, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x22,
0x7f, 0x0a, 0x12, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61,
0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c,
0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15,
0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x61, 0x6c, 0x6c,
0x6f, 0x77, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73,
0x22, 0x6f, 0x0a, 0x0e, 0x49, 0x4f, 0x53, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x6c, 0x5f,
0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65,
0x49, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x62,
0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64,
0x73, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72,
0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65,
0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69,
0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x63, 0x6b,
0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x6f, 0x72,
0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72,
0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73,
0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61,
0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x61, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x78, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x22, 0xa8, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61,
0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70,
0x61, 0x67, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f,
0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6e, 0x6f, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66, 0x61, 0x69,
0x6c, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x73,
0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x29,
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69,
0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x06, 0x70, 0x61, 0x72,
0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41,
0x42, 0x12, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
0x68, 0x69, 0x70, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a,
0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d,
0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x8d, 0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
0x52, 0x1e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73,
0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbf, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73,
0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e, 0xe0, 0x41,
0x02, 0xfa, 0x41, 0x38, 0x12, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61,
0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xba, 0x01, 0x0a, 0x20, 0x4c,
0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x6e, 0x0a, 0x16, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x14, 0x72, 0x65, 0x6c, 0x61, 0x74,
0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12,
0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x88, 0x02, 0x0a, 0x2b, 0x53, 0x65, 0x61, 0x72,
0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x42,
0x12, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68,
0x69, 0x70, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x68,
0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x68, 0x61, 0x73,
0x68, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09,
0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22,
0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0xe6, 0x01, 0x0a, 0x2c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c,
0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x21, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
0x68, 0x69, 0x70, 0x52, 0x1e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68,
0x69, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xca, 0x02, 0x0a, 0x1d,
0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72,
0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x5c, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02,
0xfa, 0x41, 0x42, 0x0a, 0x40, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x68,
0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x41, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x3a, 0x9e, 0x01, 0xea, 0x41, 0x9a, 0x01, 0x0a, 0x40,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61, 0x74,
0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, 0x2f,
0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x6d,
0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x7d, 0x22, 0xe5, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x6c,
0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
0x12, 0x52, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3e,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x38, 0x0a, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74,
0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x7a, 0xea, 0x41, 0x77, 0x0a, 0x36, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65,
0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x12, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d,
0x22, 0xea, 0x02, 0x0a, 0x0b, 0x57, 0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
0x12, 0x61, 0x0a, 0x0b, 0x77, 0x61, 0x66, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x66, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x0b, 0x77, 0x61, 0x66, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75,
0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57,
0x61, 0x66, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x57, 0x61, 0x66, 0x46, 0x65,
0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x77, 0x61, 0x66, 0x46,
0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x62, 0x0a, 0x0a, 0x57, 0x61, 0x66, 0x46, 0x65, 0x61,
0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f, 0x46, 0x45, 0x41, 0x54,
0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x4c, 0x4c, 0x45, 0x4e, 0x47, 0x45, 0x5f, 0x50,
0x41, 0x47, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e,
0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x43, 0x54, 0x49,
0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x22, 0x31, 0x0a, 0x0a, 0x57, 0x61,
0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x41, 0x46, 0x5f,
0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x43, 0x41, 0x10, 0x01, 0x32, 0xfb, 0x14,
0x0a, 0x1a, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xce, 0x01, 0x0a,
0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e,
0x74, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73,
0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74,
0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x0a, 0x61,
0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0xda, 0x41, 0x11, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x2c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xe0, 0x01,
0x0a, 0x12, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73,
0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
0x61, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x22, 0x2c, 0x2f,
0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f,
0x2a, 0x7d, 0x3a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41,
0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x97, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x35,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65,
0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73,
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22,
0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d,
0x2f, 0x6b, 0x65, 0x79, 0x73, 0x3a, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x9d, 0x01, 0x0a, 0x08, 0x4c,
0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76,
0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x17, 0x52,
0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63,
0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74,
0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65,
0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x6b, 0x65, 0x79, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b,
0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x4c,
0x65, 0x67, 0x61, 0x63, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0xda, 0x41,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x8c, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12,
0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x24, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73,
0x2f, 0x2a, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65,
0x79, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70,
0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65,
0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
0x65, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x32, 0x20, 0x2f, 0x76, 0x31, 0x2f,
0x7b, 0x6b, 0x65, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12,
0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72,
0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69,
0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x24,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x2a, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79,
0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9f, 0x01, 0x0a, 0x0a, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65,
0x4b, 0x65, 0x79, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74,
0x65, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x4b, 0x65, 0x79, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x24, 0x2f,
0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x69, 0x67, 0x72,
0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xa7, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x33, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6b, 0x65, 0x79, 0x73, 0x2f, 0x2a,
0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0xe6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x44, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63,
0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41,
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75,
0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93,
0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x92, 0x02, 0x0a, 0x22, 0x4c, 0x69,
0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73,
0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74,
0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74,
0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
0x2a, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
0x73, 0x68, 0x69, 0x70, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xb2,
0x02, 0x0a, 0x24, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64,
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62,
0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69,
0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63,
0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73,
0x68, 0x69, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72,
0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x3a, 0x73, 0x65,
0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x2c, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x5f, 0x69, 0x64, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68,
0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74,
0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x93, 0x02, 0x0a, 0x21,
0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e, 0x76,
0x31, 0x42, 0x18, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65,
0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x56, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x72, 0x65, 0x63, 0x61, 0x70,
0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2f, 0x76,
0x31, 0x3b, 0x72, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0xa2, 0x02, 0x04, 0x47, 0x43, 0x52, 0x45, 0xaa, 0x02, 0x23, 0x47,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x52, 0x65, 0x63, 0x61,
0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x2e,
0x56, 0x31, 0xca, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75,
0x64, 0x5c, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74, 0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72,
0x70, 0x72, 0x69, 0x73, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x52, 0x65, 0x63, 0x61, 0x70, 0x74,
0x63, 0x68, 0x61, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x3a, 0x3a, 0x56,
0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescOnce sync.Once
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData = file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc
)
func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescGZIP() []byte {
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescOnce.Do(func() {
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData)
})
return file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDescData
}
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes = make([]protoimpl.MessageInfo, 40)
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = []interface{}{
(AnnotateAssessmentRequest_Annotation)(0), // 0: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation
(AnnotateAssessmentRequest_Reason)(0), // 1: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason
(RiskAnalysis_ClassificationReason)(0), // 2: google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason
(TokenProperties_InvalidReason)(0), // 3: google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReason
(AccountDefenderAssessment_AccountDefenderLabel)(0), // 4: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel
(TestingOptions_TestingChallenge)(0), // 5: google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge
(WebKeySettings_IntegrationType)(0), // 6: google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType
(WebKeySettings_ChallengeSecurityPreference)(0), // 7: google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference
(WafSettings_WafFeature)(0), // 8: google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature
(WafSettings_WafService)(0), // 9: google.cloud.recaptchaenterprise.v1.WafSettings.WafService
(*CreateAssessmentRequest)(nil), // 10: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest
(*AnnotateAssessmentRequest)(nil), // 11: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest
(*AnnotateAssessmentResponse)(nil), // 12: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse
(*PrivatePasswordLeakVerification)(nil), // 13: google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification
(*Assessment)(nil), // 14: google.cloud.recaptchaenterprise.v1.Assessment
(*Event)(nil), // 15: google.cloud.recaptchaenterprise.v1.Event
(*RiskAnalysis)(nil), // 16: google.cloud.recaptchaenterprise.v1.RiskAnalysis
(*TokenProperties)(nil), // 17: google.cloud.recaptchaenterprise.v1.TokenProperties
(*AccountDefenderAssessment)(nil), // 18: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment
(*CreateKeyRequest)(nil), // 19: google.cloud.recaptchaenterprise.v1.CreateKeyRequest
(*ListKeysRequest)(nil), // 20: google.cloud.recaptchaenterprise.v1.ListKeysRequest
(*ListKeysResponse)(nil), // 21: google.cloud.recaptchaenterprise.v1.ListKeysResponse
(*RetrieveLegacySecretKeyRequest)(nil), // 22: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest
(*GetKeyRequest)(nil), // 23: google.cloud.recaptchaenterprise.v1.GetKeyRequest
(*UpdateKeyRequest)(nil), // 24: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest
(*DeleteKeyRequest)(nil), // 25: google.cloud.recaptchaenterprise.v1.DeleteKeyRequest
(*MigrateKeyRequest)(nil), // 26: google.cloud.recaptchaenterprise.v1.MigrateKeyRequest
(*GetMetricsRequest)(nil), // 27: google.cloud.recaptchaenterprise.v1.GetMetricsRequest
(*Metrics)(nil), // 28: google.cloud.recaptchaenterprise.v1.Metrics
(*RetrieveLegacySecretKeyResponse)(nil), // 29: google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse
(*Key)(nil), // 30: google.cloud.recaptchaenterprise.v1.Key
(*TestingOptions)(nil), // 31: google.cloud.recaptchaenterprise.v1.TestingOptions
(*WebKeySettings)(nil), // 32: google.cloud.recaptchaenterprise.v1.WebKeySettings
(*AndroidKeySettings)(nil), // 33: google.cloud.recaptchaenterprise.v1.AndroidKeySettings
(*IOSKeySettings)(nil), // 34: google.cloud.recaptchaenterprise.v1.IOSKeySettings
(*ScoreDistribution)(nil), // 35: google.cloud.recaptchaenterprise.v1.ScoreDistribution
(*ScoreMetrics)(nil), // 36: google.cloud.recaptchaenterprise.v1.ScoreMetrics
(*ChallengeMetrics)(nil), // 37: google.cloud.recaptchaenterprise.v1.ChallengeMetrics
(*ListRelatedAccountGroupMembershipsRequest)(nil), // 38: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest
(*ListRelatedAccountGroupMembershipsResponse)(nil), // 39: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse
(*ListRelatedAccountGroupsRequest)(nil), // 40: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest
(*ListRelatedAccountGroupsResponse)(nil), // 41: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse
(*SearchRelatedAccountGroupMembershipsRequest)(nil), // 42: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest
(*SearchRelatedAccountGroupMembershipsResponse)(nil), // 43: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse
(*RelatedAccountGroupMembership)(nil), // 44: google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
(*RelatedAccountGroup)(nil), // 45: google.cloud.recaptchaenterprise.v1.RelatedAccountGroup
(*WafSettings)(nil), // 46: google.cloud.recaptchaenterprise.v1.WafSettings
nil, // 47: google.cloud.recaptchaenterprise.v1.Key.LabelsEntry
nil, // 48: google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry
nil, // 49: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry
(*timestamp.Timestamp)(nil), // 50: google.protobuf.Timestamp
(*field_mask.FieldMask)(nil), // 51: google.protobuf.FieldMask
(*empty.Empty)(nil), // 52: google.protobuf.Empty
}
var file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs = []int32{
14, // 0: google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest.assessment:type_name -> google.cloud.recaptchaenterprise.v1.Assessment
0, // 1: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.annotation:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Annotation
1, // 2: google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.reasons:type_name -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.Reason
15, // 3: google.cloud.recaptchaenterprise.v1.Assessment.event:type_name -> google.cloud.recaptchaenterprise.v1.Event
16, // 4: google.cloud.recaptchaenterprise.v1.Assessment.risk_analysis:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis
17, // 5: google.cloud.recaptchaenterprise.v1.Assessment.token_properties:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties
18, // 6: google.cloud.recaptchaenterprise.v1.Assessment.account_defender_assessment:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment
13, // 7: google.cloud.recaptchaenterprise.v1.Assessment.private_password_leak_verification:type_name -> google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerification
2, // 8: google.cloud.recaptchaenterprise.v1.RiskAnalysis.reasons:type_name -> google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReason
3, // 9: google.cloud.recaptchaenterprise.v1.TokenProperties.invalid_reason:type_name -> google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReason
50, // 10: google.cloud.recaptchaenterprise.v1.TokenProperties.create_time:type_name -> google.protobuf.Timestamp
4, // 11: google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.labels:type_name -> google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel
30, // 12: google.cloud.recaptchaenterprise.v1.CreateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key
30, // 13: google.cloud.recaptchaenterprise.v1.ListKeysResponse.keys:type_name -> google.cloud.recaptchaenterprise.v1.Key
30, // 14: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.key:type_name -> google.cloud.recaptchaenterprise.v1.Key
51, // 15: google.cloud.recaptchaenterprise.v1.UpdateKeyRequest.update_mask:type_name -> google.protobuf.FieldMask
50, // 16: google.cloud.recaptchaenterprise.v1.Metrics.start_time:type_name -> google.protobuf.Timestamp
36, // 17: google.cloud.recaptchaenterprise.v1.Metrics.score_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics
37, // 18: google.cloud.recaptchaenterprise.v1.Metrics.challenge_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ChallengeMetrics
32, // 19: google.cloud.recaptchaenterprise.v1.Key.web_settings:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings
33, // 20: google.cloud.recaptchaenterprise.v1.Key.android_settings:type_name -> google.cloud.recaptchaenterprise.v1.AndroidKeySettings
34, // 21: google.cloud.recaptchaenterprise.v1.Key.ios_settings:type_name -> google.cloud.recaptchaenterprise.v1.IOSKeySettings
47, // 22: google.cloud.recaptchaenterprise.v1.Key.labels:type_name -> google.cloud.recaptchaenterprise.v1.Key.LabelsEntry
50, // 23: google.cloud.recaptchaenterprise.v1.Key.create_time:type_name -> google.protobuf.Timestamp
31, // 24: google.cloud.recaptchaenterprise.v1.Key.testing_options:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions
46, // 25: google.cloud.recaptchaenterprise.v1.Key.waf_settings:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings
5, // 26: google.cloud.recaptchaenterprise.v1.TestingOptions.testing_challenge:type_name -> google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallenge
6, // 27: google.cloud.recaptchaenterprise.v1.WebKeySettings.integration_type:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationType
7, // 28: google.cloud.recaptchaenterprise.v1.WebKeySettings.challenge_security_preference:type_name -> google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreference
48, // 29: google.cloud.recaptchaenterprise.v1.ScoreDistribution.score_buckets:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry
35, // 30: google.cloud.recaptchaenterprise.v1.ScoreMetrics.overall_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution
49, // 31: google.cloud.recaptchaenterprise.v1.ScoreMetrics.action_metrics:type_name -> google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry
44, // 32: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
45, // 33: google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse.related_account_groups:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroup
44, // 34: google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse.related_account_group_memberships:type_name -> google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership
9, // 35: google.cloud.recaptchaenterprise.v1.WafSettings.waf_service:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafService
8, // 36: google.cloud.recaptchaenterprise.v1.WafSettings.waf_feature:type_name -> google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature
35, // 37: google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry.value:type_name -> google.cloud.recaptchaenterprise.v1.ScoreDistribution
10, // 38: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest
11, // 39: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:input_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest
19, // 40: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:input_type -> google.cloud.recaptchaenterprise.v1.CreateKeyRequest
20, // 41: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:input_type -> google.cloud.recaptchaenterprise.v1.ListKeysRequest
22, // 42: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:input_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest
23, // 43: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:input_type -> google.cloud.recaptchaenterprise.v1.GetKeyRequest
24, // 44: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:input_type -> google.cloud.recaptchaenterprise.v1.UpdateKeyRequest
25, // 45: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:input_type -> google.cloud.recaptchaenterprise.v1.DeleteKeyRequest
26, // 46: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:input_type -> google.cloud.recaptchaenterprise.v1.MigrateKeyRequest
27, // 47: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:input_type -> google.cloud.recaptchaenterprise.v1.GetMetricsRequest
40, // 48: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest
38, // 49: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest
42, // 50: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:input_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest
14, // 51: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.Assessment
12, // 52: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.AnnotateAssessment:output_type -> google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse
30, // 53: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.CreateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
21, // 54: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListKeys:output_type -> google.cloud.recaptchaenterprise.v1.ListKeysResponse
29, // 55: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.RetrieveLegacySecretKey:output_type -> google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse
30, // 56: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
30, // 57: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
52, // 58: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.DeleteKey:output_type -> google.protobuf.Empty
30, // 59: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.MigrateKey:output_type -> google.cloud.recaptchaenterprise.v1.Key
28, // 60: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetMetrics:output_type -> google.cloud.recaptchaenterprise.v1.Metrics
41, // 61: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroups:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse
39, // 62: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.ListRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse
43, // 63: google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.SearchRelatedAccountGroupMemberships:output_type -> google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse
51, // [51:64] is the sub-list for method output_type
38, // [38:51] is the sub-list for method input_type
38, // [38:38] is the sub-list for extension type_name
38, // [38:38] is the sub-list for extension extendee
0, // [0:38] is the sub-list for field type_name
}
func init() { file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() }
func file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_init() {
if File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateAssessmentRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AnnotateAssessmentRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AnnotateAssessmentResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PrivatePasswordLeakVerification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Assessment); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Event); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RiskAnalysis); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TokenProperties); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AccountDefenderAssessment); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListKeysRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListKeysResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RetrieveLegacySecretKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MigrateKeyRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetMetricsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Metrics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RetrieveLegacySecretKeyResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Key); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TestingOptions); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WebKeySettings); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AndroidKeySettings); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IOSKeySettings); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScoreDistribution); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScoreMetrics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChallengeMetrics); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelatedAccountGroupMembershipsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelatedAccountGroupMembershipsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelatedAccountGroupsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRelatedAccountGroupsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchRelatedAccountGroupMembershipsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchRelatedAccountGroupMembershipsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RelatedAccountGroupMembership); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RelatedAccountGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WafSettings); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes[20].OneofWrappers = []interface{}{
(*Key_WebSettings)(nil),
(*Key_AndroidSettings)(nil),
(*Key_IosSettings)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc,
NumEnums: 10,
NumMessages: 40,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes,
DependencyIndexes: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_depIdxs,
EnumInfos: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_enumTypes,
MessageInfos: file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_msgTypes,
}.Build()
File_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto = out.File
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_rawDesc = nil
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_proto_goTypes = nil
file_google_cloud_recaptchaenterprise_v1_recaptchaenterprise_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
// RecaptchaEnterpriseServiceClient is the client API for RecaptchaEnterpriseService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type RecaptchaEnterpriseServiceClient interface {
// Creates an Assessment of the likelihood an event is legitimate.
CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error)
// Annotates a previously created Assessment to provide additional information
// on whether the event turned out to be authentic or fraudulent.
AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error)
// Creates a new reCAPTCHA Enterprise key.
CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*Key, error)
// Returns the list of all keys that belong to a project.
ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error)
// Returns the secret key related to the specified public key.
// You must use the legacy secret key only in a 3rd party integration with
// legacy reCAPTCHA.
RetrieveLegacySecretKey(ctx context.Context, in *RetrieveLegacySecretKeyRequest, opts ...grpc.CallOption) (*RetrieveLegacySecretKeyResponse, error)
// Returns the specified key.
GetKey(ctx context.Context, in *GetKeyRequest, opts ...grpc.CallOption) (*Key, error)
// Updates the specified key.
UpdateKey(ctx context.Context, in *UpdateKeyRequest, opts ...grpc.CallOption) (*Key, error)
// Deletes the specified key.
DeleteKey(ctx context.Context, in *DeleteKeyRequest, opts ...grpc.CallOption) (*empty.Empty, error)
// Migrates an existing key from reCAPTCHA to reCAPTCHA Enterprise.
// Once a key is migrated, it can be used from either product. SiteVerify
// requests are billed as CreateAssessment calls. You must be
// authenticated as one of the current owners of the reCAPTCHA Site Key, and
// your user must have the reCAPTCHA Enterprise Admin IAM role in the
// destination project.
MigrateKey(ctx context.Context, in *MigrateKeyRequest, opts ...grpc.CallOption) (*Key, error)
// Get some aggregated metrics for a Key. This data can be used to build
// dashboards.
GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error)
// List groups of related accounts.
ListRelatedAccountGroups(ctx context.Context, in *ListRelatedAccountGroupsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupsResponse, error)
// Get memberships in a group of related accounts.
ListRelatedAccountGroupMemberships(ctx context.Context, in *ListRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupMembershipsResponse, error)
// Search group memberships related to a given account.
SearchRelatedAccountGroupMemberships(ctx context.Context, in *SearchRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*SearchRelatedAccountGroupMembershipsResponse, error)
}
type recaptchaEnterpriseServiceClient struct {
cc grpc.ClientConnInterface
}
func NewRecaptchaEnterpriseServiceClient(cc grpc.ClientConnInterface) RecaptchaEnterpriseServiceClient {
return &recaptchaEnterpriseServiceClient{cc}
}
func (c *recaptchaEnterpriseServiceClient) CreateAssessment(ctx context.Context, in *CreateAssessmentRequest, opts ...grpc.CallOption) (*Assessment, error) {
out := new(Assessment)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateAssessment", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) AnnotateAssessment(ctx context.Context, in *AnnotateAssessmentRequest, opts ...grpc.CallOption) (*AnnotateAssessmentResponse, error) {
out := new(AnnotateAssessmentResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AnnotateAssessment", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) CreateKey(ctx context.Context, in *CreateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
out := new(Key)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) ListKeys(ctx context.Context, in *ListKeysRequest, opts ...grpc.CallOption) (*ListKeysResponse, error) {
out := new(ListKeysResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListKeys", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) RetrieveLegacySecretKey(ctx context.Context, in *RetrieveLegacySecretKeyRequest, opts ...grpc.CallOption) (*RetrieveLegacySecretKeyResponse, error) {
out := new(RetrieveLegacySecretKeyResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/RetrieveLegacySecretKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) GetKey(ctx context.Context, in *GetKeyRequest, opts ...grpc.CallOption) (*Key, error) {
out := new(Key)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) UpdateKey(ctx context.Context, in *UpdateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
out := new(Key)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/UpdateKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) DeleteKey(ctx context.Context, in *DeleteKeyRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
out := new(empty.Empty)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/DeleteKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) MigrateKey(ctx context.Context, in *MigrateKeyRequest, opts ...grpc.CallOption) (*Key, error) {
out := new(Key)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/MigrateKey", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*Metrics, error) {
out := new(Metrics)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetMetrics", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) ListRelatedAccountGroups(ctx context.Context, in *ListRelatedAccountGroupsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupsResponse, error) {
out := new(ListRelatedAccountGroupsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroups", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) ListRelatedAccountGroupMemberships(ctx context.Context, in *ListRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*ListRelatedAccountGroupMembershipsResponse, error) {
out := new(ListRelatedAccountGroupMembershipsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroupMemberships", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *recaptchaEnterpriseServiceClient) SearchRelatedAccountGroupMemberships(ctx context.Context, in *SearchRelatedAccountGroupMembershipsRequest, opts ...grpc.CallOption) (*SearchRelatedAccountGroupMembershipsResponse, error) {
out := new(SearchRelatedAccountGroupMembershipsResponse)
err := c.cc.Invoke(ctx, "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/SearchRelatedAccountGroupMemberships", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// RecaptchaEnterpriseServiceServer is the server API for RecaptchaEnterpriseService service.
type RecaptchaEnterpriseServiceServer interface {
// Creates an Assessment of the likelihood an event is legitimate.
CreateAssessment(context.Context, *CreateAssessmentRequest) (*Assessment, error)
// Annotates a previously created Assessment to provide additional information
// on whether the event turned out to be authentic or fraudulent.
AnnotateAssessment(context.Context, *AnnotateAssessmentRequest) (*AnnotateAssessmentResponse, error)
// Creates a new reCAPTCHA Enterprise key.
CreateKey(context.Context, *CreateKeyRequest) (*Key, error)
// Returns the list of all keys that belong to a project.
ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error)
// Returns the secret key related to the specified public key.
// You must use the legacy secret key only in a 3rd party integration with
// legacy reCAPTCHA.
RetrieveLegacySecretKey(context.Context, *RetrieveLegacySecretKeyRequest) (*RetrieveLegacySecretKeyResponse, error)
// Returns the specified key.
GetKey(context.Context, *GetKeyRequest) (*Key, error)
// Updates the specified key.
UpdateKey(context.Context, *UpdateKeyRequest) (*Key, error)
// Deletes the specified key.
DeleteKey(context.Context, *DeleteKeyRequest) (*empty.Empty, error)
// Migrates an existing key from reCAPTCHA to reCAPTCHA Enterprise.
// Once a key is migrated, it can be used from either product. SiteVerify
// requests are billed as CreateAssessment calls. You must be
// authenticated as one of the current owners of the reCAPTCHA Site Key, and
// your user must have the reCAPTCHA Enterprise Admin IAM role in the
// destination project.
MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error)
// Get some aggregated metrics for a Key. This data can be used to build
// dashboards.
GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error)
// List groups of related accounts.
ListRelatedAccountGroups(context.Context, *ListRelatedAccountGroupsRequest) (*ListRelatedAccountGroupsResponse, error)
// Get memberships in a group of related accounts.
ListRelatedAccountGroupMemberships(context.Context, *ListRelatedAccountGroupMembershipsRequest) (*ListRelatedAccountGroupMembershipsResponse, error)
// Search group memberships related to a given account.
SearchRelatedAccountGroupMemberships(context.Context, *SearchRelatedAccountGroupMembershipsRequest) (*SearchRelatedAccountGroupMembershipsResponse, error)
}
// UnimplementedRecaptchaEnterpriseServiceServer can be embedded to have forward compatible implementations.
type UnimplementedRecaptchaEnterpriseServiceServer struct {
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) CreateAssessment(context.Context, *CreateAssessmentRequest) (*Assessment, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateAssessment not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) AnnotateAssessment(context.Context, *AnnotateAssessmentRequest) (*AnnotateAssessmentResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AnnotateAssessment not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) CreateKey(context.Context, *CreateKeyRequest) (*Key, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListKeys(context.Context, *ListKeysRequest) (*ListKeysResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListKeys not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) RetrieveLegacySecretKey(context.Context, *RetrieveLegacySecretKeyRequest) (*RetrieveLegacySecretKeyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RetrieveLegacySecretKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) GetKey(context.Context, *GetKeyRequest) (*Key, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) UpdateKey(context.Context, *UpdateKeyRequest) (*Key, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) DeleteKey(context.Context, *DeleteKeyRequest) (*empty.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) MigrateKey(context.Context, *MigrateKeyRequest) (*Key, error) {
return nil, status.Errorf(codes.Unimplemented, "method MigrateKey not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) GetMetrics(context.Context, *GetMetricsRequest) (*Metrics, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetMetrics not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListRelatedAccountGroups(context.Context, *ListRelatedAccountGroupsRequest) (*ListRelatedAccountGroupsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRelatedAccountGroups not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) ListRelatedAccountGroupMemberships(context.Context, *ListRelatedAccountGroupMembershipsRequest) (*ListRelatedAccountGroupMembershipsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRelatedAccountGroupMemberships not implemented")
}
func (*UnimplementedRecaptchaEnterpriseServiceServer) SearchRelatedAccountGroupMemberships(context.Context, *SearchRelatedAccountGroupMembershipsRequest) (*SearchRelatedAccountGroupMembershipsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SearchRelatedAccountGroupMemberships not implemented")
}
func RegisterRecaptchaEnterpriseServiceServer(s *grpc.Server, srv RecaptchaEnterpriseServiceServer) {
s.RegisterService(&_RecaptchaEnterpriseService_serviceDesc, srv)
}
func _RecaptchaEnterpriseService_CreateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateAssessmentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).CreateAssessment(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateAssessment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).CreateAssessment(ctx, req.(*CreateAssessmentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_AnnotateAssessment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AnnotateAssessmentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).AnnotateAssessment(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/AnnotateAssessment",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).AnnotateAssessment(ctx, req.(*AnnotateAssessmentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_CreateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).CreateKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/CreateKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).CreateKey(ctx, req.(*CreateKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_ListKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListKeysRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).ListKeys(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListKeys",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).ListKeys(ctx, req.(*ListKeysRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_RetrieveLegacySecretKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(RetrieveLegacySecretKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).RetrieveLegacySecretKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/RetrieveLegacySecretKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).RetrieveLegacySecretKey(ctx, req.(*RetrieveLegacySecretKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_GetKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).GetKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).GetKey(ctx, req.(*GetKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_UpdateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).UpdateKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/UpdateKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).UpdateKey(ctx, req.(*UpdateKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_DeleteKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).DeleteKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/DeleteKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).DeleteKey(ctx, req.(*DeleteKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_MigrateKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MigrateKeyRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).MigrateKey(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/MigrateKey",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).MigrateKey(ctx, req.(*MigrateKeyRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetMetricsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).GetMetrics(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/GetMetrics",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).GetMetrics(ctx, req.(*GetMetricsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_ListRelatedAccountGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRelatedAccountGroupsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroups(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroups",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroups(ctx, req.(*ListRelatedAccountGroupsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_ListRelatedAccountGroupMemberships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRelatedAccountGroupMembershipsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroupMemberships(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/ListRelatedAccountGroupMemberships",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).ListRelatedAccountGroupMemberships(ctx, req.(*ListRelatedAccountGroupMembershipsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _RecaptchaEnterpriseService_SearchRelatedAccountGroupMemberships_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SearchRelatedAccountGroupMembershipsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RecaptchaEnterpriseServiceServer).SearchRelatedAccountGroupMemberships(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService/SearchRelatedAccountGroupMemberships",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RecaptchaEnterpriseServiceServer).SearchRelatedAccountGroupMemberships(ctx, req.(*SearchRelatedAccountGroupMembershipsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _RecaptchaEnterpriseService_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService",
HandlerType: (*RecaptchaEnterpriseServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CreateAssessment",
Handler: _RecaptchaEnterpriseService_CreateAssessment_Handler,
},
{
MethodName: "AnnotateAssessment",
Handler: _RecaptchaEnterpriseService_AnnotateAssessment_Handler,
},
{
MethodName: "CreateKey",
Handler: _RecaptchaEnterpriseService_CreateKey_Handler,
},
{
MethodName: "ListKeys",
Handler: _RecaptchaEnterpriseService_ListKeys_Handler,
},
{
MethodName: "RetrieveLegacySecretKey",
Handler: _RecaptchaEnterpriseService_RetrieveLegacySecretKey_Handler,
},
{
MethodName: "GetKey",
Handler: _RecaptchaEnterpriseService_GetKey_Handler,
},
{
MethodName: "UpdateKey",
Handler: _RecaptchaEnterpriseService_UpdateKey_Handler,
},
{
MethodName: "DeleteKey",
Handler: _RecaptchaEnterpriseService_DeleteKey_Handler,
},
{
MethodName: "MigrateKey",
Handler: _RecaptchaEnterpriseService_MigrateKey_Handler,
},
{
MethodName: "GetMetrics",
Handler: _RecaptchaEnterpriseService_GetMetrics_Handler,
},
{
MethodName: "ListRelatedAccountGroups",
Handler: _RecaptchaEnterpriseService_ListRelatedAccountGroups_Handler,
},
{
MethodName: "ListRelatedAccountGroupMemberships",
Handler: _RecaptchaEnterpriseService_ListRelatedAccountGroupMemberships_Handler,
},
{
MethodName: "SearchRelatedAccountGroupMemberships",
Handler: _RecaptchaEnterpriseService_SearchRelatedAccountGroupMemberships_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto",
}