| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | // Copyright 2024 Google LLC//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at////     http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.syntax = "proto3";package google.api;import "google/protobuf/descriptor.proto";option cc_enable_arenas = true;option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";option java_multiple_files = true;option java_outer_classname = "PolicyProto";option java_package = "com.google.api";option objc_class_prefix = "GAPI";// Provides `google.api.field_policy` annotation at proto fields.extend google.protobuf.FieldOptions {  // See [FieldPolicy][].  FieldPolicy field_policy = 158361448;}// Provides `google.api.method_policy` annotation at proto methods.extend google.protobuf.MethodOptions {  // See [MethodPolicy][].  MethodPolicy method_policy = 161893301;}// Google API Policy Annotation//// This message defines a simple API policy annotation that can be used to// annotate API request and response message fields with applicable policies.// One field may have multiple applicable policies that must all be satisfied// before a request can be processed. This policy annotation is used to// generate the overall policy that will be used for automatic runtime// policy enforcement and documentation generation.message FieldPolicy {  // Selects one or more request or response message fields to apply this  // `FieldPolicy`.  //  // When a `FieldPolicy` is used in proto annotation, the selector must  // be left as empty. The service config generator will automatically fill  // the correct value.  //  // When a `FieldPolicy` is used in service config, the selector must be a  // comma-separated string with valid request or response field paths,  // such as "foo.bar" or "foo.bar,foo.baz".  string selector = 1;  // Specifies the required permission(s) for the resource referred to by the  // field. It requires the field contains a valid resource reference, and  // the request must pass the permission checks to proceed. For example,  // "resourcemanager.projects.get".  string resource_permission = 2;  // Specifies the resource type for the resource referred to by the field.  string resource_type = 3;}// Defines policies applying to an RPC method.message MethodPolicy {  // Selects a method to which these policies should be enforced, for example,  // "google.pubsub.v1.Subscriber.CreateSubscription".  //  // Refer to [selector][google.api.DocumentationRule.selector] for syntax  // details.  //  // NOTE: This field must not be set in the proto annotation. It will be  // automatically filled by the service config compiler .  string selector = 9;  // Policies that are applicable to the request message.  repeated FieldPolicy request_policies = 2;}
 |