1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.api; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/descriptor.proto"; 20*d5c09012SAndroid Build Coastguard Worker 21*d5c09012SAndroid Build Coastguard Workeroption cc_enable_arenas = true; 22*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; 23*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 24*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "PolicyProto"; 25*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api"; 26*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GAPI"; 27*d5c09012SAndroid Build Coastguard Worker 28*d5c09012SAndroid Build Coastguard Worker// Provides `google.api.field_policy` annotation at proto fields. 29*d5c09012SAndroid Build Coastguard Workerextend google.protobuf.FieldOptions { 30*d5c09012SAndroid Build Coastguard Worker // See [FieldPolicy][]. 31*d5c09012SAndroid Build Coastguard Worker FieldPolicy field_policy = 158361448; 32*d5c09012SAndroid Build Coastguard Worker} 33*d5c09012SAndroid Build Coastguard Worker 34*d5c09012SAndroid Build Coastguard Worker// Provides `google.api.method_policy` annotation at proto methods. 35*d5c09012SAndroid Build Coastguard Workerextend google.protobuf.MethodOptions { 36*d5c09012SAndroid Build Coastguard Worker // See [MethodPolicy][]. 37*d5c09012SAndroid Build Coastguard Worker MethodPolicy method_policy = 161893301; 38*d5c09012SAndroid Build Coastguard Worker} 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker// Google API Policy Annotation 41*d5c09012SAndroid Build Coastguard Worker// 42*d5c09012SAndroid Build Coastguard Worker// This message defines a simple API policy annotation that can be used to 43*d5c09012SAndroid Build Coastguard Worker// annotate API request and response message fields with applicable policies. 44*d5c09012SAndroid Build Coastguard Worker// One field may have multiple applicable policies that must all be satisfied 45*d5c09012SAndroid Build Coastguard Worker// before a request can be processed. This policy annotation is used to 46*d5c09012SAndroid Build Coastguard Worker// generate the overall policy that will be used for automatic runtime 47*d5c09012SAndroid Build Coastguard Worker// policy enforcement and documentation generation. 48*d5c09012SAndroid Build Coastguard Workermessage FieldPolicy { 49*d5c09012SAndroid Build Coastguard Worker // Selects one or more request or response message fields to apply this 50*d5c09012SAndroid Build Coastguard Worker // `FieldPolicy`. 51*d5c09012SAndroid Build Coastguard Worker // 52*d5c09012SAndroid Build Coastguard Worker // When a `FieldPolicy` is used in proto annotation, the selector must 53*d5c09012SAndroid Build Coastguard Worker // be left as empty. The service config generator will automatically fill 54*d5c09012SAndroid Build Coastguard Worker // the correct value. 55*d5c09012SAndroid Build Coastguard Worker // 56*d5c09012SAndroid Build Coastguard Worker // When a `FieldPolicy` is used in service config, the selector must be a 57*d5c09012SAndroid Build Coastguard Worker // comma-separated string with valid request or response field paths, 58*d5c09012SAndroid Build Coastguard Worker // such as "foo.bar" or "foo.bar,foo.baz". 59*d5c09012SAndroid Build Coastguard Worker string selector = 1; 60*d5c09012SAndroid Build Coastguard Worker 61*d5c09012SAndroid Build Coastguard Worker // Specifies the required permission(s) for the resource referred to by the 62*d5c09012SAndroid Build Coastguard Worker // field. It requires the field contains a valid resource reference, and 63*d5c09012SAndroid Build Coastguard Worker // the request must pass the permission checks to proceed. For example, 64*d5c09012SAndroid Build Coastguard Worker // "resourcemanager.projects.get". 65*d5c09012SAndroid Build Coastguard Worker string resource_permission = 2; 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // Specifies the resource type for the resource referred to by the field. 68*d5c09012SAndroid Build Coastguard Worker string resource_type = 3; 69*d5c09012SAndroid Build Coastguard Worker} 70*d5c09012SAndroid Build Coastguard Worker 71*d5c09012SAndroid Build Coastguard Worker// Defines policies applying to an RPC method. 72*d5c09012SAndroid Build Coastguard Workermessage MethodPolicy { 73*d5c09012SAndroid Build Coastguard Worker // Selects a method to which these policies should be enforced, for example, 74*d5c09012SAndroid Build Coastguard Worker // "google.pubsub.v1.Subscriber.CreateSubscription". 75*d5c09012SAndroid Build Coastguard Worker // 76*d5c09012SAndroid Build Coastguard Worker // Refer to [selector][google.api.DocumentationRule.selector] for syntax 77*d5c09012SAndroid Build Coastguard Worker // details. 78*d5c09012SAndroid Build Coastguard Worker // 79*d5c09012SAndroid Build Coastguard Worker // NOTE: This field must not be set in the proto annotation. It will be 80*d5c09012SAndroid Build Coastguard Worker // automatically filled by the service config compiler . 81*d5c09012SAndroid Build Coastguard Worker string selector = 9; 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker // Policies that are applicable to the request message. 84*d5c09012SAndroid Build Coastguard Worker repeated FieldPolicy request_policies = 2; 85*d5c09012SAndroid Build Coastguard Worker} 86