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", }