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