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 = "UsageProto"; 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// Configuration controlling usage of a service. 26*d5c09012SAndroid Build Coastguard Workermessage Usage { 27*d5c09012SAndroid Build Coastguard Worker // Requirements that must be satisfied before a consumer project can use the 28*d5c09012SAndroid Build Coastguard Worker // service. Each requirement is of the form <service.name>/<requirement-id>; 29*d5c09012SAndroid Build Coastguard Worker // for example 'serviceusage.googleapis.com/billing-enabled'. 30*d5c09012SAndroid Build Coastguard Worker // 31*d5c09012SAndroid Build Coastguard Worker // For Google APIs, a Terms of Service requirement must be included here. 32*d5c09012SAndroid Build Coastguard Worker // Google Cloud APIs must include "serviceusage.googleapis.com/tos/cloud". 33*d5c09012SAndroid Build Coastguard Worker // Other Google APIs should include 34*d5c09012SAndroid Build Coastguard Worker // "serviceusage.googleapis.com/tos/universal". Additional ToS can be 35*d5c09012SAndroid Build Coastguard Worker // included based on the business needs. 36*d5c09012SAndroid Build Coastguard Worker repeated string requirements = 1; 37*d5c09012SAndroid Build Coastguard Worker 38*d5c09012SAndroid Build Coastguard Worker // A list of usage rules that apply to individual API methods. 39*d5c09012SAndroid Build Coastguard Worker // 40*d5c09012SAndroid Build Coastguard Worker // **NOTE:** All service configuration rules follow "last one wins" order. 41*d5c09012SAndroid Build Coastguard Worker repeated UsageRule rules = 6; 42*d5c09012SAndroid Build Coastguard Worker 43*d5c09012SAndroid Build Coastguard Worker // The full resource name of a channel used for sending notifications to the 44*d5c09012SAndroid Build Coastguard Worker // service producer. 45*d5c09012SAndroid Build Coastguard Worker // 46*d5c09012SAndroid Build Coastguard Worker // Google Service Management currently only supports 47*d5c09012SAndroid Build Coastguard Worker // [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification 48*d5c09012SAndroid Build Coastguard Worker // channel. To use Google Cloud Pub/Sub as the channel, this must be the name 49*d5c09012SAndroid Build Coastguard Worker // of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format 50*d5c09012SAndroid Build Coastguard Worker // documented in https://cloud.google.com/pubsub/docs/overview. 51*d5c09012SAndroid Build Coastguard Worker string producer_notification_channel = 7; 52*d5c09012SAndroid Build Coastguard Worker} 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker// Usage configuration rules for the service. 55*d5c09012SAndroid Build Coastguard Worker// 56*d5c09012SAndroid Build Coastguard Worker// NOTE: Under development. 57*d5c09012SAndroid Build Coastguard Worker// 58*d5c09012SAndroid Build Coastguard Worker// 59*d5c09012SAndroid Build Coastguard Worker// Use this rule to configure unregistered calls for the service. Unregistered 60*d5c09012SAndroid Build Coastguard Worker// calls are calls that do not contain consumer project identity. 61*d5c09012SAndroid Build Coastguard Worker// (Example: calls that do not contain an API key). 62*d5c09012SAndroid Build Coastguard Worker// By default, API methods do not allow unregistered calls, and each method call 63*d5c09012SAndroid Build Coastguard Worker// must be identified by a consumer project identity. Use this rule to 64*d5c09012SAndroid Build Coastguard Worker// allow/disallow unregistered calls. 65*d5c09012SAndroid Build Coastguard Worker// 66*d5c09012SAndroid Build Coastguard Worker// Example of an API that wants to allow unregistered calls for entire service. 67*d5c09012SAndroid Build Coastguard Worker// 68*d5c09012SAndroid Build Coastguard Worker// usage: 69*d5c09012SAndroid Build Coastguard Worker// rules: 70*d5c09012SAndroid Build Coastguard Worker// - selector: "*" 71*d5c09012SAndroid Build Coastguard Worker// allow_unregistered_calls: true 72*d5c09012SAndroid Build Coastguard Worker// 73*d5c09012SAndroid Build Coastguard Worker// Example of a method that wants to allow unregistered calls. 74*d5c09012SAndroid Build Coastguard Worker// 75*d5c09012SAndroid Build Coastguard Worker// usage: 76*d5c09012SAndroid Build Coastguard Worker// rules: 77*d5c09012SAndroid Build Coastguard Worker// - selector: "google.example.library.v1.LibraryService.CreateBook" 78*d5c09012SAndroid Build Coastguard Worker// allow_unregistered_calls: true 79*d5c09012SAndroid Build Coastguard Workermessage UsageRule { 80*d5c09012SAndroid Build Coastguard Worker // Selects the methods to which this rule applies. Use '*' to indicate all 81*d5c09012SAndroid Build Coastguard Worker // methods in all APIs. 82*d5c09012SAndroid Build Coastguard Worker // 83*d5c09012SAndroid Build Coastguard Worker // Refer to [selector][google.api.DocumentationRule.selector] for syntax 84*d5c09012SAndroid Build Coastguard Worker // details. 85*d5c09012SAndroid Build Coastguard Worker string selector = 1; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // If true, the selected method allows unregistered calls, e.g. calls 88*d5c09012SAndroid Build Coastguard Worker // that don't identify any user or application. 89*d5c09012SAndroid Build Coastguard Worker bool allow_unregistered_calls = 2; 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker // If true, the selected method should skip service control and the control 92*d5c09012SAndroid Build Coastguard Worker // plane features, such as quota and billing, will not be available. 93*d5c09012SAndroid Build Coastguard Worker // This flag is used by Google Cloud Endpoints to bypass checks for internal 94*d5c09012SAndroid Build Coastguard Worker // methods, such as service health check methods. 95*d5c09012SAndroid Build Coastguard Worker bool skip_service_control = 3; 96*d5c09012SAndroid Build Coastguard Worker} 97