1// Copyright 2019 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// 15 16syntax = "proto3"; 17 18package google.api; 19 20import "google/api/auth.proto"; 21import "google/api/backend.proto"; 22import "google/api/billing.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/label.proto"; 29import "google/api/log.proto"; 30import "google/api/logging.proto"; 31import "google/api/metric.proto"; 32import "google/api/monitored_resource.proto"; 33import "google/api/monitoring.proto"; 34import "google/api/quota.proto"; 35import "google/api/resource.proto"; 36import "google/api/source_info.proto"; 37import "google/api/system_parameter.proto"; 38import "google/api/usage.proto"; 39import "google/protobuf/any.proto"; 40import "google/protobuf/api.proto"; 41import "google/protobuf/type.proto"; 42import "google/protobuf/wrappers.proto"; 43 44option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; 45option java_multiple_files = true; 46option java_outer_classname = "ServiceProto"; 47option java_package = "com.google.api"; 48option objc_class_prefix = "GAPI"; 49 50// `Service` is the root object of Google service configuration schema. It 51// describes basic information about a service, such as the name and the 52// title, and delegates other aspects to sub-sections. Each sub-section is 53// either a proto message or a repeated proto message that configures a 54// specific aspect, such as auth. See each proto message definition for details. 55// 56// Example: 57// 58// type: google.api.Service 59// config_version: 3 60// name: calendar.googleapis.com 61// title: Google Calendar API 62// apis: 63// - name: google.calendar.v3.Calendar 64// authentication: 65// providers: 66// - id: google_calendar_auth 67// jwks_uri: https://www.googleapis.com/oauth2/v1/certs 68// issuer: https://securetoken.google.com 69// rules: 70// - selector: "*" 71// requirements: 72// provider_id: google_calendar_auth 73message Service { 74 // The semantic version of the service configuration. The config version 75 // affects the interpretation of the service configuration. For example, 76 // certain features are enabled by default for certain config versions. 77 // The latest config version is `3`. 78 google.protobuf.UInt32Value config_version = 20; 79 80 // The service name, which is a DNS-like logical identifier for the 81 // service, such as `calendar.googleapis.com`. The service name 82 // typically goes through DNS verification to make sure the owner 83 // of the service also owns the DNS name. 84 string name = 1; 85 86 // A unique ID for a specific instance of this message, typically assigned 87 // by the client for tracking purpose. If empty, the server may choose to 88 // generate one instead. Must be no longer than 60 characters. 89 string id = 33; 90 91 // The product title for this service. 92 string title = 2; 93 94 // The Google project that owns this service. 95 string producer_project_id = 22; 96 97 // A list of API interfaces exported by this service. Only the `name` field 98 // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration 99 // author, as the remaining fields will be derived from the IDL during the 100 // normalization process. It is an error to specify an API interface here 101 // which cannot be resolved against the associated IDL files. 102 repeated google.protobuf.Api apis = 3; 103 104 // A list of all proto message types included in this API service. 105 // Types referenced directly or indirectly by the `apis` are 106 // automatically included. Messages which are not referenced but 107 // shall be included, such as types used by the `google.protobuf.Any` type, 108 // should be listed here by name. Example: 109 // 110 // types: 111 // - name: google.protobuf.Int32 112 repeated google.protobuf.Type types = 4; 113 114 // A list of all enum types included in this API service. Enums 115 // referenced directly or indirectly by the `apis` are automatically 116 // included. Enums which are not referenced but shall be included 117 // should be listed here by name. Example: 118 // 119 // enums: 120 // - name: google.someapi.v1.SomeEnum 121 repeated google.protobuf.Enum enums = 5; 122 123 // Additional API documentation. 124 Documentation documentation = 6; 125 126 // API backend configuration. 127 Backend backend = 8; 128 129 // HTTP configuration. 130 Http http = 9; 131 132 // Quota configuration. 133 Quota quota = 10; 134 135 // Auth configuration. 136 Authentication authentication = 11; 137 138 // Context configuration. 139 Context context = 12; 140 141 // Configuration controlling usage of this service. 142 Usage usage = 15; 143 144 // Configuration for network endpoints. If this is empty, then an endpoint 145 // with the same name as the service is automatically generated to service all 146 // defined APIs. 147 repeated Endpoint endpoints = 18; 148 149 // Configuration for the service control plane. 150 Control control = 21; 151 152 // Defines the logs used by this service. 153 repeated LogDescriptor logs = 23; 154 155 // Defines the metrics used by this service. 156 repeated MetricDescriptor metrics = 24; 157 158 // Defines the monitored resources used by this service. This is required 159 // by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations. 160 repeated MonitoredResourceDescriptor monitored_resources = 25; 161 162 // Billing configuration. 163 Billing billing = 26; 164 165 // Logging configuration. 166 Logging logging = 27; 167 168 // Monitoring configuration. 169 Monitoring monitoring = 28; 170 171 // System parameter configuration. 172 SystemParameters system_parameters = 29; 173 174 // Output only. The source information for this configuration if available. 175 SourceInfo source_info = 37; 176} 177