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 Workeroption go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; 20*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 21*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ContextProto"; 22*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api"; 23*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GAPI"; 24*d5c09012SAndroid Build Coastguard Worker 25*d5c09012SAndroid Build Coastguard Worker// `Context` defines which contexts an API requests. 26*d5c09012SAndroid Build Coastguard Worker// 27*d5c09012SAndroid Build Coastguard Worker// Example: 28*d5c09012SAndroid Build Coastguard Worker// 29*d5c09012SAndroid Build Coastguard Worker// context: 30*d5c09012SAndroid Build Coastguard Worker// rules: 31*d5c09012SAndroid Build Coastguard Worker// - selector: "*" 32*d5c09012SAndroid Build Coastguard Worker// requested: 33*d5c09012SAndroid Build Coastguard Worker// - google.rpc.context.ProjectContext 34*d5c09012SAndroid Build Coastguard Worker// - google.rpc.context.OriginContext 35*d5c09012SAndroid Build Coastguard Worker// 36*d5c09012SAndroid Build Coastguard Worker// The above specifies that all methods in the API request 37*d5c09012SAndroid Build Coastguard Worker// `google.rpc.context.ProjectContext` and 38*d5c09012SAndroid Build Coastguard Worker// `google.rpc.context.OriginContext`. 39*d5c09012SAndroid Build Coastguard Worker// 40*d5c09012SAndroid Build Coastguard Worker// Available context types are defined in package 41*d5c09012SAndroid Build Coastguard Worker// `google.rpc.context`. 42*d5c09012SAndroid Build Coastguard Worker// 43*d5c09012SAndroid Build Coastguard Worker// This also provides mechanism to allowlist any protobuf message extension that 44*d5c09012SAndroid Build Coastguard Worker// can be sent in grpc metadata using “x-goog-ext-<extension_id>-bin” and 45*d5c09012SAndroid Build Coastguard Worker// “x-goog-ext-<extension_id>-jspb” format. For example, list any service 46*d5c09012SAndroid Build Coastguard Worker// specific protobuf types that can appear in grpc metadata as follows in your 47*d5c09012SAndroid Build Coastguard Worker// yaml file: 48*d5c09012SAndroid Build Coastguard Worker// 49*d5c09012SAndroid Build Coastguard Worker// Example: 50*d5c09012SAndroid Build Coastguard Worker// 51*d5c09012SAndroid Build Coastguard Worker// context: 52*d5c09012SAndroid Build Coastguard Worker// rules: 53*d5c09012SAndroid Build Coastguard Worker// - selector: "google.example.library.v1.LibraryService.CreateBook" 54*d5c09012SAndroid Build Coastguard Worker// allowed_request_extensions: 55*d5c09012SAndroid Build Coastguard Worker// - google.foo.v1.NewExtension 56*d5c09012SAndroid Build Coastguard Worker// allowed_response_extensions: 57*d5c09012SAndroid Build Coastguard Worker// - google.foo.v1.NewExtension 58*d5c09012SAndroid Build Coastguard Worker// 59*d5c09012SAndroid Build Coastguard Worker// You can also specify extension ID instead of fully qualified extension name 60*d5c09012SAndroid Build Coastguard Worker// here. 61*d5c09012SAndroid Build Coastguard Workermessage Context { 62*d5c09012SAndroid Build Coastguard Worker // A list of RPC context rules that apply to individual API methods. 63*d5c09012SAndroid Build Coastguard Worker // 64*d5c09012SAndroid Build Coastguard Worker // **NOTE:** All service configuration rules follow "last one wins" order. 65*d5c09012SAndroid Build Coastguard Worker repeated ContextRule rules = 1; 66*d5c09012SAndroid Build Coastguard Worker} 67*d5c09012SAndroid Build Coastguard Worker 68*d5c09012SAndroid Build Coastguard Worker// A context rule provides information about the context for an individual API 69*d5c09012SAndroid Build Coastguard Worker// element. 70*d5c09012SAndroid Build Coastguard Workermessage ContextRule { 71*d5c09012SAndroid Build Coastguard Worker // Selects the methods to which this rule applies. 72*d5c09012SAndroid Build Coastguard Worker // 73*d5c09012SAndroid Build Coastguard Worker // Refer to [selector][google.api.DocumentationRule.selector] for syntax 74*d5c09012SAndroid Build Coastguard Worker // details. 75*d5c09012SAndroid Build Coastguard Worker string selector = 1; 76*d5c09012SAndroid Build Coastguard Worker 77*d5c09012SAndroid Build Coastguard Worker // A list of full type names of requested contexts. 78*d5c09012SAndroid Build Coastguard Worker repeated string requested = 2; 79*d5c09012SAndroid Build Coastguard Worker 80*d5c09012SAndroid Build Coastguard Worker // A list of full type names of provided contexts. 81*d5c09012SAndroid Build Coastguard Worker repeated string provided = 3; 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker // A list of full type names or extension IDs of extensions allowed in grpc 84*d5c09012SAndroid Build Coastguard Worker // side channel from client to backend. 85*d5c09012SAndroid Build Coastguard Worker repeated string allowed_request_extensions = 4; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // A list of full type names or extension IDs of extensions allowed in grpc 88*d5c09012SAndroid Build Coastguard Worker // side channel from backend to client. 89*d5c09012SAndroid Build Coastguard Worker repeated string allowed_response_extensions = 5; 90*d5c09012SAndroid Build Coastguard Worker} 91