pkg/api/validator/validator.pb.go (1,080 lines of code) (raw):
// Copyright 2019 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.
// The definition of validator RPC service.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
// protoc v4.24.0
// source: validator.proto
package validator
import (
accesscontextmanagerpb "cloud.google.com/go/accesscontextmanager/apiv1/accesscontextmanagerpb"
assetpb "cloud.google.com/go/asset/apiv1/assetpb"
iampb "cloud.google.com/go/iam/apiv1/iampb"
orgpolicypb "cloud.google.com/go/orgpolicy/apiv1/orgpolicypb"
orgpolicypb1 "cloud.google.com/go/orgpolicy/apiv2/orgpolicypb"
context "context"
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"
structpb "google.golang.org/protobuf/types/known/structpb"
reflect "reflect"
sync "sync"
)
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)
)
// Asset contains GCP resource metadata and additional metadata set on a resource, such as Cloud IAM policy.
// WARNING: these field names are directly used to structure data passed to templates.
// Changes in field names will result in changes to the data provided to the templates.
type Asset struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// GCP resource name as defined by Cloud Asset Inventory.
// See https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/resource-name-format for the format.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Cloud Asset Inventory type (CAI API v1 format). Example: "sqladmin.googleapis.com/Instance" is the type of Cloud SQL instance.
// This field has a redundant "asset" prefix to be consistent with Cloud Asset Inventory output.
// See https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview#supported_resource_types for the list of types.
AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"`
// Ancestral project/folder/org information in a path-like format.
// For example, a GCP project that is nested under a folder may have the following path:
// organization/9999/folder/8888/project/7777
AncestryPath string `protobuf:"bytes,3,opt,name=ancestry_path,json=ancestryPath,proto3" json:"ancestry_path,omitempty"`
// GCP resource metadata.
Resource *assetpb.Resource `protobuf:"bytes,4,opt,name=resource,proto3" json:"resource,omitempty"`
// IAM policy associated with the resource.
IamPolicy *iampb.Policy `protobuf:"bytes,5,opt,name=iam_policy,json=iamPolicy,proto3" json:"iam_policy,omitempty"`
// Ancestor list as returned by CAI (added sometime around Oct 2019)
Ancestors []string `protobuf:"bytes,6,rep,name=ancestors,proto3" json:"ancestors,omitempty"`
// Representation of the Cloud Organization Policy set on an asset. For each
// asset, there could be multiple Organization policies with different
// constraints.
OrgPolicy []*orgpolicypb.Policy `protobuf:"bytes,7,rep,name=org_policy,json=orgPolicy,proto3" json:"org_policy,omitempty"`
// Representation of the Cloud Organization access policy.
//
// Types that are assignable to AccessContextPolicy:
//
// *Asset_AccessPolicy
// *Asset_AccessLevel
// *Asset_ServicePerimeter
AccessContextPolicy isAsset_AccessContextPolicy `protobuf_oneof:"access_context_policy"`
// Representation of the Cloud Organization Policy V2 set on an asset.
// There can be multiple V2 Organization Policies for an asset.
V2OrgPolicies []*orgpolicypb1.Policy `protobuf:"bytes,11,rep,name=v2_org_policies,json=v2OrgPolicies,proto3" json:"v2_org_policies,omitempty"`
}
func (x *Asset) Reset() {
*x = Asset{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Asset) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Asset) ProtoMessage() {}
func (x *Asset) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 Asset.ProtoReflect.Descriptor instead.
func (*Asset) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{0}
}
func (x *Asset) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Asset) GetAssetType() string {
if x != nil {
return x.AssetType
}
return ""
}
func (x *Asset) GetAncestryPath() string {
if x != nil {
return x.AncestryPath
}
return ""
}
func (x *Asset) GetResource() *assetpb.Resource {
if x != nil {
return x.Resource
}
return nil
}
func (x *Asset) GetIamPolicy() *iampb.Policy {
if x != nil {
return x.IamPolicy
}
return nil
}
func (x *Asset) GetAncestors() []string {
if x != nil {
return x.Ancestors
}
return nil
}
func (x *Asset) GetOrgPolicy() []*orgpolicypb.Policy {
if x != nil {
return x.OrgPolicy
}
return nil
}
func (m *Asset) GetAccessContextPolicy() isAsset_AccessContextPolicy {
if m != nil {
return m.AccessContextPolicy
}
return nil
}
func (x *Asset) GetAccessPolicy() *accesscontextmanagerpb.AccessPolicy {
if x, ok := x.GetAccessContextPolicy().(*Asset_AccessPolicy); ok {
return x.AccessPolicy
}
return nil
}
func (x *Asset) GetAccessLevel() *accesscontextmanagerpb.AccessLevel {
if x, ok := x.GetAccessContextPolicy().(*Asset_AccessLevel); ok {
return x.AccessLevel
}
return nil
}
func (x *Asset) GetServicePerimeter() *accesscontextmanagerpb.ServicePerimeter {
if x, ok := x.GetAccessContextPolicy().(*Asset_ServicePerimeter); ok {
return x.ServicePerimeter
}
return nil
}
func (x *Asset) GetV2OrgPolicies() []*orgpolicypb1.Policy {
if x != nil {
return x.V2OrgPolicies
}
return nil
}
type isAsset_AccessContextPolicy interface {
isAsset_AccessContextPolicy()
}
type Asset_AccessPolicy struct {
AccessPolicy *accesscontextmanagerpb.AccessPolicy `protobuf:"bytes,8,opt,name=access_policy,json=accessPolicy,proto3,oneof"`
}
type Asset_AccessLevel struct {
AccessLevel *accesscontextmanagerpb.AccessLevel `protobuf:"bytes,9,opt,name=access_level,json=accessLevel,proto3,oneof"`
}
type Asset_ServicePerimeter struct {
ServicePerimeter *accesscontextmanagerpb.ServicePerimeter `protobuf:"bytes,10,opt,name=service_perimeter,json=servicePerimeter,proto3,oneof"`
}
func (*Asset_AccessPolicy) isAsset_AccessContextPolicy() {}
func (*Asset_AccessLevel) isAsset_AccessContextPolicy() {}
func (*Asset_ServicePerimeter) isAsset_AccessContextPolicy() {}
// Constraint contains the configuration for a constraint.
type Constraint struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ApiVersion is the version of the API.
ApiVersion string `protobuf:"bytes,1,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"`
// Kind is the kind of object.
Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
// Metadata contains the user-provided constraint metadata.
Metadata *structpb.Value `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"`
// Spec is the object spec.
Spec *structpb.Value `protobuf:"bytes,6,opt,name=spec,proto3" json:"spec,omitempty"`
}
func (x *Constraint) Reset() {
*x = Constraint{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Constraint) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Constraint) ProtoMessage() {}
func (x *Constraint) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 Constraint.ProtoReflect.Descriptor instead.
func (*Constraint) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{1}
}
func (x *Constraint) GetApiVersion() string {
if x != nil {
return x.ApiVersion
}
return ""
}
func (x *Constraint) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *Constraint) GetMetadata() *structpb.Value {
if x != nil {
return x.Metadata
}
return nil
}
func (x *Constraint) GetSpec() *structpb.Value {
if x != nil {
return x.Spec
}
return nil
}
// Violation contains the relevant information to explain how a constraint is violated.
type Violation struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the constraint that's violated.
Constraint string `protobuf:"bytes,1,opt,name=constraint,proto3" json:"constraint,omitempty"`
// GCP resource name. This is the same name in Asset.
Resource string `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
// Human readable error message.
Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
// Metadata is optional. It contains the constraint-specific information that can potentially be used for remediation.
// Example: In a firewall rule constraint violation, Metadata can contain the open port number.
Metadata *structpb.Value `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
// The full constraint configuration.
ConstraintConfig *Constraint `protobuf:"bytes,5,opt,name=constraint_config,json=constraintConfig,proto3" json:"constraint_config,omitempty"`
// The constraint severity
Severity string `protobuf:"bytes,6,opt,name=severity,proto3" json:"severity,omitempty"`
}
func (x *Violation) Reset() {
*x = Violation{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Violation) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Violation) ProtoMessage() {}
func (x *Violation) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 Violation.ProtoReflect.Descriptor instead.
func (*Violation) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{2}
}
func (x *Violation) GetConstraint() string {
if x != nil {
return x.Constraint
}
return ""
}
func (x *Violation) GetResource() string {
if x != nil {
return x.Resource
}
return ""
}
func (x *Violation) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
func (x *Violation) GetMetadata() *structpb.Value {
if x != nil {
return x.Metadata
}
return nil
}
func (x *Violation) GetConstraintConfig() *Constraint {
if x != nil {
return x.ConstraintConfig
}
return nil
}
func (x *Violation) GetSeverity() string {
if x != nil {
return x.Severity
}
return ""
}
type AddDataRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"`
}
func (x *AddDataRequest) Reset() {
*x = AddDataRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AddDataRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AddDataRequest) ProtoMessage() {}
func (x *AddDataRequest) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 AddDataRequest.ProtoReflect.Descriptor instead.
func (*AddDataRequest) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{3}
}
func (x *AddDataRequest) GetAssets() []*Asset {
if x != nil {
return x.Assets
}
return nil
}
type AddDataResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *AddDataResponse) Reset() {
*x = AddDataResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AddDataResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AddDataResponse) ProtoMessage() {}
func (x *AddDataResponse) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 AddDataResponse.ProtoReflect.Descriptor instead.
func (*AddDataResponse) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{4}
}
type AuditRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *AuditRequest) Reset() {
*x = AuditRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuditRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuditRequest) ProtoMessage() {}
func (x *AuditRequest) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 AuditRequest.ProtoReflect.Descriptor instead.
func (*AuditRequest) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{5}
}
type AuditResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Violations []*Violation `protobuf:"bytes,1,rep,name=violations,proto3" json:"violations,omitempty"`
}
func (x *AuditResponse) Reset() {
*x = AuditResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuditResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuditResponse) ProtoMessage() {}
func (x *AuditResponse) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 AuditResponse.ProtoReflect.Descriptor instead.
func (*AuditResponse) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{6}
}
func (x *AuditResponse) GetViolations() []*Violation {
if x != nil {
return x.Violations
}
return nil
}
type ResetRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ResetRequest) Reset() {
*x = ResetRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ResetRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ResetRequest) ProtoMessage() {}
func (x *ResetRequest) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 ResetRequest.ProtoReflect.Descriptor instead.
func (*ResetRequest) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{7}
}
type ResetResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *ResetResponse) Reset() {
*x = ResetResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ResetResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ResetResponse) ProtoMessage() {}
func (x *ResetResponse) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 ResetResponse.ProtoReflect.Descriptor instead.
func (*ResetResponse) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{8}
}
type ReviewRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Assets []*Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets,omitempty"`
}
func (x *ReviewRequest) Reset() {
*x = ReviewRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReviewRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReviewRequest) ProtoMessage() {}
func (x *ReviewRequest) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 ReviewRequest.ProtoReflect.Descriptor instead.
func (*ReviewRequest) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{9}
}
func (x *ReviewRequest) GetAssets() []*Asset {
if x != nil {
return x.Assets
}
return nil
}
type ReviewResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Violations []*Violation `protobuf:"bytes,1,rep,name=violations,proto3" json:"violations,omitempty"`
}
func (x *ReviewResponse) Reset() {
*x = ReviewResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_validator_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReviewResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReviewResponse) ProtoMessage() {}
func (x *ReviewResponse) ProtoReflect() protoreflect.Message {
mi := &file_validator_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 ReviewResponse.ProtoReflect.Descriptor instead.
func (*ReviewResponse) Descriptor() ([]byte, []int) {
return file_validator_proto_rawDescGZIP(), []int{10}
}
func (x *ReviewResponse) GetViolations() []*Violation {
if x != nil {
return x.Violations
}
return nil
}
var File_validator_proto protoreflect.FileDescriptor
var file_validator_proto_rawDesc = []byte{
0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x1a, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x73,
0x73, 0x65, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x72, 0x67, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61,
0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73,
0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3f,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2f,
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x72,
0x67, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x6f, 0x72, 0x67, 0x70, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x05, 0x0a, 0x05, 0x41,
0x73, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65,
0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73,
0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x63, 0x65, 0x73,
0x74, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x72, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3b, 0x0a, 0x08,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x73,
0x73, 0x65, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x69, 0x61, 0x6d,
0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x69, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
0x1c, 0x0a, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03,
0x28, 0x09, 0x52, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x40, 0x0a,
0x0a, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x6f, 0x72, 0x67, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x09, 0x6f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
0x5c, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63,
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31,
0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52,
0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x59, 0x0a,
0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x09, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63,
0x63, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63,
0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x68, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x63, 0x6f, 0x6e, 0x74,
0x65, 0x78, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00,
0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x74,
0x65, 0x72, 0x12, 0x49, 0x0a, 0x0f, 0x76, 0x32, 0x5f, 0x6f, 0x72, 0x67, 0x5f, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6f, 0x72, 0x67, 0x70, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0d,
0x76, 0x32, 0x4f, 0x72, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x42, 0x17, 0x0a,
0x15, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f,
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74,
0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x65,
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a,
0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xf5, 0x01, 0x0a, 0x09, 0x56,
0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x73,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f,
0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32,
0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x12, 0x42, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72,
0x61, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69,
0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69,
0x74, 0x79, 0x22, 0x3a, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x22, 0x11,
0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x22, 0x45, 0x0a, 0x0d, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x6f, 0x72, 0x2e, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x76, 0x69,
0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x65,
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x65,
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x0d, 0x52, 0x65, 0x76,
0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x61, 0x73,
0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73,
0x73, 0x65, 0x74, 0x73, 0x22, 0x46, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x52, 0x0a, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x8c, 0x02, 0x0a,
0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x42, 0x0a, 0x07, 0x41, 0x64,
0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1a, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x64, 0x64,
0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c,
0x0a, 0x05, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, 0x17, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x6f, 0x72, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x18, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x75, 0x64,
0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x05,
0x52, 0x65, 0x73, 0x65, 0x74, 0x12, 0x17, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f,
0x72, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x52, 0x65,
0x76, 0x69, 0x65, 0x77, 0x12, 0x18, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
0x2e, 0x52, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x65,
0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x76,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (
file_validator_proto_rawDescOnce sync.Once
file_validator_proto_rawDescData = file_validator_proto_rawDesc
)
func file_validator_proto_rawDescGZIP() []byte {
file_validator_proto_rawDescOnce.Do(func() {
file_validator_proto_rawDescData = protoimpl.X.CompressGZIP(file_validator_proto_rawDescData)
})
return file_validator_proto_rawDescData
}
var file_validator_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_validator_proto_goTypes = []interface{}{
(*Asset)(nil), // 0: validator.Asset
(*Constraint)(nil), // 1: validator.Constraint
(*Violation)(nil), // 2: validator.Violation
(*AddDataRequest)(nil), // 3: validator.AddDataRequest
(*AddDataResponse)(nil), // 4: validator.AddDataResponse
(*AuditRequest)(nil), // 5: validator.AuditRequest
(*AuditResponse)(nil), // 6: validator.AuditResponse
(*ResetRequest)(nil), // 7: validator.ResetRequest
(*ResetResponse)(nil), // 8: validator.ResetResponse
(*ReviewRequest)(nil), // 9: validator.ReviewRequest
(*ReviewResponse)(nil), // 10: validator.ReviewResponse
(*assetpb.Resource)(nil), // 11: google.cloud.asset.v1.Resource
(*iampb.Policy)(nil), // 12: google.iam.v1.Policy
(*orgpolicypb.Policy)(nil), // 13: google.cloud.orgpolicy.v1.Policy
(*accesscontextmanagerpb.AccessPolicy)(nil), // 14: google.identity.accesscontextmanager.v1.AccessPolicy
(*accesscontextmanagerpb.AccessLevel)(nil), // 15: google.identity.accesscontextmanager.v1.AccessLevel
(*accesscontextmanagerpb.ServicePerimeter)(nil), // 16: google.identity.accesscontextmanager.v1.ServicePerimeter
(*orgpolicypb1.Policy)(nil), // 17: google.cloud.orgpolicy.v2.Policy
(*structpb.Value)(nil), // 18: google.protobuf.Value
}
var file_validator_proto_depIdxs = []int32{
11, // 0: validator.Asset.resource:type_name -> google.cloud.asset.v1.Resource
12, // 1: validator.Asset.iam_policy:type_name -> google.iam.v1.Policy
13, // 2: validator.Asset.org_policy:type_name -> google.cloud.orgpolicy.v1.Policy
14, // 3: validator.Asset.access_policy:type_name -> google.identity.accesscontextmanager.v1.AccessPolicy
15, // 4: validator.Asset.access_level:type_name -> google.identity.accesscontextmanager.v1.AccessLevel
16, // 5: validator.Asset.service_perimeter:type_name -> google.identity.accesscontextmanager.v1.ServicePerimeter
17, // 6: validator.Asset.v2_org_policies:type_name -> google.cloud.orgpolicy.v2.Policy
18, // 7: validator.Constraint.metadata:type_name -> google.protobuf.Value
18, // 8: validator.Constraint.spec:type_name -> google.protobuf.Value
18, // 9: validator.Violation.metadata:type_name -> google.protobuf.Value
1, // 10: validator.Violation.constraint_config:type_name -> validator.Constraint
0, // 11: validator.AddDataRequest.assets:type_name -> validator.Asset
2, // 12: validator.AuditResponse.violations:type_name -> validator.Violation
0, // 13: validator.ReviewRequest.assets:type_name -> validator.Asset
2, // 14: validator.ReviewResponse.violations:type_name -> validator.Violation
3, // 15: validator.Validator.AddData:input_type -> validator.AddDataRequest
5, // 16: validator.Validator.Audit:input_type -> validator.AuditRequest
7, // 17: validator.Validator.Reset:input_type -> validator.ResetRequest
9, // 18: validator.Validator.Review:input_type -> validator.ReviewRequest
4, // 19: validator.Validator.AddData:output_type -> validator.AddDataResponse
6, // 20: validator.Validator.Audit:output_type -> validator.AuditResponse
8, // 21: validator.Validator.Reset:output_type -> validator.ResetResponse
10, // 22: validator.Validator.Review:output_type -> validator.ReviewResponse
19, // [19:23] is the sub-list for method output_type
15, // [15:19] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
}
func init() { file_validator_proto_init() }
func file_validator_proto_init() {
if File_validator_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_validator_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Asset); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Constraint); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Violation); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddDataRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AddDataResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuditRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuditResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResetRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResetResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReviewRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_validator_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReviewResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_validator_proto_msgTypes[0].OneofWrappers = []interface{}{
(*Asset_AccessPolicy)(nil),
(*Asset_AccessLevel)(nil),
(*Asset_ServicePerimeter)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_validator_proto_rawDesc,
NumEnums: 0,
NumMessages: 11,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_validator_proto_goTypes,
DependencyIndexes: file_validator_proto_depIdxs,
MessageInfos: file_validator_proto_msgTypes,
}.Build()
File_validator_proto = out.File
file_validator_proto_rawDesc = nil
file_validator_proto_goTypes = nil
file_validator_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
// ValidatorClient is the client API for Validator service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ValidatorClient interface {
// AddData adds GCP resource metadata to be audited later.
AddData(ctx context.Context, in *AddDataRequest, opts ...grpc.CallOption) (*AddDataResponse, error)
// Audit checks the GCP resource metadata that has been added via AddData to determine if any of the constraint is violated.
Audit(ctx context.Context, in *AuditRequest, opts ...grpc.CallOption) (*AuditResponse, error)
// Reset clears previously added data from the underlying query evaluation engine.
Reset(ctx context.Context, in *ResetRequest, opts ...grpc.CallOption) (*ResetResponse, error)
// Review checks the GCP resources and returns any constraint violations. Note that referential checks are not supported
// with this mode.
Review(ctx context.Context, in *ReviewRequest, opts ...grpc.CallOption) (*ReviewResponse, error)
}
type validatorClient struct {
cc grpc.ClientConnInterface
}
func NewValidatorClient(cc grpc.ClientConnInterface) ValidatorClient {
return &validatorClient{cc}
}
func (c *validatorClient) AddData(ctx context.Context, in *AddDataRequest, opts ...grpc.CallOption) (*AddDataResponse, error) {
out := new(AddDataResponse)
err := c.cc.Invoke(ctx, "/validator.Validator/AddData", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *validatorClient) Audit(ctx context.Context, in *AuditRequest, opts ...grpc.CallOption) (*AuditResponse, error) {
out := new(AuditResponse)
err := c.cc.Invoke(ctx, "/validator.Validator/Audit", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *validatorClient) Reset(ctx context.Context, in *ResetRequest, opts ...grpc.CallOption) (*ResetResponse, error) {
out := new(ResetResponse)
err := c.cc.Invoke(ctx, "/validator.Validator/Reset", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *validatorClient) Review(ctx context.Context, in *ReviewRequest, opts ...grpc.CallOption) (*ReviewResponse, error) {
out := new(ReviewResponse)
err := c.cc.Invoke(ctx, "/validator.Validator/Review", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// ValidatorServer is the server API for Validator service.
type ValidatorServer interface {
// AddData adds GCP resource metadata to be audited later.
AddData(context.Context, *AddDataRequest) (*AddDataResponse, error)
// Audit checks the GCP resource metadata that has been added via AddData to determine if any of the constraint is violated.
Audit(context.Context, *AuditRequest) (*AuditResponse, error)
// Reset clears previously added data from the underlying query evaluation engine.
Reset(context.Context, *ResetRequest) (*ResetResponse, error)
// Review checks the GCP resources and returns any constraint violations. Note that referential checks are not supported
// with this mode.
Review(context.Context, *ReviewRequest) (*ReviewResponse, error)
}
// UnimplementedValidatorServer can be embedded to have forward compatible implementations.
type UnimplementedValidatorServer struct {
}
func (*UnimplementedValidatorServer) AddData(context.Context, *AddDataRequest) (*AddDataResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AddData not implemented")
}
func (*UnimplementedValidatorServer) Audit(context.Context, *AuditRequest) (*AuditResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Audit not implemented")
}
func (*UnimplementedValidatorServer) Reset(context.Context, *ResetRequest) (*ResetResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Reset not implemented")
}
func (*UnimplementedValidatorServer) Review(context.Context, *ReviewRequest) (*ReviewResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Review not implemented")
}
func RegisterValidatorServer(s *grpc.Server, srv ValidatorServer) {
s.RegisterService(&_Validator_serviceDesc, srv)
}
func _Validator_AddData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AddDataRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ValidatorServer).AddData(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/validator.Validator/AddData",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ValidatorServer).AddData(ctx, req.(*AddDataRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Validator_Audit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AuditRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ValidatorServer).Audit(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/validator.Validator/Audit",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ValidatorServer).Audit(ctx, req.(*AuditRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Validator_Reset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ResetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ValidatorServer).Reset(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/validator.Validator/Reset",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ValidatorServer).Reset(ctx, req.(*ResetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Validator_Review_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ReviewRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ValidatorServer).Review(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/validator.Validator/Review",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ValidatorServer).Review(ctx, req.(*ReviewRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Validator_serviceDesc = grpc.ServiceDesc{
ServiceName: "validator.Validator",
HandlerType: (*ValidatorServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "AddData",
Handler: _Validator_AddData_Handler,
},
{
MethodName: "Audit",
Handler: _Validator_Audit_Handler,
},
{
MethodName: "Reset",
Handler: _Validator_Reset_Handler,
},
{
MethodName: "Review",
Handler: _Validator_Review_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "validator.proto",
}