1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.api; 18 19import "google/api/auth.proto"; 20import "google/api/backend.proto"; 21import "google/api/billing.proto"; 22import "google/api/client.proto"; 23import "google/api/context.proto"; 24import "google/api/control.proto"; 25import "google/api/documentation.proto"; 26import "google/api/endpoint.proto"; 27import "google/api/http.proto"; 28import "google/api/log.proto"; 29import "google/api/logging.proto"; 30import "google/api/metric.proto"; 31import "google/api/monitored_resource.proto"; 32import "google/api/monitoring.proto"; 33import "google/api/quota.proto"; 34import "google/api/source_info.proto"; 35import "google/api/system_parameter.proto"; 36import "google/api/usage.proto"; 37import "google/protobuf/api.proto"; 38import "google/protobuf/type.proto"; 39import "google/protobuf/wrappers.proto"; 40 41option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; 42option java_multiple_files = true; 43option java_outer_classname = "ServiceProto"; 44option java_package = "com.google.api"; 45option objc_class_prefix = "GAPI"; 46 47// `Service` is the root object of Google API service configuration (service 48// config). It describes the basic information about a logical service, 49// such as the service name and the user-facing title, and delegates other 50// aspects to sub-sections. Each sub-section is either a proto message or a 51// repeated proto message that configures a specific aspect, such as auth. 52// For more information, see each proto message definition. 53// 54// Example: 55// 56// type: google.api.Service 57// name: calendar.googleapis.com 58// title: Google Calendar API 59// apis: 60// - name: google.calendar.v3.Calendar 61// 62// visibility: 63// rules: 64// - selector: "google.calendar.v3.*" 65// restriction: PREVIEW 66// backend: 67// rules: 68// - selector: "google.calendar.v3.*" 69// address: calendar.example.com 70// 71// authentication: 72// providers: 73// - id: google_calendar_auth 74// jwks_uri: https://www.googleapis.com/oauth2/v1/certs 75// issuer: https://securetoken.google.com 76// rules: 77// - selector: "*" 78// requirements: 79// provider_id: google_calendar_auth 80message Service { 81 // The service name, which is a DNS-like logical identifier for the 82 // service, such as `calendar.googleapis.com`. The service name 83 // typically goes through DNS verification to make sure the owner 84 // of the service also owns the DNS name. 85 string name = 1; 86 87 // The product title for this service, it is the name displayed in Google 88 // Cloud Console. 89 string title = 2; 90 91 // The Google project that owns this service. 92 string producer_project_id = 22; 93 94 // A unique ID for a specific instance of this message, typically assigned 95 // by the client for tracking purpose. Must be no longer than 63 characters 96 // and only lower case letters, digits, '.', '_' and '-' are allowed. If 97 // empty, the server may choose to generate one instead. 98 string id = 33; 99 100 // A list of API interfaces exported by this service. Only the `name` field 101 // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by 102 // the configuration author, as the remaining fields will be derived from the 103 // IDL during the normalization process. It is an error to specify an API 104 // interface here which cannot be resolved against the associated IDL files. 105 repeated google.protobuf.Api apis = 3; 106 107 // A list of all proto message types included in this API service. 108 // Types referenced directly or indirectly by the `apis` are automatically 109 // included. Messages which are not referenced but shall be included, such as 110 // types used by the `google.protobuf.Any` type, should be listed here by 111 // name by the configuration author. Example: 112 // 113 // types: 114 // - name: google.protobuf.Int32 115 repeated google.protobuf.Type types = 4; 116 117 // A list of all enum types included in this API service. Enums referenced 118 // directly or indirectly by the `apis` are automatically included. Enums 119 // which are not referenced but shall be included should be listed here by 120 // name by the configuration author. Example: 121 // 122 // enums: 123 // - name: google.someapi.v1.SomeEnum 124 repeated google.protobuf.Enum enums = 5; 125 126 // Additional API documentation. 127 Documentation documentation = 6; 128 129 // API backend configuration. 130 Backend backend = 8; 131 132 // HTTP configuration. 133 Http http = 9; 134 135 // Quota configuration. 136 Quota quota = 10; 137 138 // Auth configuration. 139 Authentication authentication = 11; 140 141 // Context configuration. 142 Context context = 12; 143 144 // Configuration controlling usage of this service. 145 Usage usage = 15; 146 147 // Configuration for network endpoints. If this is empty, then an endpoint 148 // with the same name as the service is automatically generated to service all 149 // defined APIs. 150 repeated Endpoint endpoints = 18; 151 152 // Configuration for the service control plane. 153 Control control = 21; 154 155 // Defines the logs used by this service. 156 repeated LogDescriptor logs = 23; 157 158 // Defines the metrics used by this service. 159 repeated MetricDescriptor metrics = 24; 160 161 // Defines the monitored resources used by this service. This is required 162 // by the [Service.monitoring][google.api.Service.monitoring] and 163 // [Service.logging][google.api.Service.logging] configurations. 164 repeated MonitoredResourceDescriptor monitored_resources = 25; 165 166 // Billing configuration. 167 Billing billing = 26; 168 169 // Logging configuration. 170 Logging logging = 27; 171 172 // Monitoring configuration. 173 Monitoring monitoring = 28; 174 175 // System parameter configuration. 176 SystemParameters system_parameters = 29; 177 178 // Output only. The source information for this configuration if available. 179 SourceInfo source_info = 37; 180 181 // Settings for [Google Cloud Client 182 // libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) 183 // generated from APIs defined as protocol buffers. 184 Publishing publishing = 45; 185 186 // Obsolete. Do not use. 187 // 188 // This field has no semantic meaning. The service config compiler always 189 // sets this field to `3`. 190 google.protobuf.UInt32Value config_version = 20; 191} 192