xref: /aosp_15_r20/external/googleapis/google/api/service.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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