blob: 2eedcf0ff45ba4f9ac672998aa06c9c2af0aefd1 [file] [log] [blame]
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001<html><body>
2<style>
3
4body, h1, h2, h3, div, span, p, pre, a {
5 margin: 0;
6 padding: 0;
7 border: 0;
8 font-weight: inherit;
9 font-style: inherit;
10 font-size: 100%;
11 font-family: inherit;
12 vertical-align: baseline;
13}
14
15body {
16 font-size: 13px;
17 padding: 1em;
18}
19
20h1 {
21 font-size: 26px;
22 margin-bottom: 1em;
23}
24
25h2 {
26 font-size: 24px;
27 margin-bottom: 1em;
28}
29
30h3 {
31 font-size: 20px;
32 margin-bottom: 1em;
33 margin-top: 1em;
34}
35
36pre, code {
37 line-height: 1.5;
38 font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
39}
40
41pre {
42 margin-top: 0.5em;
43}
44
45h1, h2, h3, p {
46 font-family: Arial, sans serif;
47}
48
49h1, h2, h3 {
50 border-bottom: solid #CCC 1px;
51}
52
53.toc_element {
54 margin-top: 0.5em;
55}
56
57.firstline {
58 margin-left: 2 em;
59}
60
61.method {
62 margin-top: 1em;
63 border: solid 1px #CCC;
64 padding: 1em;
65 background: #EEE;
66}
67
68.details {
69 font-weight: bold;
70 font-size: 14px;
71}
72
73</style>
74
Bu Sun Kim715bd7f2019-06-14 16:50:42 -070075<h1><a href="servicemanagement_v1.html">Service Management API</a> . <a href="servicemanagement_v1.services.html">services</a> . <a href="servicemanagement_v1.services.configs.html">configs</a></h1>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070076<h2>Instance Methods</h2>
77<p class="toc_element">
Dan O'Mearadd494642020-05-01 07:42:23 -070078 <code><a href="#create">create(serviceName, body=None, x__xgafv=None)</a></code></p>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070079<p class="firstline">Creates a new service configuration (version) for a managed service.</p>
80<p class="toc_element">
Thomas Coffee2f245372017-03-27 10:39:26 -070081 <code><a href="#get">get(serviceName, configId, x__xgafv=None, view=None)</a></code></p>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070082<p class="firstline">Gets a service configuration (version) for a managed service.</p>
83<p class="toc_element">
Thomas Coffee2f245372017-03-27 10:39:26 -070084 <code><a href="#list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070085<p class="firstline">Lists the history of the service configuration for a managed service,</p>
86<p class="toc_element">
87 <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
88<p class="firstline">Retrieves the next page of results.</p>
89<p class="toc_element">
Dan O'Mearadd494642020-05-01 07:42:23 -070090 <code><a href="#submit">submit(serviceName, body=None, x__xgafv=None)</a></code></p>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070091<p class="firstline">Creates a new service configuration (version) for a managed service based</p>
92<h3>Method Details</h3>
93<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -070094 <code class="details" id="create">create(serviceName, body=None, x__xgafv=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -070095 <pre>Creates a new service configuration (version) for a managed service.
96This method only stores the service configuration. To roll out the service
97configuration to backend systems please call
98CreateServiceRollout.
99
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700100Only the 100 most recent service configurations and ones referenced by
101existing rollouts are kept for each service. The rest will be deleted
102eventually.
103
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700104Args:
Dan O'Mearadd494642020-05-01 07:42:23 -0700105 serviceName: string, Required. The name of the service. See the [overview](/service-management/overview)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700106for naming requirements. For example: `example.googleapis.com`. (required)
Dan O'Mearadd494642020-05-01 07:42:23 -0700107 body: object, The request body.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700108 The object takes the form of:
109
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700110{ # `Service` is the root object of Google service configuration schema. It
111 # describes basic information about a service, such as the name and the
112 # title, and delegates other aspects to sub-sections. Each sub-section is
113 # either a proto message or a repeated proto message that configures a
114 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700115 #
116 # Example:
117 #
118 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700119 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700120 # name: calendar.googleapis.com
121 # title: Google Calendar API
122 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700123 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800124 # authentication:
125 # providers:
126 # - id: google_calendar_auth
127 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
128 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700129 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800130 # - selector: "*"
131 # requirements:
132 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700133 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
134 # service controller handles features like abuse, quota, billing, logging,
135 # monitoring, etc.
136 "environment": "A String", # The service control environment to use. If empty, no control plane
137 # feature (like quota and billing) will be enabled.
138 },
139 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
140 # by the Service.monitoring and Service.logging configurations.
141 { # An object that describes the schema of a MonitoredResource object using a
142 # type name and a set of labels. For example, the monitored resource
143 # descriptor for Google Compute Engine VM instances has a type of
144 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
145 # `"zone"` to identify particular VM instances.
146 #
147 # Different APIs can support different monitored resource types. APIs generally
148 # provide a `list` method that returns the monitored resource descriptors used
149 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -0700150 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
151 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
152 # without any article or other determiners. For example,
153 # `"Google Cloud SQL Database"`.
Dan O'Mearadd494642020-05-01 07:42:23 -0700154 "description": "A String", # Optional. A detailed description of the monitored resource type that might
155 # be used in documentation.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700156 "labels": [ # Required. A set of labels used to describe instances of this monitored
157 # resource type. For example, an individual Google Cloud SQL database is
158 # identified by values for the labels `"database_id"` and `"zone"`.
159 { # A description of a label.
160 "valueType": "A String", # The type of data that can be assigned to the label.
161 "description": "A String", # A human-readable description for the label.
162 "key": "A String", # The label key.
163 },
164 ],
165 "launchStage": "A String", # Optional. The launch stage of the monitored resource definition.
166 "type": "A String", # Required. The monitored resource type. For example, the type
167 # `"cloudsql_database"` represents databases in Google Cloud SQL.
168 # The maximum length of this value is 256 characters.
Dan O'Mearadd494642020-05-01 07:42:23 -0700169 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
170 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
171 # {type} is the value of the `type` field in this object and
172 # {project_id} is a project ID that provides API-specific context for
173 # accessing the type. APIs that do not use project information can use the
174 # resource name format `"monitoredResourceDescriptors/{type}"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700175 },
176 ],
177 "logs": [ # Defines the logs used by this service.
178 { # A description of a log type. Example in YAML format:
179 #
180 # - name: library.googleapis.com/activity_history
181 # description: The history of borrowing and returning library items.
182 # display_name: Activity
183 # labels:
184 # - key: /customer_id
185 # description: Identifier of a library customer
186 "labels": [ # The set of labels that are available to describe a specific log entry.
187 # Runtime requests that contain labels not specified here are
188 # considered invalid.
189 { # A description of a label.
190 "valueType": "A String", # The type of data that can be assigned to the label.
191 "description": "A String", # A human-readable description for the label.
192 "key": "A String", # The label key.
193 },
194 ],
195 "displayName": "A String", # The human-readable name for this log. This information appears on
196 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700197 "name": "A String", # The name of the log. It must be less than 512 characters long and can
198 # include the following characters: upper- and lower-case alphanumeric
199 # characters [A-Za-z0-9], and punctuation characters including
200 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -0700201 "description": "A String", # A human-readable description of this log. This information appears in
202 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700203 },
204 ],
Thomas Coffee2f245372017-03-27 10:39:26 -0700205 "systemParameters": { # ### System parameter configuration # System parameter configuration.
206 #
207 # A system parameter is a special kind of parameter defined by the API
208 # system, not by an individual API. It is typically mapped to an HTTP header
209 # and/or a URL query parameter. This configuration specifies which methods
210 # change the names of the system parameters.
211 "rules": [ # Define system parameters.
212 #
213 # The parameters defined here will override the default parameters
214 # implemented by the system. If this field is missing from the service
215 # config, default system parameters will be used. Default system parameters
216 # and names is implementation-dependent.
217 #
218 # Example: define api key for all methods
219 #
220 # system_parameters
221 # rules:
222 # - selector: "*"
223 # parameters:
224 # - name: api_key
225 # url_query_parameter: api_key
226 #
227 #
228 # Example: define 2 api key names for a specific method.
229 #
230 # system_parameters
231 # rules:
232 # - selector: "/ListShelves"
233 # parameters:
234 # - name: api_key
235 # http_header: Api-Key1
236 # - name: api_key
237 # http_header: Api-Key2
238 #
239 # **NOTE:** All service configuration rules follow "last one wins" order.
240 { # Define a system parameter rule mapping system parameter definitions to
241 # methods.
242 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
243 # For a given method call, only one of them should be used. If multiple
244 # names are used the behavior is implementation-dependent.
245 # If none of the specified names are present the behavior is
246 # parameter-dependent.
247 { # Define a parameter's name and location. The parameter may be passed as either
248 # an HTTP header or a URL query parameter, and if both are passed the behavior
249 # is implementation-dependent.
250 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
251 # sensitive.
252 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
253 # insensitive.
254 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
255 },
256 ],
257 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
258 # methods in all APIs.
259 #
260 # Refer to selector for syntax details.
261 },
262 ],
263 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700264 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
265 "rules": [ # A list of API backend rules that apply to individual API methods.
266 #
267 # **NOTE:** All service configuration rules follow "last one wins" order.
268 { # A backend rule provides configuration for an individual API element.
Dan O'Mearadd494642020-05-01 07:42:23 -0700269 "jwtAudience": "A String", # The JWT audience is used when generating a JWT ID token for the backend.
270 # This ID token will be added in the HTTP "authorization" header, and sent
271 # to the backend.
272 "protocol": "A String", # The protocol used for sending a request to the backend.
273 # The supported values are "http/1.1" and "h2".
274 #
275 # The default value is inferred from the scheme in the
276 # address field:
277 #
278 # SCHEME PROTOCOL
279 # http:// http/1.1
280 # https:// http/1.1
281 # grpc:// h2
282 # grpcs:// h2
283 #
284 # For secure HTTP backends (https://) that support HTTP/2, set this field
285 # to "h2" for improved performance.
286 #
287 # Configuring this field to non-default values is only supported for secure
288 # HTTP backends. This field will be ignored for all other backends.
289 #
290 # See
291 # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
292 # for more details on the supported values.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700293 "pathTranslation": "A String",
294 "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
295 # value lower than this will be rejected.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700296 "selector": "A String", # Selects the methods to which this rule applies.
297 #
298 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700299 "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running
300 # operation. The default is no deadline.
Dan O'Mearadd494642020-05-01 07:42:23 -0700301 "deadline": 3.14, # The number of seconds to wait for a response from a request. The default
302 # varies based on the request protocol and deployment environment.
303 "disableAuth": True or False, # When disable_auth is true, a JWT ID token won't be generated and the
304 # original "Authorization" HTTP header will be preserved. If the header is
305 # used to carry the original token and is expected by the backend, this
306 # field must be set to true to preserve the header.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700307 "address": "A String", # The address of the API backend.
Dan O'Mearadd494642020-05-01 07:42:23 -0700308 #
309 # The scheme is used to determine the backend protocol and security.
310 # The following schemes are accepted:
311 #
312 # SCHEME PROTOCOL SECURITY
313 # http:// HTTP None
314 # https:// HTTP TLS
315 # grpc:// gRPC None
316 # grpcs:// gRPC TLS
317 #
318 # It is recommended to explicitly include a scheme. Leaving out the scheme
319 # may cause constrasting behaviors across platforms.
320 #
321 # If the port is unspecified, the default is:
322 # - 80 for schemes without TLS
323 # - 443 for schemes with TLS
324 #
325 # For HTTP backends, use protocol
326 # to specify the protocol version.
327 "renameTo": "A String", # Unimplemented. Do not use.
328 #
329 # The new name the selected proto elements should be renamed to.
330 #
331 # The package, the service and the method can all be renamed.
332 # The backend server should implement the renamed proto. However, clients
333 # should call the original method, and ESF routes the traffic to the renamed
334 # method.
335 #
336 # HTTP clients should call the URL mapped to the original method.
337 # gRPC and Stubby clients should call the original method with package name.
338 #
339 # For legacy reasons, ESF allows Stubby clients to call with the
340 # short name (without the package name). However, for API Versioning(or
341 # multiple methods mapped to the same short name), all Stubby clients must
342 # call the method's full name with the package name, otherwise the first one
343 # (selector) wins.
344 #
345 # If this `rename_to` is specified with a trailing `*`, the `selector` must
346 # be specified with a trailing `*` as well. The all element short names
347 # matched by the `*` in the selector will be kept in the `rename_to`.
348 #
349 # For example,
350 # rename_rules:
351 # - selector: |-
352 # google.example.library.v1.*
353 # rename_to: google.example.library.*
354 #
355 # The selector matches `google.example.library.v1.Library.CreateShelf` and
356 # `google.example.library.v1.Library.CreateBook`, they will be renamed to
357 # `google.example.library.Library.CreateShelf` and
358 # `google.example.library.Library.CreateBook`. It essentially renames the
359 # proto package name section of the matched proto service and methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700360 },
361 ],
362 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700363 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700364 #
365 # The example below shows how to configure monitored resources and metrics
366 # for monitoring. In the example, a monitored resource and two metrics are
367 # defined. The `library.googleapis.com/book/returned_count` metric is sent
368 # to both producer and consumer projects, whereas the
369 # `library.googleapis.com/book/overdue_count` metric is only sent to the
370 # consumer project.
371 #
372 # monitored_resources:
373 # - type: library.googleapis.com/branch
374 # labels:
375 # - key: /city
376 # description: The city where the library branch is located in.
377 # - key: /name
378 # description: The name of the branch.
379 # metrics:
380 # - name: library.googleapis.com/book/returned_count
381 # metric_kind: DELTA
382 # value_type: INT64
383 # labels:
384 # - key: /customer_id
385 # - name: library.googleapis.com/book/overdue_count
386 # metric_kind: GAUGE
387 # value_type: INT64
388 # labels:
389 # - key: /customer_id
390 # monitoring:
391 # producer_destinations:
392 # - monitored_resource: library.googleapis.com/branch
393 # metrics:
394 # - library.googleapis.com/book/returned_count
395 # consumer_destinations:
396 # - monitored_resource: library.googleapis.com/branch
397 # metrics:
398 # - library.googleapis.com/book/returned_count
399 # - library.googleapis.com/book/overdue_count
400 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700401 # There can be multiple producer destinations. A monitored resouce type may
402 # appear in multiple monitoring destinations if different aggregations are
403 # needed for different sets of metrics associated with that monitored
404 # resource type. A monitored resource and metric pair may only be used once
405 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700406 { # Configuration of a specific monitoring destination (the producer project
407 # or the consumer project).
408 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
409 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700410 "metrics": [ # Types of the metrics to report to this monitoring destination.
411 # Each type must be defined in Service.metrics section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700412 "A String",
413 ],
414 },
415 ],
416 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700417 # There can be multiple consumer destinations. A monitored resouce type may
418 # appear in multiple monitoring destinations if different aggregations are
419 # needed for different sets of metrics associated with that monitored
420 # resource type. A monitored resource and metric pair may only be used once
421 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700422 { # Configuration of a specific monitoring destination (the producer project
423 # or the consumer project).
424 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
425 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700426 "metrics": [ # Types of the metrics to report to this monitoring destination.
427 # Each type must be defined in Service.metrics section.
428 "A String",
429 ],
430 },
431 ],
432 },
433 "billing": { # Billing related configuration of the service. # Billing configuration.
434 #
435 # The following example shows how to configure monitored resources and metrics
436 # for billing:
437 #
438 # monitored_resources:
439 # - type: library.googleapis.com/branch
440 # labels:
441 # - key: /city
442 # description: The city where the library branch is located in.
443 # - key: /name
444 # description: The name of the branch.
445 # metrics:
446 # - name: library.googleapis.com/book/borrowed_count
447 # metric_kind: DELTA
448 # value_type: INT64
449 # billing:
450 # consumer_destinations:
451 # - monitored_resource: library.googleapis.com/branch
452 # metrics:
453 # - library.googleapis.com/book/borrowed_count
454 "consumerDestinations": [ # Billing configurations for sending metrics to the consumer project.
455 # There can be multiple consumer destinations per service, each one must have
456 # a different monitored resource type. A metric can be used in at most
457 # one consumer destination.
458 { # Configuration of a specific billing destination (Currently only support
459 # bill against consumer project).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700460 "metrics": [ # Names of the metrics to report to this billing destination.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700461 # Each name must be defined in Service.metrics section.
462 "A String",
463 ],
Dan O'Mearadd494642020-05-01 07:42:23 -0700464 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
465 # Service.monitored_resources section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700466 },
467 ],
468 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700469 "title": "A String", # The product title for this service.
Dan O'Mearadd494642020-05-01 07:42:23 -0700470 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
471 # by the client for tracking purpose. Must be no longer than 63 characters
472 # and only lower case letters, digits, '.', '_' and '-' are allowed. If
473 # empty, the server may choose to generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700474 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
475 #
476 # Example for an API targeted for external use:
477 #
478 # name: calendar.googleapis.com
479 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800480 # providers:
481 # - id: google_calendar_auth
482 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
483 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700484 # rules:
485 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800486 # requirements:
487 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700488 "rules": [ # A list of authentication rules that apply to individual API methods.
489 #
490 # **NOTE:** All service configuration rules follow "last one wins" order.
491 { # Authentication rules for the service.
492 #
493 # By default, if a method has any authentication requirements, every request
494 # must include a valid credential matching one of the requirements.
495 # It's an error to include more than one kind of credential in a single
496 # request.
497 #
498 # If a method doesn't have any auth requirements, request credentials will be
499 # ignored.
500 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
501 # there are scopes defined for "Read-only access to Google Calendar" and
502 # "Access to Cloud Platform". Users can consent to a scope for an application,
503 # giving it permission to access that data on their behalf.
504 #
505 # OAuth scope specifications should be fairly coarse grained; a user will need
506 # to see and understand the text description of what your scope means.
507 #
508 # In most cases: use one or at most two OAuth scopes for an entire family of
509 # products. If your product has multiple APIs, you should probably be sharing
510 # the OAuth scope across all of those APIs.
511 #
512 # When you need finer grained OAuth consent screens: talk with your product
513 # management about how developers will use them in practice.
514 #
515 # Please note that even though each of the canonical scopes is enough for a
516 # request to be accepted and passed to the backend, a request can still fail
517 # due to the backend requiring additional scopes or permissions.
518 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
519 # OAuth token containing any of these scopes will be accepted.
520 #
521 # Example:
522 #
523 # canonical_scopes: https://www.googleapis.com/auth/calendar,
524 # https://www.googleapis.com/auth/calendar.read
525 },
526 "requirements": [ # Requirements for additional authentication providers.
527 { # User-defined authentication requirements, including support for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700528 # [JSON Web Token
529 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700530 "providerId": "A String", # id from authentication provider.
531 #
532 # Example:
533 #
534 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800535 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
536 # implemented and accepted in all the runtime components.
537 #
538 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700539 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
540 # that are allowed to access. A JWT containing any of these audiences will
541 # be accepted. When this setting is absent, only JWTs with audience
542 # "https://Service_name/API_name"
543 # will be accepted. For example, if no audiences are in the setting,
544 # LibraryService API will only accept JWTs with the following audience
545 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
546 #
547 # Example:
548 #
549 # audiences: bookstore_android.apps.googleusercontent.com,
550 # bookstore_web.apps.googleusercontent.com
551 },
552 ],
Dan O'Mearadd494642020-05-01 07:42:23 -0700553 "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700554 "selector": "A String", # Selects the methods to which this rule applies.
555 #
556 # Refer to selector for syntax details.
557 },
558 ],
559 "providers": [ # Defines a set of authentication providers that a service supports.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700560 { # Configuration for an authentication provider, including support for
561 # [JSON Web Token
562 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Dan O'Mearadd494642020-05-01 07:42:23 -0700563 "jwtLocations": [ # Defines the locations to extract the JWT.
564 #
565 # JWT locations can be either from HTTP headers or URL query parameters.
566 # The rule is that the first match wins. The checking order is: checking
567 # all headers first, then URL query parameters.
568 #
569 # If not specified, default to use following 3 locations:
570 # 1) Authorization: Bearer
571 # 2) x-goog-iap-jwt-assertion
572 # 3) access_token query parameter
573 #
574 # Default locations can be specified as followings:
575 # jwt_locations:
576 # - header: Authorization
577 # value_prefix: "Bearer "
578 # - header: x-goog-iap-jwt-assertion
579 # - query: access_token
580 { # Specifies a location to extract JWT from an API request.
581 "query": "A String", # Specifies URL query parameter name to extract JWT token.
582 "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
583 # Only applies to "in" header type. Must be empty for "in" query type.
584 # If not empty, the header value has to match (case sensitive) this prefix.
585 # If not matched, JWT will not be extracted. If matched, JWT will be
586 # extracted after the prefix is removed.
587 #
588 # For example, for "Authorization: Bearer {JWT}",
589 # value_prefix="Bearer " with a space at the end.
590 "header": "A String", # Specifies HTTP header name to extract JWT token.
591 },
592 ],
593 "audiences": "A String", # The list of JWT
594 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
595 # that are allowed to access. A JWT containing any of these audiences will
596 # be accepted. When this setting is absent, JWTs with audiences:
597 # - "https://[service.name]/[google.protobuf.Api.name]"
598 # - "https://[service.name]/"
599 # will be accepted.
600 # For example, if no audiences are in the setting, LibraryService API will
601 # accept JWTs with the following audiences:
602 # -
603 # https://library-example.googleapis.com/google.example.library.v1.LibraryService
604 # - https://library-example.googleapis.com/
605 #
606 # Example:
607 #
608 # audiences: bookstore_android.apps.googleusercontent.com,
609 # bookstore_web.apps.googleusercontent.com
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700610 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
611 # [OpenID
612 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
613 # Optional if the key set document:
614 # - can be retrieved from
615 # [OpenID
616 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
617 # the issuer.
618 # - can be inferred from the email domain of the issuer (e.g. a Google
619 # service account).
620 #
621 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700622 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
623 # `AuthRequirement.provider_id`.
624 #
625 # Example: "bookstore_auth".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700626 "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
627 # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700628 "issuer": "A String", # Identifies the principal that issued the JWT. See
629 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
630 # Usually a URL or an email address.
631 #
632 # Example: https://securetoken.google.com
633 # Example: 1234567-compute@developer.gserviceaccount.com
634 },
635 ],
636 },
637 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
638 "rules": [ # A list of usage rules that apply to individual API methods.
639 #
640 # **NOTE:** All service configuration rules follow "last one wins" order.
641 { # Usage configuration rules for the service.
642 #
643 # NOTE: Under development.
644 #
645 #
646 # Use this rule to configure unregistered calls for the service. Unregistered
647 # calls are calls that do not contain consumer project identity.
648 # (Example: calls that do not contain an API key).
649 # By default, API methods do not allow unregistered calls, and each method call
650 # must be identified by a consumer project identity. Use this rule to
651 # allow/disallow unregistered calls.
652 #
653 # Example of an API that wants to allow unregistered calls for entire service.
654 #
655 # usage:
656 # rules:
657 # - selector: "*"
658 # allow_unregistered_calls: true
659 #
660 # Example of a method that wants to allow unregistered calls.
661 #
662 # usage:
663 # rules:
664 # - selector: "google.example.library.v1.LibraryService.CreateBook"
665 # allow_unregistered_calls: true
Dan O'Mearadd494642020-05-01 07:42:23 -0700666 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
667 # methods in all APIs.
668 #
669 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700670 "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
671 # plane features, such as quota and billing, will not be available.
672 # This flag is used by Google Cloud Endpoints to bypass checks for internal
673 # methods, such as service health check methods.
674 "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
675 # that don't identify any user or application.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700676 },
677 ],
Dan O'Mearadd494642020-05-01 07:42:23 -0700678 "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
679 #
680 #
681 # Use this field to configure per-product per-project service identity.
682 # Example of a service identity configuration.
683 #
684 # usage:
685 # service_identity:
686 # - service_account_parent: "projects/123456789"
687 # display_name: "Cloud XXX Service Agent"
688 # description: "Used as the identity of Cloud XXX to access resources"
689 "displayName": "A String", # Optional. A user-specified name for the service account.
690 # Must be less than or equal to 100 UTF-8 bytes.
691 "description": "A String", # Optional. A user-specified opaque description of the service account.
692 # Must be less than or equal to 256 UTF-8 bytes.
693 "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
694 #
695 # An example name would be:
696 # `projects/123456789`
697 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800698 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
699 # service producer.
700 #
701 # Google Service Management currently only supports
702 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
703 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
704 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
705 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700706 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
Dan O'Mearadd494642020-05-01 07:42:23 -0700707 # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700708 # for example 'serviceusage.googleapis.com/billing-enabled'.
709 "A String",
710 ],
711 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700712 "configVersion": 42, # The semantic version of the service configuration. The config version
713 # affects the interpretation of the service configuration. For example,
714 # certain features are enabled by default for certain config versions.
Dan O'Mearadd494642020-05-01 07:42:23 -0700715 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700716 # The latest config version is `3`.
717 "producerProjectId": "A String", # The Google project that owns this service.
718 "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700719 # HttpRule, each specifying the mapping of an RPC method
720 # to one or more HTTP REST API methods.
721 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
722 #
723 # **NOTE:** All service configuration rules follow "last one wins" order.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700724 { # # gRPC Transcoding
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700725 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700726 # gRPC Transcoding is a feature for mapping between a gRPC method and one or
727 # more HTTP REST endpoints. It allows developers to build a single API service
728 # that supports both gRPC APIs and REST APIs. Many systems, including [Google
729 # APIs](https://github.com/googleapis/googleapis),
730 # [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
731 # Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
732 # and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
733 # and use it for large scale production services.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700734 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700735 # `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
736 # how different portions of the gRPC request message are mapped to the URL
737 # path, URL query parameters, and HTTP request body. It also controls how the
738 # gRPC response message is mapped to the HTTP response body. `HttpRule` is
739 # typically specified as an `google.api.http` annotation on the gRPC method.
740 #
741 # Each mapping specifies a URL path template and an HTTP method. The path
742 # template may refer to one or more fields in the gRPC request message, as long
743 # as each field is a non-repeated field with a primitive (non-message) type.
744 # The path template controls how fields of the request message are mapped to
745 # the URL path.
746 #
747 # Example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800748 #
749 # service Messaging {
750 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700751 # option (google.api.http) = {
752 # get: "/v1/{name=messages/*}"
753 # };
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800754 # }
755 # }
756 # message GetMessageRequest {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700757 # string name = 1; // Mapped to URL path.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800758 # }
759 # message Message {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700760 # string text = 1; // The resource content.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800761 # }
762 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700763 # This enables an HTTP REST to gRPC mapping as below:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800764 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700765 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700766 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700767 # `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700768 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700769 # Any fields in the request message which are not bound by the path template
770 # automatically become HTTP query parameters if there is no HTTP request body.
771 # For example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800772 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -0400773 # service Messaging {
774 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700775 # option (google.api.http) = {
776 # get:"/v1/messages/{message_id}"
777 # };
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -0400778 # }
779 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800780 # message GetMessageRequest {
781 # message SubMessage {
782 # string subfield = 1;
783 # }
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700784 # string message_id = 1; // Mapped to URL path.
785 # int64 revision = 2; // Mapped to URL query parameter `revision`.
786 # SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800787 # }
788 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700789 # This enables a HTTP JSON to RPC mapping as below:
790 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700791 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700792 # -----|-----
Dan O'Mearadd494642020-05-01 07:42:23 -0700793 # `GET /v1/messages/123456?revision=2&amp;sub.subfield=foo` |
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700794 # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
795 # "foo"))`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700796 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700797 # Note that fields which are mapped to URL query parameters must have a
798 # primitive type or a repeated primitive type or a non-repeated message type.
799 # In the case of a repeated type, the parameter can be repeated in the URL
Dan O'Mearadd494642020-05-01 07:42:23 -0700800 # as `...?param=A&amp;param=B`. In the case of a message type, each field of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700801 # message is mapped to a separate parameter, such as
Dan O'Mearadd494642020-05-01 07:42:23 -0700802 # `...?foo.a=A&amp;foo.b=B&amp;foo.c=C`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700803 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700804 # For HTTP methods that allow a request body, the `body` field
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700805 # specifies the mapping. Consider a REST update method on the
806 # message resource collection:
807 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800808 # service Messaging {
809 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
810 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700811 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800812 # body: "message"
813 # };
814 # }
815 # }
816 # message UpdateMessageRequest {
817 # string message_id = 1; // mapped to the URL
818 # Message message = 2; // mapped to the body
819 # }
820 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700821 # The following HTTP JSON to RPC mapping is enabled, where the
822 # representation of the JSON in the request body is determined by
823 # protos JSON encoding:
824 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700825 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700826 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700827 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
828 # "123456" message { text: "Hi!" })`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700829 #
830 # The special name `*` can be used in the body mapping to define that
831 # every field not bound by the path template should be mapped to the
832 # request body. This enables the following alternative definition of
833 # the update method:
834 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800835 # service Messaging {
836 # rpc UpdateMessage(Message) returns (Message) {
837 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700838 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800839 # body: "*"
840 # };
841 # }
842 # }
843 # message Message {
844 # string message_id = 1;
845 # string text = 2;
846 # }
847 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700848 #
849 # The following HTTP JSON to RPC mapping is enabled:
850 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700851 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700852 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700853 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
854 # "123456" text: "Hi!")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700855 #
856 # Note that when using `*` in the body mapping, it is not possible to
857 # have HTTP parameters, as all fields not bound by the path end in
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700858 # the body. This makes this option more rarely used in practice when
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700859 # defining REST APIs. The common usage of `*` is in custom methods
860 # which don't use the URL at all for transferring data.
861 #
862 # It is possible to define multiple HTTP methods for one RPC by using
863 # the `additional_bindings` option. Example:
864 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800865 # service Messaging {
866 # rpc GetMessage(GetMessageRequest) returns (Message) {
867 # option (google.api.http) = {
868 # get: "/v1/messages/{message_id}"
869 # additional_bindings {
870 # get: "/v1/users/{user_id}/messages/{message_id}"
871 # }
872 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700873 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800874 # }
875 # message GetMessageRequest {
876 # string message_id = 1;
877 # string user_id = 2;
878 # }
879 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700880 # This enables the following two alternative HTTP JSON to RPC mappings:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700881 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700882 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700883 # -----|-----
884 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700885 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
886 # "123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700887 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700888 # ## Rules for HTTP mapping
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700889 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700890 # 1. Leaf request fields (recursive expansion nested messages in the request
891 # message) are classified into three categories:
892 # - Fields referred by the path template. They are passed via the URL path.
893 # - Fields referred by the HttpRule.body. They are passed via the HTTP
894 # request body.
895 # - All other fields are passed via the URL query parameters, and the
896 # parameter name is the field path in the request message. A repeated
897 # field can be represented as multiple query parameters under the same
898 # name.
899 # 2. If HttpRule.body is "*", there is no URL query parameter, all fields
900 # are passed via URL path and HTTP request body.
901 # 3. If HttpRule.body is omitted, there is no HTTP request body, all
902 # fields are passed via URL path and URL query parameters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700903 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700904 # ### Path template syntax
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700905 #
906 # Template = "/" Segments [ Verb ] ;
907 # Segments = Segment { "/" Segment } ;
908 # Segment = "*" | "**" | LITERAL | Variable ;
909 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
910 # FieldPath = IDENT { "." IDENT } ;
911 # Verb = ":" LITERAL ;
912 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700913 # The syntax `*` matches a single URL path segment. The syntax `**` matches
914 # zero or more URL path segments, which must be the last part of the URL path
915 # except the `Verb`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700916 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700917 # The syntax `Variable` matches part of the URL path as specified by its
918 # template. A variable template must not contain other variables. If a variable
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700919 # matches a single path segment, its template may be omitted, e.g. `{var}`
920 # is equivalent to `{var=*}`.
921 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700922 # The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
923 # contains any reserved character, such characters should be percent-encoded
924 # before the matching.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700925 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700926 # If a variable contains exactly one path segment, such as `"{var}"` or
927 # `"{var=*}"`, when such a variable is expanded into a URL path on the client
928 # side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
929 # server side does the reverse decoding. Such variables show up in the
930 # [Discovery
931 # Document](https://developers.google.com/discovery/v1/reference/apis) as
932 # `{var}`.
933 #
934 # If a variable contains multiple path segments, such as `"{var=foo/*}"`
935 # or `"{var=**}"`, when such a variable is expanded into a URL path on the
936 # client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
937 # The server side does the reverse decoding, except "%2F" and "%2f" are left
938 # unchanged. Such variables show up in the
939 # [Discovery
940 # Document](https://developers.google.com/discovery/v1/reference/apis) as
941 # `{+var}`.
942 #
943 # ## Using gRPC API Service Configuration
944 #
945 # gRPC API Service Configuration (service config) is a configuration language
946 # for configuring a gRPC service to become a user-facing product. The
947 # service config is simply the YAML representation of the `google.api.Service`
948 # proto message.
949 #
950 # As an alternative to annotating your proto file, you can configure gRPC
951 # transcoding in your service config YAML files. You do this by specifying a
952 # `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
953 # effect as the proto annotation. This can be particularly useful if you
954 # have a proto that is reused in multiple services. Note that any transcoding
955 # specified in the service config will override any matching transcoding
956 # configuration in the proto.
957 #
958 # Example:
959 #
960 # http:
961 # rules:
962 # # Selects a gRPC method and applies HttpRule to it.
963 # - selector: example.v1.Messaging.GetMessage
964 # get: /v1/messages/{message_id}/{sub.subfield}
965 #
966 # ## Special notes
967 #
968 # When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
969 # proto to JSON conversion must follow the [proto3
970 # specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
971 #
972 # While the single segment variable follows the semantics of
973 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
974 # Expansion, the multi segment variable **does not** follow RFC 6570 Section
975 # 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
976 # does not expand special characters like `?` and `#`, which would lead
977 # to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
978 # for multi segment variables.
979 #
980 # The path variables **must not** refer to any repeated or mapped field,
981 # because client libraries are not capable of handling such variable expansion.
982 #
983 # The path variables **must not** capture the leading "/" character. The reason
984 # is that the most common use case "{var}" does not capture the leading "/"
985 # character. For consistency, all path variables must share the same behavior.
986 #
987 # Repeated message fields must not be mapped to URL query parameters, because
988 # no client library can support such complicated mapping.
989 #
990 # If an API needs to use a JSON array for request or response body, it can map
991 # the request or response body to a repeated field. However, some gRPC
992 # Transcoding implementations may not support this feature.
993 "body": "A String", # The name of the request field whose value is mapped to the HTTP request
994 # body, or `*` for mapping all request fields not captured by the path
995 # pattern to the HTTP body, or omitted for not having any HTTP request body.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -0400996 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700997 # NOTE: the referred field must be present at the top-level of the request
998 # message type.
Dan O'Mearadd494642020-05-01 07:42:23 -0700999 "get": "A String", # Maps to HTTP GET. Used for listing and getting information about
1000 # resources.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001001 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
1002 # not contain an `additional_bindings` field themselves (that is,
1003 # the nesting may only be one level deep).
1004 # Object with schema name: HttpRule
1005 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07001006 "selector": "A String", # Selects a method to which this rule applies.
1007 #
1008 # Refer to selector for syntax details.
1009 "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP
1010 # response body. When omitted, the entire response message will be used
1011 # as the HTTP response body.
1012 #
1013 # NOTE: The referred field must be present at the top-level of the response
1014 # message type.
1015 "allowHalfDuplex": True or False, # When this flag is set to true, HTTP requests will be allowed to invoke a
1016 # half-duplex streaming method.
1017 "put": "A String", # Maps to HTTP PUT. Used for replacing a resource.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001018 "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource.
Dan O'Mearadd494642020-05-01 07:42:23 -07001019 "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001020 "custom": { # A custom pattern is used for defining custom HTTP verb. # The custom pattern is used for specifying an HTTP method that is not
1021 # included in the `pattern` field, such as HEAD, or "*" to leave the
1022 # HTTP method unspecified for this rule. The wild-card rule is useful
1023 # for services that provide content to Web (HTML) clients.
Thomas Coffee2f245372017-03-27 10:39:26 -07001024 "path": "A String", # The path matched by this custom verb.
1025 "kind": "A String", # The name of this custom HTTP verb.
1026 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001027 "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001028 },
1029 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001030 "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parameters will be fully URI-decoded except in
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001031 # cases of single segment matches in reserved expansion, where "%2F" will be
1032 # left encoded.
1033 #
1034 # The default behavior is to not decode RFC 6570 reserved characters in multi
1035 # segment matches.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001036 },
1037 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
1038 # of the google.protobuf.Api needs to be provided by the configuration
1039 # author, as the remaining fields will be derived from the IDL during the
1040 # normalization process. It is an error to specify an API interface here
1041 # which cannot be resolved against the associated IDL files.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001042 { # Api is a light-weight descriptor for an API Interface.
1043 #
1044 # Interfaces are also described as "protocol buffer services" in some contexts,
1045 # such as by the "service" keyword in a .proto file, but they are different
1046 # from API Services, which represent a concrete implementation of an interface
1047 # as opposed to simply a description of methods and bindings. They are also
1048 # sometimes simply referred to as "APIs" in other contexts, such as the name of
1049 # this message itself. See https://cloud.google.com/apis/design/glossary for
1050 # detailed terminology.
Dan O'Mearadd494642020-05-01 07:42:23 -07001051 "name": "A String", # The fully qualified name of this interface, including package name
1052 # followed by the interface's simple name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001053 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
1054 # message.
1055 # protobuf element, like the file in which it is defined.
1056 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1057 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1058 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001059 "mixins": [ # Included interfaces. See Mixin.
1060 { # Declares an API Interface to be included in this interface. The including
1061 # interface must redeclare all the methods from the included interface, but
1062 # documentation and options are inherited as follows:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001063 #
1064 # - If after comment and whitespace stripping, the documentation
1065 # string of the redeclared method is empty, it will be inherited
1066 # from the original method.
1067 #
1068 # - Each annotation belonging to the service config (http,
1069 # visibility) which is not set in the redeclared method will be
1070 # inherited.
1071 #
1072 # - If an http annotation is inherited, the path pattern will be
1073 # modified as follows. Any version prefix will be replaced by the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001074 # version of the including interface plus the root path if
1075 # specified.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001076 #
1077 # Example of a simple mixin:
1078 #
1079 # package google.acl.v1;
1080 # service AccessControl {
1081 # // Get the underlying ACL object.
1082 # rpc GetAcl(GetAclRequest) returns (Acl) {
1083 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
1084 # }
1085 # }
1086 #
1087 # package google.storage.v2;
1088 # service Storage {
1089 # // rpc GetAcl(GetAclRequest) returns (Acl);
1090 #
1091 # // Get a data record.
1092 # rpc GetData(GetDataRequest) returns (Data) {
1093 # option (google.api.http).get = "/v2/{resource=**}";
1094 # }
1095 # }
1096 #
1097 # Example of a mixin configuration:
1098 #
1099 # apis:
1100 # - name: google.storage.v2.Storage
1101 # mixins:
1102 # - name: google.acl.v1.AccessControl
1103 #
1104 # The mixin construct implies that all methods in `AccessControl` are
1105 # also declared with same name and request/response types in
1106 # `Storage`. A documentation generator or annotation processor will
1107 # see the effective `Storage.GetAcl` method after inherting
1108 # documentation and annotations as follows:
1109 #
1110 # service Storage {
1111 # // Get the underlying ACL object.
1112 # rpc GetAcl(GetAclRequest) returns (Acl) {
1113 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
1114 # }
1115 # ...
1116 # }
1117 #
1118 # Note how the version in the path pattern changed from `v1` to `v2`.
1119 #
1120 # If the `root` field in the mixin is specified, it should be a
1121 # relative path under which inherited HTTP paths are placed. Example:
1122 #
1123 # apis:
1124 # - name: google.storage.v2.Storage
1125 # mixins:
1126 # - name: google.acl.v1.AccessControl
1127 # root: acls
1128 #
1129 # This implies the following inherited HTTP annotation:
1130 #
1131 # service Storage {
1132 # // Get the underlying ACL object.
1133 # rpc GetAcl(GetAclRequest) returns (Acl) {
1134 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
1135 # }
1136 # ...
1137 # }
1138 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
1139 # are rooted.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001140 "name": "A String", # The fully qualified name of the interface which is included.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001141 },
1142 ],
1143 "syntax": "A String", # The source syntax of the service.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001144 "version": "A String", # A version string for this interface. If specified, must have the form
1145 # `major-version.minor-version`, as in `1.10`. If the minor version is
1146 # omitted, it defaults to zero. If the entire version field is empty, the
1147 # major version is derived from the package name, as outlined below. If the
1148 # field is not empty, the version in the package name will be verified to be
1149 # consistent with what is provided here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001150 #
1151 # The versioning schema uses [semantic
1152 # versioning](http://semver.org) where the major version number
1153 # indicates a breaking change and the minor version an additive,
1154 # non-breaking change. Both version numbers are signals to users
1155 # what to expect from different versions, and should be carefully
1156 # chosen based on the product plan.
1157 #
1158 # The major version is also reflected in the package name of the
Dan O'Mearadd494642020-05-01 07:42:23 -07001159 # interface, which must end in `v&lt;major-version&gt;`, as in
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001160 # `google.feature.v1`. For major versions 0 and 1, the suffix can
1161 # be omitted. Zero major versions must only be used for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001162 # experimental, non-GA interfaces.
1163 "options": [ # Any metadata attached to the interface.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001164 { # A protocol buffer option, which can be attached to a message, field,
1165 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001166 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1167 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1168 # For custom options, it should be the fully-qualified name. For example,
1169 # `"google.api.http"`.
1170 "value": { # The option's value packed in an Any message. If the value is a primitive,
1171 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1172 # should be used. If the value is an enum, it should be stored as an int32
1173 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001174 "a_key": "", # Properties of the object. Contains field @type with type URL.
1175 },
1176 },
1177 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07001178 "methods": [ # The methods of this interface, in unspecified order.
1179 { # Method represents a method of an API interface.
1180 "name": "A String", # The simple name of this method.
1181 "requestStreaming": True or False, # If true, the request is streamed.
1182 "responseTypeUrl": "A String", # The URL of the output message type.
1183 "requestTypeUrl": "A String", # A URL of the input message type.
1184 "responseStreaming": True or False, # If true, the response is streamed.
1185 "syntax": "A String", # The source syntax of this method.
1186 "options": [ # Any metadata attached to the method.
1187 { # A protocol buffer option, which can be attached to a message, field,
1188 # enumeration, etc.
1189 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1190 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1191 # For custom options, it should be the fully-qualified name. For example,
1192 # `"google.api.http"`.
1193 "value": { # The option's value packed in an Any message. If the value is a primitive,
1194 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1195 # should be used. If the value is an enum, it should be stored as an int32
1196 # value using the google.protobuf.Int32Value type.
1197 "a_key": "", # Properties of the object. Contains field @type with type URL.
1198 },
1199 },
1200 ],
1201 },
1202 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001203 },
1204 ],
1205 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
1206 # specific protobuf types that can appear in error detail lists of
1207 # error responses.
1208 #
1209 # Example:
1210 #
1211 # custom_error:
1212 # types:
1213 # - google.foo.v1.CustomError
1214 # - google.foo.v1.AnotherError
1215 "rules": [ # The list of custom error rules that apply to individual API messages.
1216 #
1217 # **NOTE:** All service configuration rules follow "last one wins" order.
1218 { # A custom error rule.
1219 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
1220 # objects of this type will be filtered when they appear in error payload.
1221 "selector": "A String", # Selects messages to which this rule applies.
1222 #
1223 # Refer to selector for syntax details.
1224 },
1225 ],
1226 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
1227 "A String",
1228 ],
1229 },
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001230 "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
1231 # usage.
1232 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001233 # The metric based quota configuration works this way:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001234 # - The service configuration defines a set of metrics.
1235 # - For API calls, the quota.metric_rules maps methods to metrics with
1236 # corresponding costs.
1237 # - The quota.limits defines limits on the metrics, which will be used for
1238 # quota checks at runtime.
1239 #
1240 # An example quota configuration in yaml format:
1241 #
1242 # quota:
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001243 # limits:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001244 #
1245 # - name: apiWriteQpsPerProject
1246 # metric: library.googleapis.com/write_calls
1247 # unit: "1/min/{project}" # rate limit for consumer projects
1248 # values:
1249 # STANDARD: 10000
1250 #
1251 #
1252 # # The metric rules bind all methods to the read_calls metric,
1253 # # except for the UpdateBook and DeleteBook methods. These two methods
1254 # # are mapped to the write_calls metric, with the UpdateBook method
1255 # # consuming at twice rate as the DeleteBook method.
1256 # metric_rules:
1257 # - selector: "*"
1258 # metric_costs:
1259 # library.googleapis.com/read_calls: 1
1260 # - selector: google.example.library.v1.LibraryService.UpdateBook
1261 # metric_costs:
1262 # library.googleapis.com/write_calls: 2
1263 # - selector: google.example.library.v1.LibraryService.DeleteBook
1264 # metric_costs:
1265 # library.googleapis.com/write_calls: 1
1266 #
1267 # Corresponding Metric definition:
1268 #
1269 # metrics:
1270 # - name: library.googleapis.com/read_calls
1271 # display_name: Read requests
1272 # metric_kind: DELTA
1273 # value_type: INT64
1274 #
1275 # - name: library.googleapis.com/write_calls
1276 # display_name: Write requests
1277 # metric_kind: DELTA
1278 # value_type: INT64
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001279 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001280 "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
1281 # or more metrics.
1282 { # Bind API methods to metrics. Binding a method to a metric causes that
1283 # metric's configured quota behaviors to apply to the method call.
1284 "metricCosts": { # Metrics to update when the selected methods are called, and the associated
1285 # cost applied to each metric.
1286 #
1287 # The key of the map is the metric name, and the values are the amount
1288 # increased for the metric against which the quota limits are defined.
1289 # The value must not be negative.
1290 "a_key": "A String",
1291 },
1292 "selector": "A String", # Selects the methods to which this rule applies.
1293 #
1294 # Refer to selector for syntax details.
1295 },
1296 ],
1297 "limits": [ # List of `QuotaLimit` definitions for the service.
1298 { # `QuotaLimit` defines a specific limit that applies over a specified duration
1299 # for a limit type. There can be at most one limit for a duration and limit
1300 # type combination defined within a `QuotaGroup`.
1301 "displayName": "A String", # User-visible display name for this limit.
1302 # Optional. If not set, the UI will provide a default display name based on
1303 # the quota configuration. This field can be used to override the default
1304 # display name generated from the configuration.
Dan O'Mearadd494642020-05-01 07:42:23 -07001305 "description": "A String", # Optional. User-visible, extended description for this quota limit.
1306 # Should be used only when more context is needed to understand this limit
1307 # than provided by the limit's display name (see: `display_name`).
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001308 "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
1309 # duration. This is the number of tokens assigned when a client
1310 # application developer activates the service for his/her project.
1311 #
1312 # Specifying a value of 0 will block all requests. This can be used if you
1313 # are provisioning quota to selected consumers and blocking others.
1314 # Similarly, a value of -1 will indicate an unlimited quota. No other
1315 # negative values are allowed.
1316 #
1317 # Used by group-based quotas only.
1318 "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
1319 # the same metric will be checked together during runtime. The metric must be
1320 # defined within the service config.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001321 "values": { # Tiered limit values. You must specify this as a key:value pair, with an
1322 # integer value that is the maximum number of requests allowed for the
1323 # specified unit. Currently only STANDARD is supported.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001324 "a_key": "A String",
1325 },
1326 "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
1327 # duration. Client application developers can override the default limit up
1328 # to this maximum. If specified, this value cannot be set to a value less
1329 # than the default limit. If not specified, it is set to the default limit.
1330 #
1331 # To allow clients to apply overrides with no upper bound, set this to -1,
1332 # indicating unlimited maximum quota.
1333 #
1334 # Used by group-based quotas only.
Dan O'Mearadd494642020-05-01 07:42:23 -07001335 "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001336 #
1337 # Used by group-based quotas only.
1338 "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
1339 # The free tier is the number of tokens that will be subtracted from the
1340 # billed amount when billing is enabled.
1341 # This field can only be set on a limit with duration "1d", in a billable
1342 # group; it is invalid on any other limit. If this field is not set, it
1343 # defaults to 0, indicating that there is no free tier for this service.
1344 #
1345 # Used by group-based quotas only.
1346 "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
1347 # Metric.unit. The supported unit kinds are determined by the quota
1348 # backend system.
1349 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001350 # Here are some examples:
1351 # * "1/min/{project}" for quota per minute per project.
1352 #
1353 # Note: the order of unit components is insignificant.
1354 # The "1" at the beginning is required to follow the metric unit syntax.
Dan O'Mearadd494642020-05-01 07:42:23 -07001355 "name": "A String", # Name of the quota limit.
1356 #
1357 # The name must be provided, and it must be unique within the service. The
1358 # name can only include alphanumeric characters as well as '-'.
1359 #
1360 # The maximum length of the limit name is 64 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001361 },
1362 ],
1363 },
1364 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001365 { # Defines a metric type and its schema. Once a metric descriptor is created,
1366 # deleting or altering it stops data collection and makes the metric type's
1367 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001368 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
1369 # Use sentence case without an ending period, for example "Request count".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001370 # This field is optional but it is recommended to be set for any metrics
1371 # associated with user-visible concepts, such as Quota.
Dan O'Mearadd494642020-05-01 07:42:23 -07001372 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001373 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001374 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001375 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001376 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001377 "labels": [ # The set of labels that can be used to describe a specific
1378 # instance of this metric type. For example, the
1379 # `appengine.googleapis.com/http/server/response_latencies` metric
1380 # type has a label for the HTTP response code, `response_code`, so
1381 # you can look at latencies for successful responses or just
1382 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001383 { # A description of a label.
1384 "valueType": "A String", # The type of data that can be assigned to the label.
1385 "description": "A String", # A human-readable description for the label.
1386 "key": "A String", # The label key.
1387 },
1388 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001389 "launchStage": "A String", # Optional. The launch stage of the metric definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07001390 "monitoredResourceTypes": [ # Read-only. If present, then a time
1391 # series, which is identified partially by
1392 # a metric type and a MonitoredResourceDescriptor, that is associated
1393 # with this metric type can only be associated with one of the monitored
1394 # resource types listed here.
1395 "A String",
1396 ],
1397 "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
1398 "launchStage": "A String", # Deprecated. Must use the MetricDescriptor.launch_stage instead.
1399 "ingestDelay": "A String", # The delay of data points caused by ingestion. Data points older than this
1400 # age are guaranteed to be ingested and available to be read, excluding
1401 # data loss due to errors.
1402 "samplePeriod": "A String", # The sampling period of metric data points. For metrics which are written
1403 # periodically, consecutive data points are stored at this time interval,
1404 # excluding data loss due to errors. Metrics with a higher granularity have
1405 # a smaller sampling period.
1406 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001407 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001408 # URL-encoded. All user-defined metric types have the DNS name
1409 # `custom.googleapis.com` or `external.googleapis.com`. Metric types should
1410 # use a natural hierarchical grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001411 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001412 # "custom.googleapis.com/invoice/paid/amount"
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001413 # "external.googleapis.com/prometheus/up"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001414 # "appengine.googleapis.com/http/server/response_latencies"
Dan O'Mearadd494642020-05-01 07:42:23 -07001415 "unit": "A String", # The units in which the metric value is reported. It is only applicable
1416 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
1417 # defines the representation of the stored metric values.
1418 #
1419 # Different systems may scale the values to be more easily displayed (so a
1420 # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
1421 # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
1422 # `KBy`, then the value of the metric is always in thousands of bytes, no
1423 # matter how it may be displayed..
1424 #
1425 # If you want a custom metric to record the exact number of CPU-seconds used
1426 # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
1427 # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
1428 # CPU-seconds, then the value is written as `12005`.
1429 #
1430 # Alternatively, if you want a custom metric to record data in a more
1431 # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
1432 # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
1433 # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
1434 #
1435 # The supported units are a subset of [The Unified Code for Units of
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001436 # Measure](http://unitsofmeasure.org/ucum.html) standard:
1437 #
1438 # **Basic units (UNIT)**
1439 #
1440 # * `bit` bit
1441 # * `By` byte
1442 # * `s` second
1443 # * `min` minute
1444 # * `h` hour
1445 # * `d` day
1446 #
1447 # **Prefixes (PREFIX)**
1448 #
Dan O'Mearadd494642020-05-01 07:42:23 -07001449 # * `k` kilo (10^3)
1450 # * `M` mega (10^6)
1451 # * `G` giga (10^9)
1452 # * `T` tera (10^12)
1453 # * `P` peta (10^15)
1454 # * `E` exa (10^18)
1455 # * `Z` zetta (10^21)
1456 # * `Y` yotta (10^24)
1457 #
1458 # * `m` milli (10^-3)
1459 # * `u` micro (10^-6)
1460 # * `n` nano (10^-9)
1461 # * `p` pico (10^-12)
1462 # * `f` femto (10^-15)
1463 # * `a` atto (10^-18)
1464 # * `z` zepto (10^-21)
1465 # * `y` yocto (10^-24)
1466 #
1467 # * `Ki` kibi (2^10)
1468 # * `Mi` mebi (2^20)
1469 # * `Gi` gibi (2^30)
1470 # * `Ti` tebi (2^40)
1471 # * `Pi` pebi (2^50)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001472 #
1473 # **Grammar**
1474 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001475 # The grammar also includes these connectors:
1476 #
Dan O'Mearadd494642020-05-01 07:42:23 -07001477 # * `/` division or ratio (as an infix operator). For examples,
1478 # `kBy/{email}` or `MiBy/10ms` (although you should almost never
1479 # have `/s` in a metric `unit`; rates should always be computed at
1480 # query time from the underlying cumulative or delta value).
1481 # * `.` multiplication or composition (as an infix operator). For
1482 # examples, `GBy.d` or `k{watt}.h`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001483 #
1484 # The grammar for a unit is as follows:
1485 #
1486 # Expression = Component { "." Component } { "/" Component } ;
1487 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001488 # Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001489 # | Annotation
1490 # | "1"
1491 # ;
1492 #
1493 # Annotation = "{" NAME "}" ;
1494 #
1495 # Notes:
1496 #
Dan O'Mearadd494642020-05-01 07:42:23 -07001497 # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
1498 # is used alone, then the unit is equivalent to `1`. For examples,
1499 # `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001500 # * `NAME` is a sequence of non-blank printable ASCII characters not
Dan O'Mearadd494642020-05-01 07:42:23 -07001501 # containing `{` or `}`.
1502 # * `1` represents a unitary [dimensionless
1503 # unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
1504 # as in `1/s`. It is typically used when none of the basic units are
1505 # appropriate. For example, "new users per day" can be represented as
1506 # `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
1507 # users). Alternatively, "thousands of page views per day" would be
1508 # represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
1509 # value of `5.3` would mean "5300 page views per day").
1510 # * `%` represents dimensionless value of 1/100, and annotates values giving
1511 # a percentage (so the metric values are typically in the range of 0..100,
1512 # and a metric value `3` means "3 percent").
1513 # * `10^2.%` indicates a metric contains a ratio, typically in the range
1514 # 0..1, that will be multiplied by 100 and displayed as a percentage
1515 # (so a metric value `0.03` means "3 percent").
1516 "name": "A String", # The resource name of the metric descriptor.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001517 },
1518 ],
1519 "enums": [ # A list of all enum types included in this API service. Enums
1520 # referenced directly or indirectly by the `apis` are automatically
1521 # included. Enums which are not referenced but shall be included
1522 # should be listed here by name. Example:
1523 #
1524 # enums:
1525 # - name: google.someapi.v1.SomeEnum
1526 { # Enum type definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07001527 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001528 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1529 # protobuf element, like the file in which it is defined.
1530 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1531 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1532 },
Dan O'Mearadd494642020-05-01 07:42:23 -07001533 "options": [ # Protocol buffer options.
1534 { # A protocol buffer option, which can be attached to a message, field,
1535 # enumeration, etc.
1536 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1537 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1538 # For custom options, it should be the fully-qualified name. For example,
1539 # `"google.api.http"`.
1540 "value": { # The option's value packed in an Any message. If the value is a primitive,
1541 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1542 # should be used. If the value is an enum, it should be stored as an int32
1543 # value using the google.protobuf.Int32Value type.
1544 "a_key": "", # Properties of the object. Contains field @type with type URL.
1545 },
1546 },
1547 ],
1548 "name": "A String", # Enum type name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001549 "enumvalue": [ # Enum value definitions.
1550 { # Enum value definition.
1551 "options": [ # Protocol buffer options.
1552 { # A protocol buffer option, which can be attached to a message, field,
1553 # enumeration, etc.
1554 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1555 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1556 # For custom options, it should be the fully-qualified name. For example,
1557 # `"google.api.http"`.
1558 "value": { # The option's value packed in an Any message. If the value is a primitive,
1559 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1560 # should be used. If the value is an enum, it should be stored as an int32
1561 # value using the google.protobuf.Int32Value type.
1562 "a_key": "", # Properties of the object. Contains field @type with type URL.
1563 },
1564 },
1565 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001566 "number": 42, # Enum value number.
Dan O'Mearadd494642020-05-01 07:42:23 -07001567 "name": "A String", # Enum value name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001568 },
1569 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001570 },
1571 ],
1572 "types": [ # A list of all proto message types included in this API service.
1573 # Types referenced directly or indirectly by the `apis` are
1574 # automatically included. Messages which are not referenced but
1575 # shall be included, such as types used by the `google.protobuf.Any` type,
1576 # should be listed here by name. Example:
1577 #
1578 # types:
1579 # - name: google.protobuf.Int32
1580 { # A protocol buffer message type.
1581 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
1582 "A String",
1583 ],
1584 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001585 "fields": [ # The list of fields.
1586 { # A single field of a message type.
1587 "kind": "A String", # The field type.
1588 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
1589 # types. The first type has index 1; zero means the type is not in the list.
1590 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
1591 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1592 "name": "A String", # The field name.
1593 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
1594 "jsonName": "A String", # The field JSON name.
1595 "number": 42, # The field number.
1596 "cardinality": "A String", # The field cardinality.
1597 "options": [ # The protocol buffer options.
1598 { # A protocol buffer option, which can be attached to a message, field,
1599 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001600 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1601 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1602 # For custom options, it should be the fully-qualified name. For example,
1603 # `"google.api.http"`.
1604 "value": { # The option's value packed in an Any message. If the value is a primitive,
1605 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1606 # should be used. If the value is an enum, it should be stored as an int32
1607 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001608 "a_key": "", # Properties of the object. Contains field @type with type URL.
1609 },
1610 },
1611 ],
1612 "packed": True or False, # Whether to use alternative packed wire representation.
1613 },
1614 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001615 "syntax": "A String", # The source syntax.
1616 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1617 # protobuf element, like the file in which it is defined.
1618 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1619 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1620 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001621 "options": [ # The protocol buffer options.
1622 { # A protocol buffer option, which can be attached to a message, field,
1623 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001624 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1625 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1626 # For custom options, it should be the fully-qualified name. For example,
1627 # `"google.api.http"`.
1628 "value": { # The option's value packed in an Any message. If the value is a primitive,
1629 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1630 # should be used. If the value is an enum, it should be stored as an int32
1631 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001632 "a_key": "", # Properties of the object. Contains field @type with type URL.
1633 },
1634 },
1635 ],
1636 },
1637 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001638 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001639 #
1640 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001641 # producer and consumer projects. In the example, the `activity_history`
1642 # log is sent to both the producer and consumer projects, whereas the
1643 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001644 #
1645 # monitored_resources:
1646 # - type: library.googleapis.com/branch
1647 # labels:
1648 # - key: /city
1649 # description: The city where the library branch is located in.
1650 # - key: /name
1651 # description: The name of the branch.
1652 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001653 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001654 # labels:
1655 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001656 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001657 # logging:
1658 # producer_destinations:
1659 # - monitored_resource: library.googleapis.com/branch
1660 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001661 # - activity_history
1662 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001663 # consumer_destinations:
1664 # - monitored_resource: library.googleapis.com/branch
1665 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001666 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001667 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
1668 # There can be multiple producer destinations, each one must have a
1669 # different monitored resource type. A log can be used in at most
1670 # one producer destination.
1671 { # Configuration of a specific logging destination (the producer project
1672 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001673 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001674 # Service.monitored_resources section.
1675 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001676 # be defined in the Service.logs section. If the log name is
1677 # not a domain scoped name, it will be automatically prefixed with
1678 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001679 "A String",
1680 ],
1681 },
1682 ],
1683 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
1684 # There can be multiple consumer destinations, each one must have a
1685 # different monitored resource type. A log can be used in at most
1686 # one consumer destination.
1687 { # Configuration of a specific logging destination (the producer project
1688 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001689 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001690 # Service.monitored_resources section.
1691 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001692 # be defined in the Service.logs section. If the log name is
1693 # not a domain scoped name, it will be automatically prefixed with
1694 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001695 "A String",
1696 ],
1697 },
1698 ],
1699 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001700 "name": "A String", # The service name, which is a DNS-like logical identifier for the
1701 # service, such as `calendar.googleapis.com`. The service name
1702 # typically goes through DNS verification to make sure the owner
1703 # of the service also owns the DNS name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001704 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
1705 #
1706 # Example:
Dan O'Mearadd494642020-05-01 07:42:23 -07001707 # &lt;pre&gt;&lt;code&gt;documentation:
1708 # summary: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001709 # The Google Calendar API gives access
1710 # to most calendar features.
1711 # pages:
1712 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07001713 # content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001714 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07001715 # content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001716 # subpages;
1717 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07001718 # content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001719 # rules:
1720 # - selector: google.calendar.Calendar.Get
Dan O'Mearadd494642020-05-01 07:42:23 -07001721 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001722 # ...
1723 # - selector: google.calendar.Calendar.Put
Dan O'Mearadd494642020-05-01 07:42:23 -07001724 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001725 # ...
Dan O'Mearadd494642020-05-01 07:42:23 -07001726 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001727 # Documentation is provided in markdown syntax. In addition to
1728 # standard markdown features, definition lists, tables and fenced
1729 # code blocks are supported. Section headers can be provided and are
1730 # interpreted relative to the section nesting of the context where
1731 # a documentation fragment is embedded.
1732 #
1733 # Documentation from the IDL is merged with documentation defined
1734 # via the config at normalization time, where documentation provided
1735 # by config rules overrides IDL provided.
1736 #
1737 # A number of constructs specific to the API platform are supported
1738 # in documentation text.
1739 #
1740 # In order to reference a proto element, the following
1741 # notation can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07001742 # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001743 # To override the display text used for the link, this can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07001744 # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001745 # Text can be excluded from doc using the following notation:
Dan O'Mearadd494642020-05-01 07:42:23 -07001746 # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001747 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001748 # A few directives are available in documentation. Note that
1749 # directives must appear on a single line to be properly
1750 # identified. The `include` directive includes a markdown file from
1751 # an external source:
Dan O'Mearadd494642020-05-01 07:42:23 -07001752 # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001753 # The `resource_for` directive marks a message to be the resource of
1754 # a collection in REST view. If it is not specified, tools attempt
1755 # to infer the resource from the operations in a collection:
Dan O'Mearadd494642020-05-01 07:42:23 -07001756 # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001757 # The directive `suppress_warning` does not directly affect documentation
1758 # and is documented together with service config validation.
1759 "rules": [ # A list of documentation rules that apply to individual API elements.
1760 #
1761 # **NOTE:** All service configuration rules follow "last one wins" order.
1762 { # A documentation rule provides information about individual API elements.
1763 "description": "A String", # Description of the selected API(s).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001764 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
1765 # an element is marked as `deprecated`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001766 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
1767 # qualified name of the element which may end in "*", indicating a wildcard.
1768 # Wildcards are only allowed at the end and for a whole component of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001769 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
1770 # wildcard will match one or more components. To specify a default for all
1771 # applicable elements, the whole pattern "*" is used.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001772 },
1773 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001774 "documentationRootUrl": "A String", # The URL to the root of documentation.
Dan O'Mearadd494642020-05-01 07:42:23 -07001775 "summary": "A String", # A short summary of what the service does. Can only be provided by
1776 # plain text.
1777 "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
1778 # from the yaml file) is not suitable. This can be seen in any fully
1779 # specified service urls as well as sections that show a base that other
1780 # urls are relative to.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001781 "overview": "A String", # Declares a single overview page. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07001782 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001783 # summary: ...
Dan O'Mearadd494642020-05-01 07:42:23 -07001784 # overview: &amp;#40;== include overview.md ==&amp;#41;
1785 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001786 # This is a shortcut for the following declaration (using pages style):
Dan O'Mearadd494642020-05-01 07:42:23 -07001787 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001788 # summary: ...
1789 # pages:
1790 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07001791 # content: &amp;#40;== include overview.md ==&amp;#41;
1792 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001793 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001794 "pages": [ # The top level pages for the documentation set.
1795 { # Represents a documentation page. A page can contain subpages to represent
1796 # nested documentation set structure.
Dan O'Mearadd494642020-05-01 07:42:23 -07001797 "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
1798 # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001799 "subpages": [ # Subpages of this page. The order of subpages specified here will be
1800 # honored in the generated docset.
1801 # Object with schema name: Page
1802 ],
1803 "name": "A String", # The name of the page. It will be used as an identity of the page to
1804 # generate URI of the page, text of the link to this page in navigation,
1805 # etc. The full page name (start from the root page name to this page
1806 # concatenated with `.`) can be used as reference to the page in your
1807 # documentation. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07001808 # &lt;pre&gt;&lt;code&gt;pages:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001809 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07001810 # content: &amp;#40;== include tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001811 # subpages:
1812 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07001813 # content: &amp;#40;== include tutorial_java.md ==&amp;#41;
1814 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001815 # You can reference `Java` page using Markdown reference link syntax:
1816 # `Java`.
1817 },
1818 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001819 },
1820 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
1821 "sourceFiles": [ # All files used during config generation.
1822 {
1823 "a_key": "", # Properties of the object. Contains field @type with type URL.
1824 },
1825 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001826 },
1827 "systemTypes": [ # A list of all proto message types included in this API service.
1828 # It serves similar purpose as [google.api.Service.types], except that
1829 # these types are not needed by user-defined APIs. Therefore, they will not
1830 # show up in the generated discovery doc. This field should only be used
1831 # to define system APIs in ESF.
1832 { # A protocol buffer message type.
1833 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
1834 "A String",
1835 ],
1836 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001837 "fields": [ # The list of fields.
1838 { # A single field of a message type.
1839 "kind": "A String", # The field type.
1840 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
1841 # types. The first type has index 1; zero means the type is not in the list.
1842 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
1843 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1844 "name": "A String", # The field name.
1845 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
1846 "jsonName": "A String", # The field JSON name.
1847 "number": 42, # The field number.
1848 "cardinality": "A String", # The field cardinality.
1849 "options": [ # The protocol buffer options.
1850 { # A protocol buffer option, which can be attached to a message, field,
1851 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001852 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1853 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1854 # For custom options, it should be the fully-qualified name. For example,
1855 # `"google.api.http"`.
1856 "value": { # The option's value packed in an Any message. If the value is a primitive,
1857 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1858 # should be used. If the value is an enum, it should be stored as an int32
1859 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001860 "a_key": "", # Properties of the object. Contains field @type with type URL.
1861 },
1862 },
1863 ],
1864 "packed": True or False, # Whether to use alternative packed wire representation.
1865 },
1866 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001867 "syntax": "A String", # The source syntax.
1868 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1869 # protobuf element, like the file in which it is defined.
1870 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1871 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1872 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001873 "options": [ # The protocol buffer options.
1874 { # A protocol buffer option, which can be attached to a message, field,
1875 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001876 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1877 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1878 # For custom options, it should be the fully-qualified name. For example,
1879 # `"google.api.http"`.
1880 "value": { # The option's value packed in an Any message. If the value is a primitive,
1881 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1882 # should be used. If the value is an enum, it should be stored as an int32
1883 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001884 "a_key": "", # Properties of the object. Contains field @type with type URL.
1885 },
1886 },
1887 ],
1888 },
1889 ],
1890 "context": { # `Context` defines which contexts an API requests. # Context configuration.
1891 #
1892 # Example:
1893 #
1894 # context:
1895 # rules:
1896 # - selector: "*"
1897 # requested:
1898 # - google.rpc.context.ProjectContext
1899 # - google.rpc.context.OriginContext
1900 #
1901 # The above specifies that all methods in the API request
1902 # `google.rpc.context.ProjectContext` and
1903 # `google.rpc.context.OriginContext`.
1904 #
1905 # Available context types are defined in package
1906 # `google.rpc.context`.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001907 #
1908 # This also provides mechanism to whitelist any protobuf message extension that
Dan O'Mearadd494642020-05-01 07:42:23 -07001909 # can be sent in grpc metadata using “x-goog-ext-&lt;extension_id&gt;-bin” and
1910 # “x-goog-ext-&lt;extension_id&gt;-jspb” format. For example, list any service
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001911 # specific protobuf types that can appear in grpc metadata as follows in your
1912 # yaml file:
1913 #
1914 # Example:
1915 #
1916 # context:
1917 # rules:
1918 # - selector: "google.example.library.v1.LibraryService.CreateBook"
1919 # allowed_request_extensions:
1920 # - google.foo.v1.NewExtension
1921 # allowed_response_extensions:
1922 # - google.foo.v1.NewExtension
1923 #
1924 # You can also specify extension ID instead of fully qualified extension name
1925 # here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001926 "rules": [ # A list of RPC context rules that apply to individual API methods.
1927 #
1928 # **NOTE:** All service configuration rules follow "last one wins" order.
1929 { # A context rule provides information about the context for an individual API
1930 # element.
1931 "provided": [ # A list of full type names of provided contexts.
1932 "A String",
1933 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001934 "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
1935 # side channel from backend to client.
1936 "A String",
1937 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001938 "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
1939 # side channel from client to backend.
1940 "A String",
1941 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04001942 "requested": [ # A list of full type names of requested contexts.
1943 "A String",
1944 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07001945 "selector": "A String", # Selects the methods to which this rule applies.
1946 #
1947 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001948 },
1949 ],
1950 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001951 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
1952 # with the same name as the service is automatically generated to service all
1953 # defined APIs.
1954 { # `Endpoint` describes a network endpoint that serves a set of APIs.
1955 # A service may expose any number of endpoints, and all endpoints share the
1956 # same service configuration, such as quota configuration and monitoring
1957 # configuration.
1958 #
1959 # Example service configuration:
1960 #
1961 # name: library-example.googleapis.com
1962 # endpoints:
1963 # # Below entry makes 'google.example.library.v1.Library'
1964 # # API be served from endpoint address library-example.googleapis.com.
1965 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
1966 # # it to decide whether the subsequent cross-origin request is
1967 # # allowed to proceed.
1968 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001969 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001970 "allowCors": True or False, # Allowing
1971 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
1972 # cross-domain traffic, would allow the backends served from this endpoint to
1973 # receive and respond to HTTP OPTIONS requests. The response will be used by
1974 # the browser to determine whether the subsequent cross-origin request is
1975 # allowed to proceed.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001976 "target": "A String", # The specification of an Internet routable address of API frontend that will
1977 # handle requests to this [API
1978 # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
1979 # either a valid IPv4 address or a fully-qualified domain name. For example,
1980 # "8.8.8.8" or "myservice.appspot.com".
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001981 "features": [ # The list of features enabled on this endpoint.
1982 "A String",
1983 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001984 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07001985 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001986 # please specify multiple google.api.Endpoint for each of the intended
1987 # aliases.
Thomas Coffee2f245372017-03-27 10:39:26 -07001988 #
1989 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001990 "A String",
1991 ],
1992 },
1993 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001994}
1995
1996 x__xgafv: string, V1 error format.
1997 Allowed values
1998 1 - v1 error format
1999 2 - v2 error format
2000
2001Returns:
2002 An object of the form:
2003
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002004 { # `Service` is the root object of Google service configuration schema. It
2005 # describes basic information about a service, such as the name and the
2006 # title, and delegates other aspects to sub-sections. Each sub-section is
2007 # either a proto message or a repeated proto message that configures a
2008 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002009 #
2010 # Example:
2011 #
2012 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002013 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002014 # name: calendar.googleapis.com
2015 # title: Google Calendar API
2016 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002017 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002018 # authentication:
2019 # providers:
2020 # - id: google_calendar_auth
2021 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
2022 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002023 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002024 # - selector: "*"
2025 # requirements:
2026 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002027 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
2028 # service controller handles features like abuse, quota, billing, logging,
2029 # monitoring, etc.
2030 "environment": "A String", # The service control environment to use. If empty, no control plane
2031 # feature (like quota and billing) will be enabled.
2032 },
2033 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
2034 # by the Service.monitoring and Service.logging configurations.
2035 { # An object that describes the schema of a MonitoredResource object using a
2036 # type name and a set of labels. For example, the monitored resource
2037 # descriptor for Google Compute Engine VM instances has a type of
2038 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
2039 # `"zone"` to identify particular VM instances.
2040 #
2041 # Different APIs can support different monitored resource types. APIs generally
2042 # provide a `list` method that returns the monitored resource descriptors used
2043 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07002044 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
2045 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
2046 # without any article or other determiners. For example,
2047 # `"Google Cloud SQL Database"`.
Dan O'Mearadd494642020-05-01 07:42:23 -07002048 "description": "A String", # Optional. A detailed description of the monitored resource type that might
2049 # be used in documentation.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002050 "labels": [ # Required. A set of labels used to describe instances of this monitored
2051 # resource type. For example, an individual Google Cloud SQL database is
2052 # identified by values for the labels `"database_id"` and `"zone"`.
2053 { # A description of a label.
2054 "valueType": "A String", # The type of data that can be assigned to the label.
2055 "description": "A String", # A human-readable description for the label.
2056 "key": "A String", # The label key.
2057 },
2058 ],
2059 "launchStage": "A String", # Optional. The launch stage of the monitored resource definition.
2060 "type": "A String", # Required. The monitored resource type. For example, the type
2061 # `"cloudsql_database"` represents databases in Google Cloud SQL.
2062 # The maximum length of this value is 256 characters.
Dan O'Mearadd494642020-05-01 07:42:23 -07002063 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
2064 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
2065 # {type} is the value of the `type` field in this object and
2066 # {project_id} is a project ID that provides API-specific context for
2067 # accessing the type. APIs that do not use project information can use the
2068 # resource name format `"monitoredResourceDescriptors/{type}"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002069 },
2070 ],
2071 "logs": [ # Defines the logs used by this service.
2072 { # A description of a log type. Example in YAML format:
2073 #
2074 # - name: library.googleapis.com/activity_history
2075 # description: The history of borrowing and returning library items.
2076 # display_name: Activity
2077 # labels:
2078 # - key: /customer_id
2079 # description: Identifier of a library customer
2080 "labels": [ # The set of labels that are available to describe a specific log entry.
2081 # Runtime requests that contain labels not specified here are
2082 # considered invalid.
2083 { # A description of a label.
2084 "valueType": "A String", # The type of data that can be assigned to the label.
2085 "description": "A String", # A human-readable description for the label.
2086 "key": "A String", # The label key.
2087 },
2088 ],
2089 "displayName": "A String", # The human-readable name for this log. This information appears on
2090 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002091 "name": "A String", # The name of the log. It must be less than 512 characters long and can
2092 # include the following characters: upper- and lower-case alphanumeric
2093 # characters [A-Za-z0-9], and punctuation characters including
2094 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07002095 "description": "A String", # A human-readable description of this log. This information appears in
2096 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002097 },
2098 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07002099 "systemParameters": { # ### System parameter configuration # System parameter configuration.
2100 #
2101 # A system parameter is a special kind of parameter defined by the API
2102 # system, not by an individual API. It is typically mapped to an HTTP header
2103 # and/or a URL query parameter. This configuration specifies which methods
2104 # change the names of the system parameters.
2105 "rules": [ # Define system parameters.
2106 #
2107 # The parameters defined here will override the default parameters
2108 # implemented by the system. If this field is missing from the service
2109 # config, default system parameters will be used. Default system parameters
2110 # and names is implementation-dependent.
2111 #
2112 # Example: define api key for all methods
2113 #
2114 # system_parameters
2115 # rules:
2116 # - selector: "*"
2117 # parameters:
2118 # - name: api_key
2119 # url_query_parameter: api_key
2120 #
2121 #
2122 # Example: define 2 api key names for a specific method.
2123 #
2124 # system_parameters
2125 # rules:
2126 # - selector: "/ListShelves"
2127 # parameters:
2128 # - name: api_key
2129 # http_header: Api-Key1
2130 # - name: api_key
2131 # http_header: Api-Key2
2132 #
2133 # **NOTE:** All service configuration rules follow "last one wins" order.
2134 { # Define a system parameter rule mapping system parameter definitions to
2135 # methods.
2136 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
2137 # For a given method call, only one of them should be used. If multiple
2138 # names are used the behavior is implementation-dependent.
2139 # If none of the specified names are present the behavior is
2140 # parameter-dependent.
2141 { # Define a parameter's name and location. The parameter may be passed as either
2142 # an HTTP header or a URL query parameter, and if both are passed the behavior
2143 # is implementation-dependent.
2144 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
2145 # sensitive.
2146 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
2147 # insensitive.
2148 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
2149 },
2150 ],
2151 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
2152 # methods in all APIs.
2153 #
2154 # Refer to selector for syntax details.
2155 },
2156 ],
2157 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002158 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
2159 "rules": [ # A list of API backend rules that apply to individual API methods.
2160 #
2161 # **NOTE:** All service configuration rules follow "last one wins" order.
2162 { # A backend rule provides configuration for an individual API element.
Dan O'Mearadd494642020-05-01 07:42:23 -07002163 "jwtAudience": "A String", # The JWT audience is used when generating a JWT ID token for the backend.
2164 # This ID token will be added in the HTTP "authorization" header, and sent
2165 # to the backend.
2166 "protocol": "A String", # The protocol used for sending a request to the backend.
2167 # The supported values are "http/1.1" and "h2".
2168 #
2169 # The default value is inferred from the scheme in the
2170 # address field:
2171 #
2172 # SCHEME PROTOCOL
2173 # http:// http/1.1
2174 # https:// http/1.1
2175 # grpc:// h2
2176 # grpcs:// h2
2177 #
2178 # For secure HTTP backends (https://) that support HTTP/2, set this field
2179 # to "h2" for improved performance.
2180 #
2181 # Configuring this field to non-default values is only supported for secure
2182 # HTTP backends. This field will be ignored for all other backends.
2183 #
2184 # See
2185 # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
2186 # for more details on the supported values.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002187 "pathTranslation": "A String",
2188 "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
2189 # value lower than this will be rejected.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002190 "selector": "A String", # Selects the methods to which this rule applies.
2191 #
2192 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002193 "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running
2194 # operation. The default is no deadline.
Dan O'Mearadd494642020-05-01 07:42:23 -07002195 "deadline": 3.14, # The number of seconds to wait for a response from a request. The default
2196 # varies based on the request protocol and deployment environment.
2197 "disableAuth": True or False, # When disable_auth is true, a JWT ID token won't be generated and the
2198 # original "Authorization" HTTP header will be preserved. If the header is
2199 # used to carry the original token and is expected by the backend, this
2200 # field must be set to true to preserve the header.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002201 "address": "A String", # The address of the API backend.
Dan O'Mearadd494642020-05-01 07:42:23 -07002202 #
2203 # The scheme is used to determine the backend protocol and security.
2204 # The following schemes are accepted:
2205 #
2206 # SCHEME PROTOCOL SECURITY
2207 # http:// HTTP None
2208 # https:// HTTP TLS
2209 # grpc:// gRPC None
2210 # grpcs:// gRPC TLS
2211 #
2212 # It is recommended to explicitly include a scheme. Leaving out the scheme
2213 # may cause constrasting behaviors across platforms.
2214 #
2215 # If the port is unspecified, the default is:
2216 # - 80 for schemes without TLS
2217 # - 443 for schemes with TLS
2218 #
2219 # For HTTP backends, use protocol
2220 # to specify the protocol version.
2221 "renameTo": "A String", # Unimplemented. Do not use.
2222 #
2223 # The new name the selected proto elements should be renamed to.
2224 #
2225 # The package, the service and the method can all be renamed.
2226 # The backend server should implement the renamed proto. However, clients
2227 # should call the original method, and ESF routes the traffic to the renamed
2228 # method.
2229 #
2230 # HTTP clients should call the URL mapped to the original method.
2231 # gRPC and Stubby clients should call the original method with package name.
2232 #
2233 # For legacy reasons, ESF allows Stubby clients to call with the
2234 # short name (without the package name). However, for API Versioning(or
2235 # multiple methods mapped to the same short name), all Stubby clients must
2236 # call the method's full name with the package name, otherwise the first one
2237 # (selector) wins.
2238 #
2239 # If this `rename_to` is specified with a trailing `*`, the `selector` must
2240 # be specified with a trailing `*` as well. The all element short names
2241 # matched by the `*` in the selector will be kept in the `rename_to`.
2242 #
2243 # For example,
2244 # rename_rules:
2245 # - selector: |-
2246 # google.example.library.v1.*
2247 # rename_to: google.example.library.*
2248 #
2249 # The selector matches `google.example.library.v1.Library.CreateShelf` and
2250 # `google.example.library.v1.Library.CreateBook`, they will be renamed to
2251 # `google.example.library.Library.CreateShelf` and
2252 # `google.example.library.Library.CreateBook`. It essentially renames the
2253 # proto package name section of the matched proto service and methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002254 },
2255 ],
2256 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002257 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002258 #
2259 # The example below shows how to configure monitored resources and metrics
2260 # for monitoring. In the example, a monitored resource and two metrics are
2261 # defined. The `library.googleapis.com/book/returned_count` metric is sent
2262 # to both producer and consumer projects, whereas the
2263 # `library.googleapis.com/book/overdue_count` metric is only sent to the
2264 # consumer project.
2265 #
2266 # monitored_resources:
2267 # - type: library.googleapis.com/branch
2268 # labels:
2269 # - key: /city
2270 # description: The city where the library branch is located in.
2271 # - key: /name
2272 # description: The name of the branch.
2273 # metrics:
2274 # - name: library.googleapis.com/book/returned_count
2275 # metric_kind: DELTA
2276 # value_type: INT64
2277 # labels:
2278 # - key: /customer_id
2279 # - name: library.googleapis.com/book/overdue_count
2280 # metric_kind: GAUGE
2281 # value_type: INT64
2282 # labels:
2283 # - key: /customer_id
2284 # monitoring:
2285 # producer_destinations:
2286 # - monitored_resource: library.googleapis.com/branch
2287 # metrics:
2288 # - library.googleapis.com/book/returned_count
2289 # consumer_destinations:
2290 # - monitored_resource: library.googleapis.com/branch
2291 # metrics:
2292 # - library.googleapis.com/book/returned_count
2293 # - library.googleapis.com/book/overdue_count
2294 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002295 # There can be multiple producer destinations. A monitored resouce type may
2296 # appear in multiple monitoring destinations if different aggregations are
2297 # needed for different sets of metrics associated with that monitored
2298 # resource type. A monitored resource and metric pair may only be used once
2299 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002300 { # Configuration of a specific monitoring destination (the producer project
2301 # or the consumer project).
2302 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
2303 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002304 "metrics": [ # Types of the metrics to report to this monitoring destination.
2305 # Each type must be defined in Service.metrics section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002306 "A String",
2307 ],
2308 },
2309 ],
2310 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002311 # There can be multiple consumer destinations. A monitored resouce type may
2312 # appear in multiple monitoring destinations if different aggregations are
2313 # needed for different sets of metrics associated with that monitored
2314 # resource type. A monitored resource and metric pair may only be used once
2315 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002316 { # Configuration of a specific monitoring destination (the producer project
2317 # or the consumer project).
2318 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
2319 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002320 "metrics": [ # Types of the metrics to report to this monitoring destination.
2321 # Each type must be defined in Service.metrics section.
2322 "A String",
2323 ],
2324 },
2325 ],
2326 },
2327 "billing": { # Billing related configuration of the service. # Billing configuration.
2328 #
2329 # The following example shows how to configure monitored resources and metrics
2330 # for billing:
2331 #
2332 # monitored_resources:
2333 # - type: library.googleapis.com/branch
2334 # labels:
2335 # - key: /city
2336 # description: The city where the library branch is located in.
2337 # - key: /name
2338 # description: The name of the branch.
2339 # metrics:
2340 # - name: library.googleapis.com/book/borrowed_count
2341 # metric_kind: DELTA
2342 # value_type: INT64
2343 # billing:
2344 # consumer_destinations:
2345 # - monitored_resource: library.googleapis.com/branch
2346 # metrics:
2347 # - library.googleapis.com/book/borrowed_count
2348 "consumerDestinations": [ # Billing configurations for sending metrics to the consumer project.
2349 # There can be multiple consumer destinations per service, each one must have
2350 # a different monitored resource type. A metric can be used in at most
2351 # one consumer destination.
2352 { # Configuration of a specific billing destination (Currently only support
2353 # bill against consumer project).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002354 "metrics": [ # Names of the metrics to report to this billing destination.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002355 # Each name must be defined in Service.metrics section.
2356 "A String",
2357 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07002358 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
2359 # Service.monitored_resources section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002360 },
2361 ],
2362 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002363 "title": "A String", # The product title for this service.
Dan O'Mearadd494642020-05-01 07:42:23 -07002364 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
2365 # by the client for tracking purpose. Must be no longer than 63 characters
2366 # and only lower case letters, digits, '.', '_' and '-' are allowed. If
2367 # empty, the server may choose to generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002368 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
2369 #
2370 # Example for an API targeted for external use:
2371 #
2372 # name: calendar.googleapis.com
2373 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002374 # providers:
2375 # - id: google_calendar_auth
2376 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
2377 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002378 # rules:
2379 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002380 # requirements:
2381 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002382 "rules": [ # A list of authentication rules that apply to individual API methods.
2383 #
2384 # **NOTE:** All service configuration rules follow "last one wins" order.
2385 { # Authentication rules for the service.
2386 #
2387 # By default, if a method has any authentication requirements, every request
2388 # must include a valid credential matching one of the requirements.
2389 # It's an error to include more than one kind of credential in a single
2390 # request.
2391 #
2392 # If a method doesn't have any auth requirements, request credentials will be
2393 # ignored.
2394 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
2395 # there are scopes defined for "Read-only access to Google Calendar" and
2396 # "Access to Cloud Platform". Users can consent to a scope for an application,
2397 # giving it permission to access that data on their behalf.
2398 #
2399 # OAuth scope specifications should be fairly coarse grained; a user will need
2400 # to see and understand the text description of what your scope means.
2401 #
2402 # In most cases: use one or at most two OAuth scopes for an entire family of
2403 # products. If your product has multiple APIs, you should probably be sharing
2404 # the OAuth scope across all of those APIs.
2405 #
2406 # When you need finer grained OAuth consent screens: talk with your product
2407 # management about how developers will use them in practice.
2408 #
2409 # Please note that even though each of the canonical scopes is enough for a
2410 # request to be accepted and passed to the backend, a request can still fail
2411 # due to the backend requiring additional scopes or permissions.
2412 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
2413 # OAuth token containing any of these scopes will be accepted.
2414 #
2415 # Example:
2416 #
2417 # canonical_scopes: https://www.googleapis.com/auth/calendar,
2418 # https://www.googleapis.com/auth/calendar.read
2419 },
2420 "requirements": [ # Requirements for additional authentication providers.
2421 { # User-defined authentication requirements, including support for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002422 # [JSON Web Token
2423 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002424 "providerId": "A String", # id from authentication provider.
2425 #
2426 # Example:
2427 #
2428 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002429 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
2430 # implemented and accepted in all the runtime components.
2431 #
2432 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002433 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
2434 # that are allowed to access. A JWT containing any of these audiences will
2435 # be accepted. When this setting is absent, only JWTs with audience
2436 # "https://Service_name/API_name"
2437 # will be accepted. For example, if no audiences are in the setting,
2438 # LibraryService API will only accept JWTs with the following audience
2439 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
2440 #
2441 # Example:
2442 #
2443 # audiences: bookstore_android.apps.googleusercontent.com,
2444 # bookstore_web.apps.googleusercontent.com
2445 },
2446 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07002447 "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002448 "selector": "A String", # Selects the methods to which this rule applies.
2449 #
2450 # Refer to selector for syntax details.
2451 },
2452 ],
2453 "providers": [ # Defines a set of authentication providers that a service supports.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002454 { # Configuration for an authentication provider, including support for
2455 # [JSON Web Token
2456 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Dan O'Mearadd494642020-05-01 07:42:23 -07002457 "jwtLocations": [ # Defines the locations to extract the JWT.
2458 #
2459 # JWT locations can be either from HTTP headers or URL query parameters.
2460 # The rule is that the first match wins. The checking order is: checking
2461 # all headers first, then URL query parameters.
2462 #
2463 # If not specified, default to use following 3 locations:
2464 # 1) Authorization: Bearer
2465 # 2) x-goog-iap-jwt-assertion
2466 # 3) access_token query parameter
2467 #
2468 # Default locations can be specified as followings:
2469 # jwt_locations:
2470 # - header: Authorization
2471 # value_prefix: "Bearer "
2472 # - header: x-goog-iap-jwt-assertion
2473 # - query: access_token
2474 { # Specifies a location to extract JWT from an API request.
2475 "query": "A String", # Specifies URL query parameter name to extract JWT token.
2476 "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
2477 # Only applies to "in" header type. Must be empty for "in" query type.
2478 # If not empty, the header value has to match (case sensitive) this prefix.
2479 # If not matched, JWT will not be extracted. If matched, JWT will be
2480 # extracted after the prefix is removed.
2481 #
2482 # For example, for "Authorization: Bearer {JWT}",
2483 # value_prefix="Bearer " with a space at the end.
2484 "header": "A String", # Specifies HTTP header name to extract JWT token.
2485 },
2486 ],
2487 "audiences": "A String", # The list of JWT
2488 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
2489 # that are allowed to access. A JWT containing any of these audiences will
2490 # be accepted. When this setting is absent, JWTs with audiences:
2491 # - "https://[service.name]/[google.protobuf.Api.name]"
2492 # - "https://[service.name]/"
2493 # will be accepted.
2494 # For example, if no audiences are in the setting, LibraryService API will
2495 # accept JWTs with the following audiences:
2496 # -
2497 # https://library-example.googleapis.com/google.example.library.v1.LibraryService
2498 # - https://library-example.googleapis.com/
2499 #
2500 # Example:
2501 #
2502 # audiences: bookstore_android.apps.googleusercontent.com,
2503 # bookstore_web.apps.googleusercontent.com
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002504 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
2505 # [OpenID
2506 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
2507 # Optional if the key set document:
2508 # - can be retrieved from
2509 # [OpenID
2510 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
2511 # the issuer.
2512 # - can be inferred from the email domain of the issuer (e.g. a Google
2513 # service account).
2514 #
2515 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002516 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
2517 # `AuthRequirement.provider_id`.
2518 #
2519 # Example: "bookstore_auth".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002520 "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
2521 # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002522 "issuer": "A String", # Identifies the principal that issued the JWT. See
2523 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
2524 # Usually a URL or an email address.
2525 #
2526 # Example: https://securetoken.google.com
2527 # Example: 1234567-compute@developer.gserviceaccount.com
2528 },
2529 ],
2530 },
2531 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
2532 "rules": [ # A list of usage rules that apply to individual API methods.
2533 #
2534 # **NOTE:** All service configuration rules follow "last one wins" order.
2535 { # Usage configuration rules for the service.
2536 #
2537 # NOTE: Under development.
2538 #
2539 #
2540 # Use this rule to configure unregistered calls for the service. Unregistered
2541 # calls are calls that do not contain consumer project identity.
2542 # (Example: calls that do not contain an API key).
2543 # By default, API methods do not allow unregistered calls, and each method call
2544 # must be identified by a consumer project identity. Use this rule to
2545 # allow/disallow unregistered calls.
2546 #
2547 # Example of an API that wants to allow unregistered calls for entire service.
2548 #
2549 # usage:
2550 # rules:
2551 # - selector: "*"
2552 # allow_unregistered_calls: true
2553 #
2554 # Example of a method that wants to allow unregistered calls.
2555 #
2556 # usage:
2557 # rules:
2558 # - selector: "google.example.library.v1.LibraryService.CreateBook"
2559 # allow_unregistered_calls: true
Dan O'Mearadd494642020-05-01 07:42:23 -07002560 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
2561 # methods in all APIs.
2562 #
2563 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002564 "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
2565 # plane features, such as quota and billing, will not be available.
2566 # This flag is used by Google Cloud Endpoints to bypass checks for internal
2567 # methods, such as service health check methods.
2568 "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
2569 # that don't identify any user or application.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002570 },
2571 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07002572 "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
2573 #
2574 #
2575 # Use this field to configure per-product per-project service identity.
2576 # Example of a service identity configuration.
2577 #
2578 # usage:
2579 # service_identity:
2580 # - service_account_parent: "projects/123456789"
2581 # display_name: "Cloud XXX Service Agent"
2582 # description: "Used as the identity of Cloud XXX to access resources"
2583 "displayName": "A String", # Optional. A user-specified name for the service account.
2584 # Must be less than or equal to 100 UTF-8 bytes.
2585 "description": "A String", # Optional. A user-specified opaque description of the service account.
2586 # Must be less than or equal to 256 UTF-8 bytes.
2587 "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
2588 #
2589 # An example name would be:
2590 # `projects/123456789`
2591 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002592 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
2593 # service producer.
2594 #
2595 # Google Service Management currently only supports
2596 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
2597 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
2598 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
2599 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002600 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
Dan O'Mearadd494642020-05-01 07:42:23 -07002601 # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002602 # for example 'serviceusage.googleapis.com/billing-enabled'.
2603 "A String",
2604 ],
2605 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002606 "configVersion": 42, # The semantic version of the service configuration. The config version
2607 # affects the interpretation of the service configuration. For example,
2608 # certain features are enabled by default for certain config versions.
Dan O'Mearadd494642020-05-01 07:42:23 -07002609 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002610 # The latest config version is `3`.
2611 "producerProjectId": "A String", # The Google project that owns this service.
2612 "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002613 # HttpRule, each specifying the mapping of an RPC method
2614 # to one or more HTTP REST API methods.
2615 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
2616 #
2617 # **NOTE:** All service configuration rules follow "last one wins" order.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002618 { # # gRPC Transcoding
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002619 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002620 # gRPC Transcoding is a feature for mapping between a gRPC method and one or
2621 # more HTTP REST endpoints. It allows developers to build a single API service
2622 # that supports both gRPC APIs and REST APIs. Many systems, including [Google
2623 # APIs](https://github.com/googleapis/googleapis),
2624 # [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
2625 # Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
2626 # and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
2627 # and use it for large scale production services.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002628 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002629 # `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
2630 # how different portions of the gRPC request message are mapped to the URL
2631 # path, URL query parameters, and HTTP request body. It also controls how the
2632 # gRPC response message is mapped to the HTTP response body. `HttpRule` is
2633 # typically specified as an `google.api.http` annotation on the gRPC method.
2634 #
2635 # Each mapping specifies a URL path template and an HTTP method. The path
2636 # template may refer to one or more fields in the gRPC request message, as long
2637 # as each field is a non-repeated field with a primitive (non-message) type.
2638 # The path template controls how fields of the request message are mapped to
2639 # the URL path.
2640 #
2641 # Example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002642 #
2643 # service Messaging {
2644 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002645 # option (google.api.http) = {
2646 # get: "/v1/{name=messages/*}"
2647 # };
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002648 # }
2649 # }
2650 # message GetMessageRequest {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002651 # string name = 1; // Mapped to URL path.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002652 # }
2653 # message Message {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002654 # string text = 1; // The resource content.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002655 # }
2656 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002657 # This enables an HTTP REST to gRPC mapping as below:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002658 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002659 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002660 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002661 # `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002662 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002663 # Any fields in the request message which are not bound by the path template
2664 # automatically become HTTP query parameters if there is no HTTP request body.
2665 # For example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002666 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04002667 # service Messaging {
2668 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002669 # option (google.api.http) = {
2670 # get:"/v1/messages/{message_id}"
2671 # };
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04002672 # }
2673 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002674 # message GetMessageRequest {
2675 # message SubMessage {
2676 # string subfield = 1;
2677 # }
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002678 # string message_id = 1; // Mapped to URL path.
2679 # int64 revision = 2; // Mapped to URL query parameter `revision`.
2680 # SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002681 # }
2682 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002683 # This enables a HTTP JSON to RPC mapping as below:
2684 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002685 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002686 # -----|-----
Dan O'Mearadd494642020-05-01 07:42:23 -07002687 # `GET /v1/messages/123456?revision=2&amp;sub.subfield=foo` |
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002688 # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
2689 # "foo"))`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002690 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002691 # Note that fields which are mapped to URL query parameters must have a
2692 # primitive type or a repeated primitive type or a non-repeated message type.
2693 # In the case of a repeated type, the parameter can be repeated in the URL
Dan O'Mearadd494642020-05-01 07:42:23 -07002694 # as `...?param=A&amp;param=B`. In the case of a message type, each field of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002695 # message is mapped to a separate parameter, such as
Dan O'Mearadd494642020-05-01 07:42:23 -07002696 # `...?foo.a=A&amp;foo.b=B&amp;foo.c=C`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002697 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002698 # For HTTP methods that allow a request body, the `body` field
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002699 # specifies the mapping. Consider a REST update method on the
2700 # message resource collection:
2701 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002702 # service Messaging {
2703 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
2704 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002705 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002706 # body: "message"
2707 # };
2708 # }
2709 # }
2710 # message UpdateMessageRequest {
2711 # string message_id = 1; // mapped to the URL
2712 # Message message = 2; // mapped to the body
2713 # }
2714 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002715 # The following HTTP JSON to RPC mapping is enabled, where the
2716 # representation of the JSON in the request body is determined by
2717 # protos JSON encoding:
2718 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002719 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002720 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002721 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
2722 # "123456" message { text: "Hi!" })`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002723 #
2724 # The special name `*` can be used in the body mapping to define that
2725 # every field not bound by the path template should be mapped to the
2726 # request body. This enables the following alternative definition of
2727 # the update method:
2728 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002729 # service Messaging {
2730 # rpc UpdateMessage(Message) returns (Message) {
2731 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002732 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002733 # body: "*"
2734 # };
2735 # }
2736 # }
2737 # message Message {
2738 # string message_id = 1;
2739 # string text = 2;
2740 # }
2741 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002742 #
2743 # The following HTTP JSON to RPC mapping is enabled:
2744 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002745 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002746 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002747 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
2748 # "123456" text: "Hi!")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002749 #
2750 # Note that when using `*` in the body mapping, it is not possible to
2751 # have HTTP parameters, as all fields not bound by the path end in
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002752 # the body. This makes this option more rarely used in practice when
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002753 # defining REST APIs. The common usage of `*` is in custom methods
2754 # which don't use the URL at all for transferring data.
2755 #
2756 # It is possible to define multiple HTTP methods for one RPC by using
2757 # the `additional_bindings` option. Example:
2758 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002759 # service Messaging {
2760 # rpc GetMessage(GetMessageRequest) returns (Message) {
2761 # option (google.api.http) = {
2762 # get: "/v1/messages/{message_id}"
2763 # additional_bindings {
2764 # get: "/v1/users/{user_id}/messages/{message_id}"
2765 # }
2766 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002767 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002768 # }
2769 # message GetMessageRequest {
2770 # string message_id = 1;
2771 # string user_id = 2;
2772 # }
2773 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002774 # This enables the following two alternative HTTP JSON to RPC mappings:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002775 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002776 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002777 # -----|-----
2778 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002779 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
2780 # "123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002781 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002782 # ## Rules for HTTP mapping
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002783 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002784 # 1. Leaf request fields (recursive expansion nested messages in the request
2785 # message) are classified into three categories:
2786 # - Fields referred by the path template. They are passed via the URL path.
2787 # - Fields referred by the HttpRule.body. They are passed via the HTTP
2788 # request body.
2789 # - All other fields are passed via the URL query parameters, and the
2790 # parameter name is the field path in the request message. A repeated
2791 # field can be represented as multiple query parameters under the same
2792 # name.
2793 # 2. If HttpRule.body is "*", there is no URL query parameter, all fields
2794 # are passed via URL path and HTTP request body.
2795 # 3. If HttpRule.body is omitted, there is no HTTP request body, all
2796 # fields are passed via URL path and URL query parameters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002797 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002798 # ### Path template syntax
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002799 #
2800 # Template = "/" Segments [ Verb ] ;
2801 # Segments = Segment { "/" Segment } ;
2802 # Segment = "*" | "**" | LITERAL | Variable ;
2803 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
2804 # FieldPath = IDENT { "." IDENT } ;
2805 # Verb = ":" LITERAL ;
2806 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002807 # The syntax `*` matches a single URL path segment. The syntax `**` matches
2808 # zero or more URL path segments, which must be the last part of the URL path
2809 # except the `Verb`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002810 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002811 # The syntax `Variable` matches part of the URL path as specified by its
2812 # template. A variable template must not contain other variables. If a variable
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002813 # matches a single path segment, its template may be omitted, e.g. `{var}`
2814 # is equivalent to `{var=*}`.
2815 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002816 # The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
2817 # contains any reserved character, such characters should be percent-encoded
2818 # before the matching.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002819 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002820 # If a variable contains exactly one path segment, such as `"{var}"` or
2821 # `"{var=*}"`, when such a variable is expanded into a URL path on the client
2822 # side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
2823 # server side does the reverse decoding. Such variables show up in the
2824 # [Discovery
2825 # Document](https://developers.google.com/discovery/v1/reference/apis) as
2826 # `{var}`.
2827 #
2828 # If a variable contains multiple path segments, such as `"{var=foo/*}"`
2829 # or `"{var=**}"`, when such a variable is expanded into a URL path on the
2830 # client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
2831 # The server side does the reverse decoding, except "%2F" and "%2f" are left
2832 # unchanged. Such variables show up in the
2833 # [Discovery
2834 # Document](https://developers.google.com/discovery/v1/reference/apis) as
2835 # `{+var}`.
2836 #
2837 # ## Using gRPC API Service Configuration
2838 #
2839 # gRPC API Service Configuration (service config) is a configuration language
2840 # for configuring a gRPC service to become a user-facing product. The
2841 # service config is simply the YAML representation of the `google.api.Service`
2842 # proto message.
2843 #
2844 # As an alternative to annotating your proto file, you can configure gRPC
2845 # transcoding in your service config YAML files. You do this by specifying a
2846 # `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
2847 # effect as the proto annotation. This can be particularly useful if you
2848 # have a proto that is reused in multiple services. Note that any transcoding
2849 # specified in the service config will override any matching transcoding
2850 # configuration in the proto.
2851 #
2852 # Example:
2853 #
2854 # http:
2855 # rules:
2856 # # Selects a gRPC method and applies HttpRule to it.
2857 # - selector: example.v1.Messaging.GetMessage
2858 # get: /v1/messages/{message_id}/{sub.subfield}
2859 #
2860 # ## Special notes
2861 #
2862 # When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
2863 # proto to JSON conversion must follow the [proto3
2864 # specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
2865 #
2866 # While the single segment variable follows the semantics of
2867 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
2868 # Expansion, the multi segment variable **does not** follow RFC 6570 Section
2869 # 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
2870 # does not expand special characters like `?` and `#`, which would lead
2871 # to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
2872 # for multi segment variables.
2873 #
2874 # The path variables **must not** refer to any repeated or mapped field,
2875 # because client libraries are not capable of handling such variable expansion.
2876 #
2877 # The path variables **must not** capture the leading "/" character. The reason
2878 # is that the most common use case "{var}" does not capture the leading "/"
2879 # character. For consistency, all path variables must share the same behavior.
2880 #
2881 # Repeated message fields must not be mapped to URL query parameters, because
2882 # no client library can support such complicated mapping.
2883 #
2884 # If an API needs to use a JSON array for request or response body, it can map
2885 # the request or response body to a repeated field. However, some gRPC
2886 # Transcoding implementations may not support this feature.
2887 "body": "A String", # The name of the request field whose value is mapped to the HTTP request
2888 # body, or `*` for mapping all request fields not captured by the path
2889 # pattern to the HTTP body, or omitted for not having any HTTP request body.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04002890 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002891 # NOTE: the referred field must be present at the top-level of the request
2892 # message type.
Dan O'Mearadd494642020-05-01 07:42:23 -07002893 "get": "A String", # Maps to HTTP GET. Used for listing and getting information about
2894 # resources.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002895 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
2896 # not contain an `additional_bindings` field themselves (that is,
2897 # the nesting may only be one level deep).
2898 # Object with schema name: HttpRule
2899 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07002900 "selector": "A String", # Selects a method to which this rule applies.
2901 #
2902 # Refer to selector for syntax details.
2903 "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP
2904 # response body. When omitted, the entire response message will be used
2905 # as the HTTP response body.
2906 #
2907 # NOTE: The referred field must be present at the top-level of the response
2908 # message type.
2909 "allowHalfDuplex": True or False, # When this flag is set to true, HTTP requests will be allowed to invoke a
2910 # half-duplex streaming method.
2911 "put": "A String", # Maps to HTTP PUT. Used for replacing a resource.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002912 "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource.
Dan O'Mearadd494642020-05-01 07:42:23 -07002913 "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002914 "custom": { # A custom pattern is used for defining custom HTTP verb. # The custom pattern is used for specifying an HTTP method that is not
2915 # included in the `pattern` field, such as HEAD, or "*" to leave the
2916 # HTTP method unspecified for this rule. The wild-card rule is useful
2917 # for services that provide content to Web (HTML) clients.
Thomas Coffee2f245372017-03-27 10:39:26 -07002918 "path": "A String", # The path matched by this custom verb.
2919 "kind": "A String", # The name of this custom HTTP verb.
2920 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002921 "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002922 },
2923 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002924 "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parameters will be fully URI-decoded except in
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04002925 # cases of single segment matches in reserved expansion, where "%2F" will be
2926 # left encoded.
2927 #
2928 # The default behavior is to not decode RFC 6570 reserved characters in multi
2929 # segment matches.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002930 },
2931 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
2932 # of the google.protobuf.Api needs to be provided by the configuration
2933 # author, as the remaining fields will be derived from the IDL during the
2934 # normalization process. It is an error to specify an API interface here
2935 # which cannot be resolved against the associated IDL files.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002936 { # Api is a light-weight descriptor for an API Interface.
2937 #
2938 # Interfaces are also described as "protocol buffer services" in some contexts,
2939 # such as by the "service" keyword in a .proto file, but they are different
2940 # from API Services, which represent a concrete implementation of an interface
2941 # as opposed to simply a description of methods and bindings. They are also
2942 # sometimes simply referred to as "APIs" in other contexts, such as the name of
2943 # this message itself. See https://cloud.google.com/apis/design/glossary for
2944 # detailed terminology.
Dan O'Mearadd494642020-05-01 07:42:23 -07002945 "name": "A String", # The fully qualified name of this interface, including package name
2946 # followed by the interface's simple name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002947 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
2948 # message.
2949 # protobuf element, like the file in which it is defined.
2950 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
2951 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2952 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002953 "mixins": [ # Included interfaces. See Mixin.
2954 { # Declares an API Interface to be included in this interface. The including
2955 # interface must redeclare all the methods from the included interface, but
2956 # documentation and options are inherited as follows:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002957 #
2958 # - If after comment and whitespace stripping, the documentation
2959 # string of the redeclared method is empty, it will be inherited
2960 # from the original method.
2961 #
2962 # - Each annotation belonging to the service config (http,
2963 # visibility) which is not set in the redeclared method will be
2964 # inherited.
2965 #
2966 # - If an http annotation is inherited, the path pattern will be
2967 # modified as follows. Any version prefix will be replaced by the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07002968 # version of the including interface plus the root path if
2969 # specified.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002970 #
2971 # Example of a simple mixin:
2972 #
2973 # package google.acl.v1;
2974 # service AccessControl {
2975 # // Get the underlying ACL object.
2976 # rpc GetAcl(GetAclRequest) returns (Acl) {
2977 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
2978 # }
2979 # }
2980 #
2981 # package google.storage.v2;
2982 # service Storage {
2983 # // rpc GetAcl(GetAclRequest) returns (Acl);
2984 #
2985 # // Get a data record.
2986 # rpc GetData(GetDataRequest) returns (Data) {
2987 # option (google.api.http).get = "/v2/{resource=**}";
2988 # }
2989 # }
2990 #
2991 # Example of a mixin configuration:
2992 #
2993 # apis:
2994 # - name: google.storage.v2.Storage
2995 # mixins:
2996 # - name: google.acl.v1.AccessControl
2997 #
2998 # The mixin construct implies that all methods in `AccessControl` are
2999 # also declared with same name and request/response types in
3000 # `Storage`. A documentation generator or annotation processor will
3001 # see the effective `Storage.GetAcl` method after inherting
3002 # documentation and annotations as follows:
3003 #
3004 # service Storage {
3005 # // Get the underlying ACL object.
3006 # rpc GetAcl(GetAclRequest) returns (Acl) {
3007 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
3008 # }
3009 # ...
3010 # }
3011 #
3012 # Note how the version in the path pattern changed from `v1` to `v2`.
3013 #
3014 # If the `root` field in the mixin is specified, it should be a
3015 # relative path under which inherited HTTP paths are placed. Example:
3016 #
3017 # apis:
3018 # - name: google.storage.v2.Storage
3019 # mixins:
3020 # - name: google.acl.v1.AccessControl
3021 # root: acls
3022 #
3023 # This implies the following inherited HTTP annotation:
3024 #
3025 # service Storage {
3026 # // Get the underlying ACL object.
3027 # rpc GetAcl(GetAclRequest) returns (Acl) {
3028 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
3029 # }
3030 # ...
3031 # }
3032 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
3033 # are rooted.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003034 "name": "A String", # The fully qualified name of the interface which is included.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003035 },
3036 ],
3037 "syntax": "A String", # The source syntax of the service.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003038 "version": "A String", # A version string for this interface. If specified, must have the form
3039 # `major-version.minor-version`, as in `1.10`. If the minor version is
3040 # omitted, it defaults to zero. If the entire version field is empty, the
3041 # major version is derived from the package name, as outlined below. If the
3042 # field is not empty, the version in the package name will be verified to be
3043 # consistent with what is provided here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003044 #
3045 # The versioning schema uses [semantic
3046 # versioning](http://semver.org) where the major version number
3047 # indicates a breaking change and the minor version an additive,
3048 # non-breaking change. Both version numbers are signals to users
3049 # what to expect from different versions, and should be carefully
3050 # chosen based on the product plan.
3051 #
3052 # The major version is also reflected in the package name of the
Dan O'Mearadd494642020-05-01 07:42:23 -07003053 # interface, which must end in `v&lt;major-version&gt;`, as in
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003054 # `google.feature.v1`. For major versions 0 and 1, the suffix can
3055 # be omitted. Zero major versions must only be used for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003056 # experimental, non-GA interfaces.
3057 "options": [ # Any metadata attached to the interface.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003058 { # A protocol buffer option, which can be attached to a message, field,
3059 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003060 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3061 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3062 # For custom options, it should be the fully-qualified name. For example,
3063 # `"google.api.http"`.
3064 "value": { # The option's value packed in an Any message. If the value is a primitive,
3065 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3066 # should be used. If the value is an enum, it should be stored as an int32
3067 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003068 "a_key": "", # Properties of the object. Contains field @type with type URL.
3069 },
3070 },
3071 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07003072 "methods": [ # The methods of this interface, in unspecified order.
3073 { # Method represents a method of an API interface.
3074 "name": "A String", # The simple name of this method.
3075 "requestStreaming": True or False, # If true, the request is streamed.
3076 "responseTypeUrl": "A String", # The URL of the output message type.
3077 "requestTypeUrl": "A String", # A URL of the input message type.
3078 "responseStreaming": True or False, # If true, the response is streamed.
3079 "syntax": "A String", # The source syntax of this method.
3080 "options": [ # Any metadata attached to the method.
3081 { # A protocol buffer option, which can be attached to a message, field,
3082 # enumeration, etc.
3083 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3084 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3085 # For custom options, it should be the fully-qualified name. For example,
3086 # `"google.api.http"`.
3087 "value": { # The option's value packed in an Any message. If the value is a primitive,
3088 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3089 # should be used. If the value is an enum, it should be stored as an int32
3090 # value using the google.protobuf.Int32Value type.
3091 "a_key": "", # Properties of the object. Contains field @type with type URL.
3092 },
3093 },
3094 ],
3095 },
3096 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003097 },
3098 ],
3099 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
3100 # specific protobuf types that can appear in error detail lists of
3101 # error responses.
3102 #
3103 # Example:
3104 #
3105 # custom_error:
3106 # types:
3107 # - google.foo.v1.CustomError
3108 # - google.foo.v1.AnotherError
3109 "rules": [ # The list of custom error rules that apply to individual API messages.
3110 #
3111 # **NOTE:** All service configuration rules follow "last one wins" order.
3112 { # A custom error rule.
3113 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
3114 # objects of this type will be filtered when they appear in error payload.
3115 "selector": "A String", # Selects messages to which this rule applies.
3116 #
3117 # Refer to selector for syntax details.
3118 },
3119 ],
3120 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
3121 "A String",
3122 ],
3123 },
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003124 "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
3125 # usage.
3126 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003127 # The metric based quota configuration works this way:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003128 # - The service configuration defines a set of metrics.
3129 # - For API calls, the quota.metric_rules maps methods to metrics with
3130 # corresponding costs.
3131 # - The quota.limits defines limits on the metrics, which will be used for
3132 # quota checks at runtime.
3133 #
3134 # An example quota configuration in yaml format:
3135 #
3136 # quota:
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003137 # limits:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003138 #
3139 # - name: apiWriteQpsPerProject
3140 # metric: library.googleapis.com/write_calls
3141 # unit: "1/min/{project}" # rate limit for consumer projects
3142 # values:
3143 # STANDARD: 10000
3144 #
3145 #
3146 # # The metric rules bind all methods to the read_calls metric,
3147 # # except for the UpdateBook and DeleteBook methods. These two methods
3148 # # are mapped to the write_calls metric, with the UpdateBook method
3149 # # consuming at twice rate as the DeleteBook method.
3150 # metric_rules:
3151 # - selector: "*"
3152 # metric_costs:
3153 # library.googleapis.com/read_calls: 1
3154 # - selector: google.example.library.v1.LibraryService.UpdateBook
3155 # metric_costs:
3156 # library.googleapis.com/write_calls: 2
3157 # - selector: google.example.library.v1.LibraryService.DeleteBook
3158 # metric_costs:
3159 # library.googleapis.com/write_calls: 1
3160 #
3161 # Corresponding Metric definition:
3162 #
3163 # metrics:
3164 # - name: library.googleapis.com/read_calls
3165 # display_name: Read requests
3166 # metric_kind: DELTA
3167 # value_type: INT64
3168 #
3169 # - name: library.googleapis.com/write_calls
3170 # display_name: Write requests
3171 # metric_kind: DELTA
3172 # value_type: INT64
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003173 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003174 "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
3175 # or more metrics.
3176 { # Bind API methods to metrics. Binding a method to a metric causes that
3177 # metric's configured quota behaviors to apply to the method call.
3178 "metricCosts": { # Metrics to update when the selected methods are called, and the associated
3179 # cost applied to each metric.
3180 #
3181 # The key of the map is the metric name, and the values are the amount
3182 # increased for the metric against which the quota limits are defined.
3183 # The value must not be negative.
3184 "a_key": "A String",
3185 },
3186 "selector": "A String", # Selects the methods to which this rule applies.
3187 #
3188 # Refer to selector for syntax details.
3189 },
3190 ],
3191 "limits": [ # List of `QuotaLimit` definitions for the service.
3192 { # `QuotaLimit` defines a specific limit that applies over a specified duration
3193 # for a limit type. There can be at most one limit for a duration and limit
3194 # type combination defined within a `QuotaGroup`.
3195 "displayName": "A String", # User-visible display name for this limit.
3196 # Optional. If not set, the UI will provide a default display name based on
3197 # the quota configuration. This field can be used to override the default
3198 # display name generated from the configuration.
Dan O'Mearadd494642020-05-01 07:42:23 -07003199 "description": "A String", # Optional. User-visible, extended description for this quota limit.
3200 # Should be used only when more context is needed to understand this limit
3201 # than provided by the limit's display name (see: `display_name`).
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003202 "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
3203 # duration. This is the number of tokens assigned when a client
3204 # application developer activates the service for his/her project.
3205 #
3206 # Specifying a value of 0 will block all requests. This can be used if you
3207 # are provisioning quota to selected consumers and blocking others.
3208 # Similarly, a value of -1 will indicate an unlimited quota. No other
3209 # negative values are allowed.
3210 #
3211 # Used by group-based quotas only.
3212 "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
3213 # the same metric will be checked together during runtime. The metric must be
3214 # defined within the service config.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003215 "values": { # Tiered limit values. You must specify this as a key:value pair, with an
3216 # integer value that is the maximum number of requests allowed for the
3217 # specified unit. Currently only STANDARD is supported.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003218 "a_key": "A String",
3219 },
3220 "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
3221 # duration. Client application developers can override the default limit up
3222 # to this maximum. If specified, this value cannot be set to a value less
3223 # than the default limit. If not specified, it is set to the default limit.
3224 #
3225 # To allow clients to apply overrides with no upper bound, set this to -1,
3226 # indicating unlimited maximum quota.
3227 #
3228 # Used by group-based quotas only.
Dan O'Mearadd494642020-05-01 07:42:23 -07003229 "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003230 #
3231 # Used by group-based quotas only.
3232 "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
3233 # The free tier is the number of tokens that will be subtracted from the
3234 # billed amount when billing is enabled.
3235 # This field can only be set on a limit with duration "1d", in a billable
3236 # group; it is invalid on any other limit. If this field is not set, it
3237 # defaults to 0, indicating that there is no free tier for this service.
3238 #
3239 # Used by group-based quotas only.
3240 "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
3241 # Metric.unit. The supported unit kinds are determined by the quota
3242 # backend system.
3243 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003244 # Here are some examples:
3245 # * "1/min/{project}" for quota per minute per project.
3246 #
3247 # Note: the order of unit components is insignificant.
3248 # The "1" at the beginning is required to follow the metric unit syntax.
Dan O'Mearadd494642020-05-01 07:42:23 -07003249 "name": "A String", # Name of the quota limit.
3250 #
3251 # The name must be provided, and it must be unique within the service. The
3252 # name can only include alphanumeric characters as well as '-'.
3253 #
3254 # The maximum length of the limit name is 64 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003255 },
3256 ],
3257 },
3258 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003259 { # Defines a metric type and its schema. Once a metric descriptor is created,
3260 # deleting or altering it stops data collection and makes the metric type's
3261 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003262 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
3263 # Use sentence case without an ending period, for example "Request count".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003264 # This field is optional but it is recommended to be set for any metrics
3265 # associated with user-visible concepts, such as Quota.
Dan O'Mearadd494642020-05-01 07:42:23 -07003266 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003267 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003268 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003269 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003270 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003271 "labels": [ # The set of labels that can be used to describe a specific
3272 # instance of this metric type. For example, the
3273 # `appengine.googleapis.com/http/server/response_latencies` metric
3274 # type has a label for the HTTP response code, `response_code`, so
3275 # you can look at latencies for successful responses or just
3276 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003277 { # A description of a label.
3278 "valueType": "A String", # The type of data that can be assigned to the label.
3279 "description": "A String", # A human-readable description for the label.
3280 "key": "A String", # The label key.
3281 },
3282 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003283 "launchStage": "A String", # Optional. The launch stage of the metric definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07003284 "monitoredResourceTypes": [ # Read-only. If present, then a time
3285 # series, which is identified partially by
3286 # a metric type and a MonitoredResourceDescriptor, that is associated
3287 # with this metric type can only be associated with one of the monitored
3288 # resource types listed here.
3289 "A String",
3290 ],
3291 "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
3292 "launchStage": "A String", # Deprecated. Must use the MetricDescriptor.launch_stage instead.
3293 "ingestDelay": "A String", # The delay of data points caused by ingestion. Data points older than this
3294 # age are guaranteed to be ingested and available to be read, excluding
3295 # data loss due to errors.
3296 "samplePeriod": "A String", # The sampling period of metric data points. For metrics which are written
3297 # periodically, consecutive data points are stored at this time interval,
3298 # excluding data loss due to errors. Metrics with a higher granularity have
3299 # a smaller sampling period.
3300 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003301 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003302 # URL-encoded. All user-defined metric types have the DNS name
3303 # `custom.googleapis.com` or `external.googleapis.com`. Metric types should
3304 # use a natural hierarchical grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003305 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003306 # "custom.googleapis.com/invoice/paid/amount"
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003307 # "external.googleapis.com/prometheus/up"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003308 # "appengine.googleapis.com/http/server/response_latencies"
Dan O'Mearadd494642020-05-01 07:42:23 -07003309 "unit": "A String", # The units in which the metric value is reported. It is only applicable
3310 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
3311 # defines the representation of the stored metric values.
3312 #
3313 # Different systems may scale the values to be more easily displayed (so a
3314 # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
3315 # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
3316 # `KBy`, then the value of the metric is always in thousands of bytes, no
3317 # matter how it may be displayed..
3318 #
3319 # If you want a custom metric to record the exact number of CPU-seconds used
3320 # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
3321 # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
3322 # CPU-seconds, then the value is written as `12005`.
3323 #
3324 # Alternatively, if you want a custom metric to record data in a more
3325 # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
3326 # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
3327 # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
3328 #
3329 # The supported units are a subset of [The Unified Code for Units of
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003330 # Measure](http://unitsofmeasure.org/ucum.html) standard:
3331 #
3332 # **Basic units (UNIT)**
3333 #
3334 # * `bit` bit
3335 # * `By` byte
3336 # * `s` second
3337 # * `min` minute
3338 # * `h` hour
3339 # * `d` day
3340 #
3341 # **Prefixes (PREFIX)**
3342 #
Dan O'Mearadd494642020-05-01 07:42:23 -07003343 # * `k` kilo (10^3)
3344 # * `M` mega (10^6)
3345 # * `G` giga (10^9)
3346 # * `T` tera (10^12)
3347 # * `P` peta (10^15)
3348 # * `E` exa (10^18)
3349 # * `Z` zetta (10^21)
3350 # * `Y` yotta (10^24)
3351 #
3352 # * `m` milli (10^-3)
3353 # * `u` micro (10^-6)
3354 # * `n` nano (10^-9)
3355 # * `p` pico (10^-12)
3356 # * `f` femto (10^-15)
3357 # * `a` atto (10^-18)
3358 # * `z` zepto (10^-21)
3359 # * `y` yocto (10^-24)
3360 #
3361 # * `Ki` kibi (2^10)
3362 # * `Mi` mebi (2^20)
3363 # * `Gi` gibi (2^30)
3364 # * `Ti` tebi (2^40)
3365 # * `Pi` pebi (2^50)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003366 #
3367 # **Grammar**
3368 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003369 # The grammar also includes these connectors:
3370 #
Dan O'Mearadd494642020-05-01 07:42:23 -07003371 # * `/` division or ratio (as an infix operator). For examples,
3372 # `kBy/{email}` or `MiBy/10ms` (although you should almost never
3373 # have `/s` in a metric `unit`; rates should always be computed at
3374 # query time from the underlying cumulative or delta value).
3375 # * `.` multiplication or composition (as an infix operator). For
3376 # examples, `GBy.d` or `k{watt}.h`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003377 #
3378 # The grammar for a unit is as follows:
3379 #
3380 # Expression = Component { "." Component } { "/" Component } ;
3381 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003382 # Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003383 # | Annotation
3384 # | "1"
3385 # ;
3386 #
3387 # Annotation = "{" NAME "}" ;
3388 #
3389 # Notes:
3390 #
Dan O'Mearadd494642020-05-01 07:42:23 -07003391 # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
3392 # is used alone, then the unit is equivalent to `1`. For examples,
3393 # `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003394 # * `NAME` is a sequence of non-blank printable ASCII characters not
Dan O'Mearadd494642020-05-01 07:42:23 -07003395 # containing `{` or `}`.
3396 # * `1` represents a unitary [dimensionless
3397 # unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
3398 # as in `1/s`. It is typically used when none of the basic units are
3399 # appropriate. For example, "new users per day" can be represented as
3400 # `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
3401 # users). Alternatively, "thousands of page views per day" would be
3402 # represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
3403 # value of `5.3` would mean "5300 page views per day").
3404 # * `%` represents dimensionless value of 1/100, and annotates values giving
3405 # a percentage (so the metric values are typically in the range of 0..100,
3406 # and a metric value `3` means "3 percent").
3407 # * `10^2.%` indicates a metric contains a ratio, typically in the range
3408 # 0..1, that will be multiplied by 100 and displayed as a percentage
3409 # (so a metric value `0.03` means "3 percent").
3410 "name": "A String", # The resource name of the metric descriptor.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003411 },
3412 ],
3413 "enums": [ # A list of all enum types included in this API service. Enums
3414 # referenced directly or indirectly by the `apis` are automatically
3415 # included. Enums which are not referenced but shall be included
3416 # should be listed here by name. Example:
3417 #
3418 # enums:
3419 # - name: google.someapi.v1.SomeEnum
3420 { # Enum type definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07003421 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003422 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
3423 # protobuf element, like the file in which it is defined.
3424 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
3425 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
3426 },
Dan O'Mearadd494642020-05-01 07:42:23 -07003427 "options": [ # Protocol buffer options.
3428 { # A protocol buffer option, which can be attached to a message, field,
3429 # enumeration, etc.
3430 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3431 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3432 # For custom options, it should be the fully-qualified name. For example,
3433 # `"google.api.http"`.
3434 "value": { # The option's value packed in an Any message. If the value is a primitive,
3435 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3436 # should be used. If the value is an enum, it should be stored as an int32
3437 # value using the google.protobuf.Int32Value type.
3438 "a_key": "", # Properties of the object. Contains field @type with type URL.
3439 },
3440 },
3441 ],
3442 "name": "A String", # Enum type name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003443 "enumvalue": [ # Enum value definitions.
3444 { # Enum value definition.
3445 "options": [ # Protocol buffer options.
3446 { # A protocol buffer option, which can be attached to a message, field,
3447 # enumeration, etc.
3448 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3449 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3450 # For custom options, it should be the fully-qualified name. For example,
3451 # `"google.api.http"`.
3452 "value": { # The option's value packed in an Any message. If the value is a primitive,
3453 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3454 # should be used. If the value is an enum, it should be stored as an int32
3455 # value using the google.protobuf.Int32Value type.
3456 "a_key": "", # Properties of the object. Contains field @type with type URL.
3457 },
3458 },
3459 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003460 "number": 42, # Enum value number.
Dan O'Mearadd494642020-05-01 07:42:23 -07003461 "name": "A String", # Enum value name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003462 },
3463 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003464 },
3465 ],
3466 "types": [ # A list of all proto message types included in this API service.
3467 # Types referenced directly or indirectly by the `apis` are
3468 # automatically included. Messages which are not referenced but
3469 # shall be included, such as types used by the `google.protobuf.Any` type,
3470 # should be listed here by name. Example:
3471 #
3472 # types:
3473 # - name: google.protobuf.Int32
3474 { # A protocol buffer message type.
3475 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
3476 "A String",
3477 ],
3478 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003479 "fields": [ # The list of fields.
3480 { # A single field of a message type.
3481 "kind": "A String", # The field type.
3482 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
3483 # types. The first type has index 1; zero means the type is not in the list.
3484 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
3485 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
3486 "name": "A String", # The field name.
3487 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
3488 "jsonName": "A String", # The field JSON name.
3489 "number": 42, # The field number.
3490 "cardinality": "A String", # The field cardinality.
3491 "options": [ # The protocol buffer options.
3492 { # A protocol buffer option, which can be attached to a message, field,
3493 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003494 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3495 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3496 # For custom options, it should be the fully-qualified name. For example,
3497 # `"google.api.http"`.
3498 "value": { # The option's value packed in an Any message. If the value is a primitive,
3499 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3500 # should be used. If the value is an enum, it should be stored as an int32
3501 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003502 "a_key": "", # Properties of the object. Contains field @type with type URL.
3503 },
3504 },
3505 ],
3506 "packed": True or False, # Whether to use alternative packed wire representation.
3507 },
3508 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003509 "syntax": "A String", # The source syntax.
3510 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
3511 # protobuf element, like the file in which it is defined.
3512 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
3513 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
3514 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003515 "options": [ # The protocol buffer options.
3516 { # A protocol buffer option, which can be attached to a message, field,
3517 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003518 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3519 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3520 # For custom options, it should be the fully-qualified name. For example,
3521 # `"google.api.http"`.
3522 "value": { # The option's value packed in an Any message. If the value is a primitive,
3523 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3524 # should be used. If the value is an enum, it should be stored as an int32
3525 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003526 "a_key": "", # Properties of the object. Contains field @type with type URL.
3527 },
3528 },
3529 ],
3530 },
3531 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003532 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003533 #
3534 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003535 # producer and consumer projects. In the example, the `activity_history`
3536 # log is sent to both the producer and consumer projects, whereas the
3537 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003538 #
3539 # monitored_resources:
3540 # - type: library.googleapis.com/branch
3541 # labels:
3542 # - key: /city
3543 # description: The city where the library branch is located in.
3544 # - key: /name
3545 # description: The name of the branch.
3546 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003547 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003548 # labels:
3549 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003550 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003551 # logging:
3552 # producer_destinations:
3553 # - monitored_resource: library.googleapis.com/branch
3554 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003555 # - activity_history
3556 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003557 # consumer_destinations:
3558 # - monitored_resource: library.googleapis.com/branch
3559 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003560 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003561 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
3562 # There can be multiple producer destinations, each one must have a
3563 # different monitored resource type. A log can be used in at most
3564 # one producer destination.
3565 { # Configuration of a specific logging destination (the producer project
3566 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003567 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003568 # Service.monitored_resources section.
3569 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003570 # be defined in the Service.logs section. If the log name is
3571 # not a domain scoped name, it will be automatically prefixed with
3572 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003573 "A String",
3574 ],
3575 },
3576 ],
3577 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
3578 # There can be multiple consumer destinations, each one must have a
3579 # different monitored resource type. A log can be used in at most
3580 # one consumer destination.
3581 { # Configuration of a specific logging destination (the producer project
3582 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003583 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003584 # Service.monitored_resources section.
3585 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07003586 # be defined in the Service.logs section. If the log name is
3587 # not a domain scoped name, it will be automatically prefixed with
3588 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003589 "A String",
3590 ],
3591 },
3592 ],
3593 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003594 "name": "A String", # The service name, which is a DNS-like logical identifier for the
3595 # service, such as `calendar.googleapis.com`. The service name
3596 # typically goes through DNS verification to make sure the owner
3597 # of the service also owns the DNS name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003598 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
3599 #
3600 # Example:
Dan O'Mearadd494642020-05-01 07:42:23 -07003601 # &lt;pre&gt;&lt;code&gt;documentation:
3602 # summary: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003603 # The Google Calendar API gives access
3604 # to most calendar features.
3605 # pages:
3606 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07003607 # content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003608 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07003609 # content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003610 # subpages;
3611 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07003612 # content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003613 # rules:
3614 # - selector: google.calendar.Calendar.Get
Dan O'Mearadd494642020-05-01 07:42:23 -07003615 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003616 # ...
3617 # - selector: google.calendar.Calendar.Put
Dan O'Mearadd494642020-05-01 07:42:23 -07003618 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003619 # ...
Dan O'Mearadd494642020-05-01 07:42:23 -07003620 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003621 # Documentation is provided in markdown syntax. In addition to
3622 # standard markdown features, definition lists, tables and fenced
3623 # code blocks are supported. Section headers can be provided and are
3624 # interpreted relative to the section nesting of the context where
3625 # a documentation fragment is embedded.
3626 #
3627 # Documentation from the IDL is merged with documentation defined
3628 # via the config at normalization time, where documentation provided
3629 # by config rules overrides IDL provided.
3630 #
3631 # A number of constructs specific to the API platform are supported
3632 # in documentation text.
3633 #
3634 # In order to reference a proto element, the following
3635 # notation can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07003636 # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003637 # To override the display text used for the link, this can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07003638 # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003639 # Text can be excluded from doc using the following notation:
Dan O'Mearadd494642020-05-01 07:42:23 -07003640 # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003641 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003642 # A few directives are available in documentation. Note that
3643 # directives must appear on a single line to be properly
3644 # identified. The `include` directive includes a markdown file from
3645 # an external source:
Dan O'Mearadd494642020-05-01 07:42:23 -07003646 # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003647 # The `resource_for` directive marks a message to be the resource of
3648 # a collection in REST view. If it is not specified, tools attempt
3649 # to infer the resource from the operations in a collection:
Dan O'Mearadd494642020-05-01 07:42:23 -07003650 # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003651 # The directive `suppress_warning` does not directly affect documentation
3652 # and is documented together with service config validation.
3653 "rules": [ # A list of documentation rules that apply to individual API elements.
3654 #
3655 # **NOTE:** All service configuration rules follow "last one wins" order.
3656 { # A documentation rule provides information about individual API elements.
3657 "description": "A String", # Description of the selected API(s).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003658 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
3659 # an element is marked as `deprecated`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003660 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
3661 # qualified name of the element which may end in "*", indicating a wildcard.
3662 # Wildcards are only allowed at the end and for a whole component of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003663 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
3664 # wildcard will match one or more components. To specify a default for all
3665 # applicable elements, the whole pattern "*" is used.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003666 },
3667 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003668 "documentationRootUrl": "A String", # The URL to the root of documentation.
Dan O'Mearadd494642020-05-01 07:42:23 -07003669 "summary": "A String", # A short summary of what the service does. Can only be provided by
3670 # plain text.
3671 "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
3672 # from the yaml file) is not suitable. This can be seen in any fully
3673 # specified service urls as well as sections that show a base that other
3674 # urls are relative to.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003675 "overview": "A String", # Declares a single overview page. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07003676 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003677 # summary: ...
Dan O'Mearadd494642020-05-01 07:42:23 -07003678 # overview: &amp;#40;== include overview.md ==&amp;#41;
3679 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003680 # This is a shortcut for the following declaration (using pages style):
Dan O'Mearadd494642020-05-01 07:42:23 -07003681 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003682 # summary: ...
3683 # pages:
3684 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07003685 # content: &amp;#40;== include overview.md ==&amp;#41;
3686 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003687 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003688 "pages": [ # The top level pages for the documentation set.
3689 { # Represents a documentation page. A page can contain subpages to represent
3690 # nested documentation set structure.
Dan O'Mearadd494642020-05-01 07:42:23 -07003691 "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
3692 # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003693 "subpages": [ # Subpages of this page. The order of subpages specified here will be
3694 # honored in the generated docset.
3695 # Object with schema name: Page
3696 ],
3697 "name": "A String", # The name of the page. It will be used as an identity of the page to
3698 # generate URI of the page, text of the link to this page in navigation,
3699 # etc. The full page name (start from the root page name to this page
3700 # concatenated with `.`) can be used as reference to the page in your
3701 # documentation. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07003702 # &lt;pre&gt;&lt;code&gt;pages:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003703 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07003704 # content: &amp;#40;== include tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003705 # subpages:
3706 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07003707 # content: &amp;#40;== include tutorial_java.md ==&amp;#41;
3708 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003709 # You can reference `Java` page using Markdown reference link syntax:
3710 # `Java`.
3711 },
3712 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003713 },
3714 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
3715 "sourceFiles": [ # All files used during config generation.
3716 {
3717 "a_key": "", # Properties of the object. Contains field @type with type URL.
3718 },
3719 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003720 },
3721 "systemTypes": [ # A list of all proto message types included in this API service.
3722 # It serves similar purpose as [google.api.Service.types], except that
3723 # these types are not needed by user-defined APIs. Therefore, they will not
3724 # show up in the generated discovery doc. This field should only be used
3725 # to define system APIs in ESF.
3726 { # A protocol buffer message type.
3727 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
3728 "A String",
3729 ],
3730 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003731 "fields": [ # The list of fields.
3732 { # A single field of a message type.
3733 "kind": "A String", # The field type.
3734 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
3735 # types. The first type has index 1; zero means the type is not in the list.
3736 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
3737 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
3738 "name": "A String", # The field name.
3739 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
3740 "jsonName": "A String", # The field JSON name.
3741 "number": 42, # The field number.
3742 "cardinality": "A String", # The field cardinality.
3743 "options": [ # The protocol buffer options.
3744 { # A protocol buffer option, which can be attached to a message, field,
3745 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003746 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3747 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3748 # For custom options, it should be the fully-qualified name. For example,
3749 # `"google.api.http"`.
3750 "value": { # The option's value packed in an Any message. If the value is a primitive,
3751 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3752 # should be used. If the value is an enum, it should be stored as an int32
3753 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003754 "a_key": "", # Properties of the object. Contains field @type with type URL.
3755 },
3756 },
3757 ],
3758 "packed": True or False, # Whether to use alternative packed wire representation.
3759 },
3760 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003761 "syntax": "A String", # The source syntax.
3762 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
3763 # protobuf element, like the file in which it is defined.
3764 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
3765 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
3766 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003767 "options": [ # The protocol buffer options.
3768 { # A protocol buffer option, which can be attached to a message, field,
3769 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003770 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3771 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3772 # For custom options, it should be the fully-qualified name. For example,
3773 # `"google.api.http"`.
3774 "value": { # The option's value packed in an Any message. If the value is a primitive,
3775 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3776 # should be used. If the value is an enum, it should be stored as an int32
3777 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003778 "a_key": "", # Properties of the object. Contains field @type with type URL.
3779 },
3780 },
3781 ],
3782 },
3783 ],
3784 "context": { # `Context` defines which contexts an API requests. # Context configuration.
3785 #
3786 # Example:
3787 #
3788 # context:
3789 # rules:
3790 # - selector: "*"
3791 # requested:
3792 # - google.rpc.context.ProjectContext
3793 # - google.rpc.context.OriginContext
3794 #
3795 # The above specifies that all methods in the API request
3796 # `google.rpc.context.ProjectContext` and
3797 # `google.rpc.context.OriginContext`.
3798 #
3799 # Available context types are defined in package
3800 # `google.rpc.context`.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003801 #
3802 # This also provides mechanism to whitelist any protobuf message extension that
Dan O'Mearadd494642020-05-01 07:42:23 -07003803 # can be sent in grpc metadata using “x-goog-ext-&lt;extension_id&gt;-bin” and
3804 # “x-goog-ext-&lt;extension_id&gt;-jspb” format. For example, list any service
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003805 # specific protobuf types that can appear in grpc metadata as follows in your
3806 # yaml file:
3807 #
3808 # Example:
3809 #
3810 # context:
3811 # rules:
3812 # - selector: "google.example.library.v1.LibraryService.CreateBook"
3813 # allowed_request_extensions:
3814 # - google.foo.v1.NewExtension
3815 # allowed_response_extensions:
3816 # - google.foo.v1.NewExtension
3817 #
3818 # You can also specify extension ID instead of fully qualified extension name
3819 # here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003820 "rules": [ # A list of RPC context rules that apply to individual API methods.
3821 #
3822 # **NOTE:** All service configuration rules follow "last one wins" order.
3823 { # A context rule provides information about the context for an individual API
3824 # element.
3825 "provided": [ # A list of full type names of provided contexts.
3826 "A String",
3827 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003828 "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
3829 # side channel from backend to client.
3830 "A String",
3831 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003832 "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
3833 # side channel from client to backend.
3834 "A String",
3835 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04003836 "requested": [ # A list of full type names of requested contexts.
3837 "A String",
3838 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07003839 "selector": "A String", # Selects the methods to which this rule applies.
3840 #
3841 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003842 },
3843 ],
3844 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003845 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
3846 # with the same name as the service is automatically generated to service all
3847 # defined APIs.
3848 { # `Endpoint` describes a network endpoint that serves a set of APIs.
3849 # A service may expose any number of endpoints, and all endpoints share the
3850 # same service configuration, such as quota configuration and monitoring
3851 # configuration.
3852 #
3853 # Example service configuration:
3854 #
3855 # name: library-example.googleapis.com
3856 # endpoints:
3857 # # Below entry makes 'google.example.library.v1.Library'
3858 # # API be served from endpoint address library-example.googleapis.com.
3859 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
3860 # # it to decide whether the subsequent cross-origin request is
3861 # # allowed to proceed.
3862 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003863 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003864 "allowCors": True or False, # Allowing
3865 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
3866 # cross-domain traffic, would allow the backends served from this endpoint to
3867 # receive and respond to HTTP OPTIONS requests. The response will be used by
3868 # the browser to determine whether the subsequent cross-origin request is
3869 # allowed to proceed.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003870 "target": "A String", # The specification of an Internet routable address of API frontend that will
3871 # handle requests to this [API
3872 # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
3873 # either a valid IPv4 address or a fully-qualified domain name. For example,
3874 # "8.8.8.8" or "myservice.appspot.com".
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003875 "features": [ # The list of features enabled on this endpoint.
3876 "A String",
3877 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003878 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07003879 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003880 # please specify multiple google.api.Endpoint for each of the intended
3881 # aliases.
Thomas Coffee2f245372017-03-27 10:39:26 -07003882 #
3883 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003884 "A String",
3885 ],
3886 },
3887 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003888 }</pre>
3889</div>
3890
3891<div class="method">
Thomas Coffee2f245372017-03-27 10:39:26 -07003892 <code class="details" id="get">get(serviceName, configId, x__xgafv=None, view=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003893 <pre>Gets a service configuration (version) for a managed service.
3894
3895Args:
Dan O'Mearadd494642020-05-01 07:42:23 -07003896 serviceName: string, Required. The name of the service. See the [overview](/service-management/overview)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003897for naming requirements. For example: `example.googleapis.com`. (required)
Dan O'Mearadd494642020-05-01 07:42:23 -07003898 configId: string, Required. The id of the service configuration resource.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003899
3900This field must be specified for the server to return all fields, including
3901`SourceInfo`. (required)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003902 x__xgafv: string, V1 error format.
3903 Allowed values
3904 1 - v1 error format
3905 2 - v2 error format
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003906 view: string, Specifies which parts of the Service Config should be returned in the
3907response.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003908
3909Returns:
3910 An object of the form:
3911
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003912 { # `Service` is the root object of Google service configuration schema. It
3913 # describes basic information about a service, such as the name and the
3914 # title, and delegates other aspects to sub-sections. Each sub-section is
3915 # either a proto message or a repeated proto message that configures a
3916 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003917 #
3918 # Example:
3919 #
3920 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003921 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003922 # name: calendar.googleapis.com
3923 # title: Google Calendar API
3924 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003925 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003926 # authentication:
3927 # providers:
3928 # - id: google_calendar_auth
3929 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
3930 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003931 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003932 # - selector: "*"
3933 # requirements:
3934 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003935 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
3936 # service controller handles features like abuse, quota, billing, logging,
3937 # monitoring, etc.
3938 "environment": "A String", # The service control environment to use. If empty, no control plane
3939 # feature (like quota and billing) will be enabled.
3940 },
3941 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
3942 # by the Service.monitoring and Service.logging configurations.
3943 { # An object that describes the schema of a MonitoredResource object using a
3944 # type name and a set of labels. For example, the monitored resource
3945 # descriptor for Google Compute Engine VM instances has a type of
3946 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
3947 # `"zone"` to identify particular VM instances.
3948 #
3949 # Different APIs can support different monitored resource types. APIs generally
3950 # provide a `list` method that returns the monitored resource descriptors used
3951 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07003952 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
3953 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
3954 # without any article or other determiners. For example,
3955 # `"Google Cloud SQL Database"`.
Dan O'Mearadd494642020-05-01 07:42:23 -07003956 "description": "A String", # Optional. A detailed description of the monitored resource type that might
3957 # be used in documentation.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07003958 "labels": [ # Required. A set of labels used to describe instances of this monitored
3959 # resource type. For example, an individual Google Cloud SQL database is
3960 # identified by values for the labels `"database_id"` and `"zone"`.
3961 { # A description of a label.
3962 "valueType": "A String", # The type of data that can be assigned to the label.
3963 "description": "A String", # A human-readable description for the label.
3964 "key": "A String", # The label key.
3965 },
3966 ],
3967 "launchStage": "A String", # Optional. The launch stage of the monitored resource definition.
3968 "type": "A String", # Required. The monitored resource type. For example, the type
3969 # `"cloudsql_database"` represents databases in Google Cloud SQL.
3970 # The maximum length of this value is 256 characters.
Dan O'Mearadd494642020-05-01 07:42:23 -07003971 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
3972 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
3973 # {type} is the value of the `type` field in this object and
3974 # {project_id} is a project ID that provides API-specific context for
3975 # accessing the type. APIs that do not use project information can use the
3976 # resource name format `"monitoredResourceDescriptors/{type}"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003977 },
3978 ],
3979 "logs": [ # Defines the logs used by this service.
3980 { # A description of a log type. Example in YAML format:
3981 #
3982 # - name: library.googleapis.com/activity_history
3983 # description: The history of borrowing and returning library items.
3984 # display_name: Activity
3985 # labels:
3986 # - key: /customer_id
3987 # description: Identifier of a library customer
3988 "labels": [ # The set of labels that are available to describe a specific log entry.
3989 # Runtime requests that contain labels not specified here are
3990 # considered invalid.
3991 { # A description of a label.
3992 "valueType": "A String", # The type of data that can be assigned to the label.
3993 "description": "A String", # A human-readable description for the label.
3994 "key": "A String", # The label key.
3995 },
3996 ],
3997 "displayName": "A String", # The human-readable name for this log. This information appears on
3998 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003999 "name": "A String", # The name of the log. It must be less than 512 characters long and can
4000 # include the following characters: upper- and lower-case alphanumeric
4001 # characters [A-Za-z0-9], and punctuation characters including
4002 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07004003 "description": "A String", # A human-readable description of this log. This information appears in
4004 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004005 },
4006 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07004007 "systemParameters": { # ### System parameter configuration # System parameter configuration.
4008 #
4009 # A system parameter is a special kind of parameter defined by the API
4010 # system, not by an individual API. It is typically mapped to an HTTP header
4011 # and/or a URL query parameter. This configuration specifies which methods
4012 # change the names of the system parameters.
4013 "rules": [ # Define system parameters.
4014 #
4015 # The parameters defined here will override the default parameters
4016 # implemented by the system. If this field is missing from the service
4017 # config, default system parameters will be used. Default system parameters
4018 # and names is implementation-dependent.
4019 #
4020 # Example: define api key for all methods
4021 #
4022 # system_parameters
4023 # rules:
4024 # - selector: "*"
4025 # parameters:
4026 # - name: api_key
4027 # url_query_parameter: api_key
4028 #
4029 #
4030 # Example: define 2 api key names for a specific method.
4031 #
4032 # system_parameters
4033 # rules:
4034 # - selector: "/ListShelves"
4035 # parameters:
4036 # - name: api_key
4037 # http_header: Api-Key1
4038 # - name: api_key
4039 # http_header: Api-Key2
4040 #
4041 # **NOTE:** All service configuration rules follow "last one wins" order.
4042 { # Define a system parameter rule mapping system parameter definitions to
4043 # methods.
4044 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
4045 # For a given method call, only one of them should be used. If multiple
4046 # names are used the behavior is implementation-dependent.
4047 # If none of the specified names are present the behavior is
4048 # parameter-dependent.
4049 { # Define a parameter's name and location. The parameter may be passed as either
4050 # an HTTP header or a URL query parameter, and if both are passed the behavior
4051 # is implementation-dependent.
4052 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
4053 # sensitive.
4054 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
4055 # insensitive.
4056 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
4057 },
4058 ],
4059 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
4060 # methods in all APIs.
4061 #
4062 # Refer to selector for syntax details.
4063 },
4064 ],
4065 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004066 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
4067 "rules": [ # A list of API backend rules that apply to individual API methods.
4068 #
4069 # **NOTE:** All service configuration rules follow "last one wins" order.
4070 { # A backend rule provides configuration for an individual API element.
Dan O'Mearadd494642020-05-01 07:42:23 -07004071 "jwtAudience": "A String", # The JWT audience is used when generating a JWT ID token for the backend.
4072 # This ID token will be added in the HTTP "authorization" header, and sent
4073 # to the backend.
4074 "protocol": "A String", # The protocol used for sending a request to the backend.
4075 # The supported values are "http/1.1" and "h2".
4076 #
4077 # The default value is inferred from the scheme in the
4078 # address field:
4079 #
4080 # SCHEME PROTOCOL
4081 # http:// http/1.1
4082 # https:// http/1.1
4083 # grpc:// h2
4084 # grpcs:// h2
4085 #
4086 # For secure HTTP backends (https://) that support HTTP/2, set this field
4087 # to "h2" for improved performance.
4088 #
4089 # Configuring this field to non-default values is only supported for secure
4090 # HTTP backends. This field will be ignored for all other backends.
4091 #
4092 # See
4093 # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
4094 # for more details on the supported values.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004095 "pathTranslation": "A String",
4096 "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
4097 # value lower than this will be rejected.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004098 "selector": "A String", # Selects the methods to which this rule applies.
4099 #
4100 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004101 "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running
4102 # operation. The default is no deadline.
Dan O'Mearadd494642020-05-01 07:42:23 -07004103 "deadline": 3.14, # The number of seconds to wait for a response from a request. The default
4104 # varies based on the request protocol and deployment environment.
4105 "disableAuth": True or False, # When disable_auth is true, a JWT ID token won't be generated and the
4106 # original "Authorization" HTTP header will be preserved. If the header is
4107 # used to carry the original token and is expected by the backend, this
4108 # field must be set to true to preserve the header.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004109 "address": "A String", # The address of the API backend.
Dan O'Mearadd494642020-05-01 07:42:23 -07004110 #
4111 # The scheme is used to determine the backend protocol and security.
4112 # The following schemes are accepted:
4113 #
4114 # SCHEME PROTOCOL SECURITY
4115 # http:// HTTP None
4116 # https:// HTTP TLS
4117 # grpc:// gRPC None
4118 # grpcs:// gRPC TLS
4119 #
4120 # It is recommended to explicitly include a scheme. Leaving out the scheme
4121 # may cause constrasting behaviors across platforms.
4122 #
4123 # If the port is unspecified, the default is:
4124 # - 80 for schemes without TLS
4125 # - 443 for schemes with TLS
4126 #
4127 # For HTTP backends, use protocol
4128 # to specify the protocol version.
4129 "renameTo": "A String", # Unimplemented. Do not use.
4130 #
4131 # The new name the selected proto elements should be renamed to.
4132 #
4133 # The package, the service and the method can all be renamed.
4134 # The backend server should implement the renamed proto. However, clients
4135 # should call the original method, and ESF routes the traffic to the renamed
4136 # method.
4137 #
4138 # HTTP clients should call the URL mapped to the original method.
4139 # gRPC and Stubby clients should call the original method with package name.
4140 #
4141 # For legacy reasons, ESF allows Stubby clients to call with the
4142 # short name (without the package name). However, for API Versioning(or
4143 # multiple methods mapped to the same short name), all Stubby clients must
4144 # call the method's full name with the package name, otherwise the first one
4145 # (selector) wins.
4146 #
4147 # If this `rename_to` is specified with a trailing `*`, the `selector` must
4148 # be specified with a trailing `*` as well. The all element short names
4149 # matched by the `*` in the selector will be kept in the `rename_to`.
4150 #
4151 # For example,
4152 # rename_rules:
4153 # - selector: |-
4154 # google.example.library.v1.*
4155 # rename_to: google.example.library.*
4156 #
4157 # The selector matches `google.example.library.v1.Library.CreateShelf` and
4158 # `google.example.library.v1.Library.CreateBook`, they will be renamed to
4159 # `google.example.library.Library.CreateShelf` and
4160 # `google.example.library.Library.CreateBook`. It essentially renames the
4161 # proto package name section of the matched proto service and methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004162 },
4163 ],
4164 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004165 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004166 #
4167 # The example below shows how to configure monitored resources and metrics
4168 # for monitoring. In the example, a monitored resource and two metrics are
4169 # defined. The `library.googleapis.com/book/returned_count` metric is sent
4170 # to both producer and consumer projects, whereas the
4171 # `library.googleapis.com/book/overdue_count` metric is only sent to the
4172 # consumer project.
4173 #
4174 # monitored_resources:
4175 # - type: library.googleapis.com/branch
4176 # labels:
4177 # - key: /city
4178 # description: The city where the library branch is located in.
4179 # - key: /name
4180 # description: The name of the branch.
4181 # metrics:
4182 # - name: library.googleapis.com/book/returned_count
4183 # metric_kind: DELTA
4184 # value_type: INT64
4185 # labels:
4186 # - key: /customer_id
4187 # - name: library.googleapis.com/book/overdue_count
4188 # metric_kind: GAUGE
4189 # value_type: INT64
4190 # labels:
4191 # - key: /customer_id
4192 # monitoring:
4193 # producer_destinations:
4194 # - monitored_resource: library.googleapis.com/branch
4195 # metrics:
4196 # - library.googleapis.com/book/returned_count
4197 # consumer_destinations:
4198 # - monitored_resource: library.googleapis.com/branch
4199 # metrics:
4200 # - library.googleapis.com/book/returned_count
4201 # - library.googleapis.com/book/overdue_count
4202 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004203 # There can be multiple producer destinations. A monitored resouce type may
4204 # appear in multiple monitoring destinations if different aggregations are
4205 # needed for different sets of metrics associated with that monitored
4206 # resource type. A monitored resource and metric pair may only be used once
4207 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004208 { # Configuration of a specific monitoring destination (the producer project
4209 # or the consumer project).
4210 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
4211 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004212 "metrics": [ # Types of the metrics to report to this monitoring destination.
4213 # Each type must be defined in Service.metrics section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004214 "A String",
4215 ],
4216 },
4217 ],
4218 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004219 # There can be multiple consumer destinations. A monitored resouce type may
4220 # appear in multiple monitoring destinations if different aggregations are
4221 # needed for different sets of metrics associated with that monitored
4222 # resource type. A monitored resource and metric pair may only be used once
4223 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004224 { # Configuration of a specific monitoring destination (the producer project
4225 # or the consumer project).
4226 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
4227 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004228 "metrics": [ # Types of the metrics to report to this monitoring destination.
4229 # Each type must be defined in Service.metrics section.
4230 "A String",
4231 ],
4232 },
4233 ],
4234 },
4235 "billing": { # Billing related configuration of the service. # Billing configuration.
4236 #
4237 # The following example shows how to configure monitored resources and metrics
4238 # for billing:
4239 #
4240 # monitored_resources:
4241 # - type: library.googleapis.com/branch
4242 # labels:
4243 # - key: /city
4244 # description: The city where the library branch is located in.
4245 # - key: /name
4246 # description: The name of the branch.
4247 # metrics:
4248 # - name: library.googleapis.com/book/borrowed_count
4249 # metric_kind: DELTA
4250 # value_type: INT64
4251 # billing:
4252 # consumer_destinations:
4253 # - monitored_resource: library.googleapis.com/branch
4254 # metrics:
4255 # - library.googleapis.com/book/borrowed_count
4256 "consumerDestinations": [ # Billing configurations for sending metrics to the consumer project.
4257 # There can be multiple consumer destinations per service, each one must have
4258 # a different monitored resource type. A metric can be used in at most
4259 # one consumer destination.
4260 { # Configuration of a specific billing destination (Currently only support
4261 # bill against consumer project).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004262 "metrics": [ # Names of the metrics to report to this billing destination.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004263 # Each name must be defined in Service.metrics section.
4264 "A String",
4265 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07004266 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
4267 # Service.monitored_resources section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004268 },
4269 ],
4270 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004271 "title": "A String", # The product title for this service.
Dan O'Mearadd494642020-05-01 07:42:23 -07004272 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
4273 # by the client for tracking purpose. Must be no longer than 63 characters
4274 # and only lower case letters, digits, '.', '_' and '-' are allowed. If
4275 # empty, the server may choose to generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004276 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
4277 #
4278 # Example for an API targeted for external use:
4279 #
4280 # name: calendar.googleapis.com
4281 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004282 # providers:
4283 # - id: google_calendar_auth
4284 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
4285 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004286 # rules:
4287 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004288 # requirements:
4289 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004290 "rules": [ # A list of authentication rules that apply to individual API methods.
4291 #
4292 # **NOTE:** All service configuration rules follow "last one wins" order.
4293 { # Authentication rules for the service.
4294 #
4295 # By default, if a method has any authentication requirements, every request
4296 # must include a valid credential matching one of the requirements.
4297 # It's an error to include more than one kind of credential in a single
4298 # request.
4299 #
4300 # If a method doesn't have any auth requirements, request credentials will be
4301 # ignored.
4302 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
4303 # there are scopes defined for "Read-only access to Google Calendar" and
4304 # "Access to Cloud Platform". Users can consent to a scope for an application,
4305 # giving it permission to access that data on their behalf.
4306 #
4307 # OAuth scope specifications should be fairly coarse grained; a user will need
4308 # to see and understand the text description of what your scope means.
4309 #
4310 # In most cases: use one or at most two OAuth scopes for an entire family of
4311 # products. If your product has multiple APIs, you should probably be sharing
4312 # the OAuth scope across all of those APIs.
4313 #
4314 # When you need finer grained OAuth consent screens: talk with your product
4315 # management about how developers will use them in practice.
4316 #
4317 # Please note that even though each of the canonical scopes is enough for a
4318 # request to be accepted and passed to the backend, a request can still fail
4319 # due to the backend requiring additional scopes or permissions.
4320 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
4321 # OAuth token containing any of these scopes will be accepted.
4322 #
4323 # Example:
4324 #
4325 # canonical_scopes: https://www.googleapis.com/auth/calendar,
4326 # https://www.googleapis.com/auth/calendar.read
4327 },
4328 "requirements": [ # Requirements for additional authentication providers.
4329 { # User-defined authentication requirements, including support for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004330 # [JSON Web Token
4331 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004332 "providerId": "A String", # id from authentication provider.
4333 #
4334 # Example:
4335 #
4336 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004337 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
4338 # implemented and accepted in all the runtime components.
4339 #
4340 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004341 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
4342 # that are allowed to access. A JWT containing any of these audiences will
4343 # be accepted. When this setting is absent, only JWTs with audience
4344 # "https://Service_name/API_name"
4345 # will be accepted. For example, if no audiences are in the setting,
4346 # LibraryService API will only accept JWTs with the following audience
4347 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
4348 #
4349 # Example:
4350 #
4351 # audiences: bookstore_android.apps.googleusercontent.com,
4352 # bookstore_web.apps.googleusercontent.com
4353 },
4354 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07004355 "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004356 "selector": "A String", # Selects the methods to which this rule applies.
4357 #
4358 # Refer to selector for syntax details.
4359 },
4360 ],
4361 "providers": [ # Defines a set of authentication providers that a service supports.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004362 { # Configuration for an authentication provider, including support for
4363 # [JSON Web Token
4364 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Dan O'Mearadd494642020-05-01 07:42:23 -07004365 "jwtLocations": [ # Defines the locations to extract the JWT.
4366 #
4367 # JWT locations can be either from HTTP headers or URL query parameters.
4368 # The rule is that the first match wins. The checking order is: checking
4369 # all headers first, then URL query parameters.
4370 #
4371 # If not specified, default to use following 3 locations:
4372 # 1) Authorization: Bearer
4373 # 2) x-goog-iap-jwt-assertion
4374 # 3) access_token query parameter
4375 #
4376 # Default locations can be specified as followings:
4377 # jwt_locations:
4378 # - header: Authorization
4379 # value_prefix: "Bearer "
4380 # - header: x-goog-iap-jwt-assertion
4381 # - query: access_token
4382 { # Specifies a location to extract JWT from an API request.
4383 "query": "A String", # Specifies URL query parameter name to extract JWT token.
4384 "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
4385 # Only applies to "in" header type. Must be empty for "in" query type.
4386 # If not empty, the header value has to match (case sensitive) this prefix.
4387 # If not matched, JWT will not be extracted. If matched, JWT will be
4388 # extracted after the prefix is removed.
4389 #
4390 # For example, for "Authorization: Bearer {JWT}",
4391 # value_prefix="Bearer " with a space at the end.
4392 "header": "A String", # Specifies HTTP header name to extract JWT token.
4393 },
4394 ],
4395 "audiences": "A String", # The list of JWT
4396 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
4397 # that are allowed to access. A JWT containing any of these audiences will
4398 # be accepted. When this setting is absent, JWTs with audiences:
4399 # - "https://[service.name]/[google.protobuf.Api.name]"
4400 # - "https://[service.name]/"
4401 # will be accepted.
4402 # For example, if no audiences are in the setting, LibraryService API will
4403 # accept JWTs with the following audiences:
4404 # -
4405 # https://library-example.googleapis.com/google.example.library.v1.LibraryService
4406 # - https://library-example.googleapis.com/
4407 #
4408 # Example:
4409 #
4410 # audiences: bookstore_android.apps.googleusercontent.com,
4411 # bookstore_web.apps.googleusercontent.com
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004412 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
4413 # [OpenID
4414 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
4415 # Optional if the key set document:
4416 # - can be retrieved from
4417 # [OpenID
4418 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
4419 # the issuer.
4420 # - can be inferred from the email domain of the issuer (e.g. a Google
4421 # service account).
4422 #
4423 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004424 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
4425 # `AuthRequirement.provider_id`.
4426 #
4427 # Example: "bookstore_auth".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004428 "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
4429 # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004430 "issuer": "A String", # Identifies the principal that issued the JWT. See
4431 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
4432 # Usually a URL or an email address.
4433 #
4434 # Example: https://securetoken.google.com
4435 # Example: 1234567-compute@developer.gserviceaccount.com
4436 },
4437 ],
4438 },
4439 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
4440 "rules": [ # A list of usage rules that apply to individual API methods.
4441 #
4442 # **NOTE:** All service configuration rules follow "last one wins" order.
4443 { # Usage configuration rules for the service.
4444 #
4445 # NOTE: Under development.
4446 #
4447 #
4448 # Use this rule to configure unregistered calls for the service. Unregistered
4449 # calls are calls that do not contain consumer project identity.
4450 # (Example: calls that do not contain an API key).
4451 # By default, API methods do not allow unregistered calls, and each method call
4452 # must be identified by a consumer project identity. Use this rule to
4453 # allow/disallow unregistered calls.
4454 #
4455 # Example of an API that wants to allow unregistered calls for entire service.
4456 #
4457 # usage:
4458 # rules:
4459 # - selector: "*"
4460 # allow_unregistered_calls: true
4461 #
4462 # Example of a method that wants to allow unregistered calls.
4463 #
4464 # usage:
4465 # rules:
4466 # - selector: "google.example.library.v1.LibraryService.CreateBook"
4467 # allow_unregistered_calls: true
Dan O'Mearadd494642020-05-01 07:42:23 -07004468 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
4469 # methods in all APIs.
4470 #
4471 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004472 "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
4473 # plane features, such as quota and billing, will not be available.
4474 # This flag is used by Google Cloud Endpoints to bypass checks for internal
4475 # methods, such as service health check methods.
4476 "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
4477 # that don't identify any user or application.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004478 },
4479 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07004480 "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
4481 #
4482 #
4483 # Use this field to configure per-product per-project service identity.
4484 # Example of a service identity configuration.
4485 #
4486 # usage:
4487 # service_identity:
4488 # - service_account_parent: "projects/123456789"
4489 # display_name: "Cloud XXX Service Agent"
4490 # description: "Used as the identity of Cloud XXX to access resources"
4491 "displayName": "A String", # Optional. A user-specified name for the service account.
4492 # Must be less than or equal to 100 UTF-8 bytes.
4493 "description": "A String", # Optional. A user-specified opaque description of the service account.
4494 # Must be less than or equal to 256 UTF-8 bytes.
4495 "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
4496 #
4497 # An example name would be:
4498 # `projects/123456789`
4499 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004500 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
4501 # service producer.
4502 #
4503 # Google Service Management currently only supports
4504 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
4505 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
4506 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
4507 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004508 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
Dan O'Mearadd494642020-05-01 07:42:23 -07004509 # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004510 # for example 'serviceusage.googleapis.com/billing-enabled'.
4511 "A String",
4512 ],
4513 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004514 "configVersion": 42, # The semantic version of the service configuration. The config version
4515 # affects the interpretation of the service configuration. For example,
4516 # certain features are enabled by default for certain config versions.
Dan O'Mearadd494642020-05-01 07:42:23 -07004517 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004518 # The latest config version is `3`.
4519 "producerProjectId": "A String", # The Google project that owns this service.
4520 "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004521 # HttpRule, each specifying the mapping of an RPC method
4522 # to one or more HTTP REST API methods.
4523 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
4524 #
4525 # **NOTE:** All service configuration rules follow "last one wins" order.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004526 { # # gRPC Transcoding
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004527 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004528 # gRPC Transcoding is a feature for mapping between a gRPC method and one or
4529 # more HTTP REST endpoints. It allows developers to build a single API service
4530 # that supports both gRPC APIs and REST APIs. Many systems, including [Google
4531 # APIs](https://github.com/googleapis/googleapis),
4532 # [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
4533 # Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
4534 # and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
4535 # and use it for large scale production services.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004536 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004537 # `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
4538 # how different portions of the gRPC request message are mapped to the URL
4539 # path, URL query parameters, and HTTP request body. It also controls how the
4540 # gRPC response message is mapped to the HTTP response body. `HttpRule` is
4541 # typically specified as an `google.api.http` annotation on the gRPC method.
4542 #
4543 # Each mapping specifies a URL path template and an HTTP method. The path
4544 # template may refer to one or more fields in the gRPC request message, as long
4545 # as each field is a non-repeated field with a primitive (non-message) type.
4546 # The path template controls how fields of the request message are mapped to
4547 # the URL path.
4548 #
4549 # Example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004550 #
4551 # service Messaging {
4552 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004553 # option (google.api.http) = {
4554 # get: "/v1/{name=messages/*}"
4555 # };
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004556 # }
4557 # }
4558 # message GetMessageRequest {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004559 # string name = 1; // Mapped to URL path.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004560 # }
4561 # message Message {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004562 # string text = 1; // The resource content.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004563 # }
4564 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004565 # This enables an HTTP REST to gRPC mapping as below:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004566 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004567 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004568 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004569 # `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004570 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004571 # Any fields in the request message which are not bound by the path template
4572 # automatically become HTTP query parameters if there is no HTTP request body.
4573 # For example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004574 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04004575 # service Messaging {
4576 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004577 # option (google.api.http) = {
4578 # get:"/v1/messages/{message_id}"
4579 # };
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04004580 # }
4581 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004582 # message GetMessageRequest {
4583 # message SubMessage {
4584 # string subfield = 1;
4585 # }
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004586 # string message_id = 1; // Mapped to URL path.
4587 # int64 revision = 2; // Mapped to URL query parameter `revision`.
4588 # SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004589 # }
4590 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004591 # This enables a HTTP JSON to RPC mapping as below:
4592 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004593 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004594 # -----|-----
Dan O'Mearadd494642020-05-01 07:42:23 -07004595 # `GET /v1/messages/123456?revision=2&amp;sub.subfield=foo` |
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004596 # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
4597 # "foo"))`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004598 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004599 # Note that fields which are mapped to URL query parameters must have a
4600 # primitive type or a repeated primitive type or a non-repeated message type.
4601 # In the case of a repeated type, the parameter can be repeated in the URL
Dan O'Mearadd494642020-05-01 07:42:23 -07004602 # as `...?param=A&amp;param=B`. In the case of a message type, each field of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004603 # message is mapped to a separate parameter, such as
Dan O'Mearadd494642020-05-01 07:42:23 -07004604 # `...?foo.a=A&amp;foo.b=B&amp;foo.c=C`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004605 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004606 # For HTTP methods that allow a request body, the `body` field
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004607 # specifies the mapping. Consider a REST update method on the
4608 # message resource collection:
4609 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004610 # service Messaging {
4611 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
4612 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004613 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004614 # body: "message"
4615 # };
4616 # }
4617 # }
4618 # message UpdateMessageRequest {
4619 # string message_id = 1; // mapped to the URL
4620 # Message message = 2; // mapped to the body
4621 # }
4622 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004623 # The following HTTP JSON to RPC mapping is enabled, where the
4624 # representation of the JSON in the request body is determined by
4625 # protos JSON encoding:
4626 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004627 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004628 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004629 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
4630 # "123456" message { text: "Hi!" })`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004631 #
4632 # The special name `*` can be used in the body mapping to define that
4633 # every field not bound by the path template should be mapped to the
4634 # request body. This enables the following alternative definition of
4635 # the update method:
4636 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004637 # service Messaging {
4638 # rpc UpdateMessage(Message) returns (Message) {
4639 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004640 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004641 # body: "*"
4642 # };
4643 # }
4644 # }
4645 # message Message {
4646 # string message_id = 1;
4647 # string text = 2;
4648 # }
4649 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004650 #
4651 # The following HTTP JSON to RPC mapping is enabled:
4652 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004653 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004654 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004655 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
4656 # "123456" text: "Hi!")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004657 #
4658 # Note that when using `*` in the body mapping, it is not possible to
4659 # have HTTP parameters, as all fields not bound by the path end in
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004660 # the body. This makes this option more rarely used in practice when
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004661 # defining REST APIs. The common usage of `*` is in custom methods
4662 # which don't use the URL at all for transferring data.
4663 #
4664 # It is possible to define multiple HTTP methods for one RPC by using
4665 # the `additional_bindings` option. Example:
4666 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004667 # service Messaging {
4668 # rpc GetMessage(GetMessageRequest) returns (Message) {
4669 # option (google.api.http) = {
4670 # get: "/v1/messages/{message_id}"
4671 # additional_bindings {
4672 # get: "/v1/users/{user_id}/messages/{message_id}"
4673 # }
4674 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004675 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004676 # }
4677 # message GetMessageRequest {
4678 # string message_id = 1;
4679 # string user_id = 2;
4680 # }
4681 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004682 # This enables the following two alternative HTTP JSON to RPC mappings:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004683 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004684 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004685 # -----|-----
4686 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004687 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
4688 # "123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004689 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004690 # ## Rules for HTTP mapping
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004691 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004692 # 1. Leaf request fields (recursive expansion nested messages in the request
4693 # message) are classified into three categories:
4694 # - Fields referred by the path template. They are passed via the URL path.
4695 # - Fields referred by the HttpRule.body. They are passed via the HTTP
4696 # request body.
4697 # - All other fields are passed via the URL query parameters, and the
4698 # parameter name is the field path in the request message. A repeated
4699 # field can be represented as multiple query parameters under the same
4700 # name.
4701 # 2. If HttpRule.body is "*", there is no URL query parameter, all fields
4702 # are passed via URL path and HTTP request body.
4703 # 3. If HttpRule.body is omitted, there is no HTTP request body, all
4704 # fields are passed via URL path and URL query parameters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004705 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004706 # ### Path template syntax
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004707 #
4708 # Template = "/" Segments [ Verb ] ;
4709 # Segments = Segment { "/" Segment } ;
4710 # Segment = "*" | "**" | LITERAL | Variable ;
4711 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
4712 # FieldPath = IDENT { "." IDENT } ;
4713 # Verb = ":" LITERAL ;
4714 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004715 # The syntax `*` matches a single URL path segment. The syntax `**` matches
4716 # zero or more URL path segments, which must be the last part of the URL path
4717 # except the `Verb`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004718 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004719 # The syntax `Variable` matches part of the URL path as specified by its
4720 # template. A variable template must not contain other variables. If a variable
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004721 # matches a single path segment, its template may be omitted, e.g. `{var}`
4722 # is equivalent to `{var=*}`.
4723 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004724 # The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
4725 # contains any reserved character, such characters should be percent-encoded
4726 # before the matching.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004727 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004728 # If a variable contains exactly one path segment, such as `"{var}"` or
4729 # `"{var=*}"`, when such a variable is expanded into a URL path on the client
4730 # side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
4731 # server side does the reverse decoding. Such variables show up in the
4732 # [Discovery
4733 # Document](https://developers.google.com/discovery/v1/reference/apis) as
4734 # `{var}`.
4735 #
4736 # If a variable contains multiple path segments, such as `"{var=foo/*}"`
4737 # or `"{var=**}"`, when such a variable is expanded into a URL path on the
4738 # client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
4739 # The server side does the reverse decoding, except "%2F" and "%2f" are left
4740 # unchanged. Such variables show up in the
4741 # [Discovery
4742 # Document](https://developers.google.com/discovery/v1/reference/apis) as
4743 # `{+var}`.
4744 #
4745 # ## Using gRPC API Service Configuration
4746 #
4747 # gRPC API Service Configuration (service config) is a configuration language
4748 # for configuring a gRPC service to become a user-facing product. The
4749 # service config is simply the YAML representation of the `google.api.Service`
4750 # proto message.
4751 #
4752 # As an alternative to annotating your proto file, you can configure gRPC
4753 # transcoding in your service config YAML files. You do this by specifying a
4754 # `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
4755 # effect as the proto annotation. This can be particularly useful if you
4756 # have a proto that is reused in multiple services. Note that any transcoding
4757 # specified in the service config will override any matching transcoding
4758 # configuration in the proto.
4759 #
4760 # Example:
4761 #
4762 # http:
4763 # rules:
4764 # # Selects a gRPC method and applies HttpRule to it.
4765 # - selector: example.v1.Messaging.GetMessage
4766 # get: /v1/messages/{message_id}/{sub.subfield}
4767 #
4768 # ## Special notes
4769 #
4770 # When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
4771 # proto to JSON conversion must follow the [proto3
4772 # specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
4773 #
4774 # While the single segment variable follows the semantics of
4775 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
4776 # Expansion, the multi segment variable **does not** follow RFC 6570 Section
4777 # 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
4778 # does not expand special characters like `?` and `#`, which would lead
4779 # to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
4780 # for multi segment variables.
4781 #
4782 # The path variables **must not** refer to any repeated or mapped field,
4783 # because client libraries are not capable of handling such variable expansion.
4784 #
4785 # The path variables **must not** capture the leading "/" character. The reason
4786 # is that the most common use case "{var}" does not capture the leading "/"
4787 # character. For consistency, all path variables must share the same behavior.
4788 #
4789 # Repeated message fields must not be mapped to URL query parameters, because
4790 # no client library can support such complicated mapping.
4791 #
4792 # If an API needs to use a JSON array for request or response body, it can map
4793 # the request or response body to a repeated field. However, some gRPC
4794 # Transcoding implementations may not support this feature.
4795 "body": "A String", # The name of the request field whose value is mapped to the HTTP request
4796 # body, or `*` for mapping all request fields not captured by the path
4797 # pattern to the HTTP body, or omitted for not having any HTTP request body.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04004798 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004799 # NOTE: the referred field must be present at the top-level of the request
4800 # message type.
Dan O'Mearadd494642020-05-01 07:42:23 -07004801 "get": "A String", # Maps to HTTP GET. Used for listing and getting information about
4802 # resources.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004803 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
4804 # not contain an `additional_bindings` field themselves (that is,
4805 # the nesting may only be one level deep).
4806 # Object with schema name: HttpRule
4807 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07004808 "selector": "A String", # Selects a method to which this rule applies.
4809 #
4810 # Refer to selector for syntax details.
4811 "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP
4812 # response body. When omitted, the entire response message will be used
4813 # as the HTTP response body.
4814 #
4815 # NOTE: The referred field must be present at the top-level of the response
4816 # message type.
4817 "allowHalfDuplex": True or False, # When this flag is set to true, HTTP requests will be allowed to invoke a
4818 # half-duplex streaming method.
4819 "put": "A String", # Maps to HTTP PUT. Used for replacing a resource.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004820 "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource.
Dan O'Mearadd494642020-05-01 07:42:23 -07004821 "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004822 "custom": { # A custom pattern is used for defining custom HTTP verb. # The custom pattern is used for specifying an HTTP method that is not
4823 # included in the `pattern` field, such as HEAD, or "*" to leave the
4824 # HTTP method unspecified for this rule. The wild-card rule is useful
4825 # for services that provide content to Web (HTML) clients.
Thomas Coffee2f245372017-03-27 10:39:26 -07004826 "path": "A String", # The path matched by this custom verb.
4827 "kind": "A String", # The name of this custom HTTP verb.
4828 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004829 "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004830 },
4831 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004832 "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parameters will be fully URI-decoded except in
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04004833 # cases of single segment matches in reserved expansion, where "%2F" will be
4834 # left encoded.
4835 #
4836 # The default behavior is to not decode RFC 6570 reserved characters in multi
4837 # segment matches.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004838 },
4839 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
4840 # of the google.protobuf.Api needs to be provided by the configuration
4841 # author, as the remaining fields will be derived from the IDL during the
4842 # normalization process. It is an error to specify an API interface here
4843 # which cannot be resolved against the associated IDL files.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004844 { # Api is a light-weight descriptor for an API Interface.
4845 #
4846 # Interfaces are also described as "protocol buffer services" in some contexts,
4847 # such as by the "service" keyword in a .proto file, but they are different
4848 # from API Services, which represent a concrete implementation of an interface
4849 # as opposed to simply a description of methods and bindings. They are also
4850 # sometimes simply referred to as "APIs" in other contexts, such as the name of
4851 # this message itself. See https://cloud.google.com/apis/design/glossary for
4852 # detailed terminology.
Dan O'Mearadd494642020-05-01 07:42:23 -07004853 "name": "A String", # The fully qualified name of this interface, including package name
4854 # followed by the interface's simple name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004855 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
4856 # message.
4857 # protobuf element, like the file in which it is defined.
4858 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
4859 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
4860 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004861 "mixins": [ # Included interfaces. See Mixin.
4862 { # Declares an API Interface to be included in this interface. The including
4863 # interface must redeclare all the methods from the included interface, but
4864 # documentation and options are inherited as follows:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004865 #
4866 # - If after comment and whitespace stripping, the documentation
4867 # string of the redeclared method is empty, it will be inherited
4868 # from the original method.
4869 #
4870 # - Each annotation belonging to the service config (http,
4871 # visibility) which is not set in the redeclared method will be
4872 # inherited.
4873 #
4874 # - If an http annotation is inherited, the path pattern will be
4875 # modified as follows. Any version prefix will be replaced by the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004876 # version of the including interface plus the root path if
4877 # specified.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004878 #
4879 # Example of a simple mixin:
4880 #
4881 # package google.acl.v1;
4882 # service AccessControl {
4883 # // Get the underlying ACL object.
4884 # rpc GetAcl(GetAclRequest) returns (Acl) {
4885 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
4886 # }
4887 # }
4888 #
4889 # package google.storage.v2;
4890 # service Storage {
4891 # // rpc GetAcl(GetAclRequest) returns (Acl);
4892 #
4893 # // Get a data record.
4894 # rpc GetData(GetDataRequest) returns (Data) {
4895 # option (google.api.http).get = "/v2/{resource=**}";
4896 # }
4897 # }
4898 #
4899 # Example of a mixin configuration:
4900 #
4901 # apis:
4902 # - name: google.storage.v2.Storage
4903 # mixins:
4904 # - name: google.acl.v1.AccessControl
4905 #
4906 # The mixin construct implies that all methods in `AccessControl` are
4907 # also declared with same name and request/response types in
4908 # `Storage`. A documentation generator or annotation processor will
4909 # see the effective `Storage.GetAcl` method after inherting
4910 # documentation and annotations as follows:
4911 #
4912 # service Storage {
4913 # // Get the underlying ACL object.
4914 # rpc GetAcl(GetAclRequest) returns (Acl) {
4915 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
4916 # }
4917 # ...
4918 # }
4919 #
4920 # Note how the version in the path pattern changed from `v1` to `v2`.
4921 #
4922 # If the `root` field in the mixin is specified, it should be a
4923 # relative path under which inherited HTTP paths are placed. Example:
4924 #
4925 # apis:
4926 # - name: google.storage.v2.Storage
4927 # mixins:
4928 # - name: google.acl.v1.AccessControl
4929 # root: acls
4930 #
4931 # This implies the following inherited HTTP annotation:
4932 #
4933 # service Storage {
4934 # // Get the underlying ACL object.
4935 # rpc GetAcl(GetAclRequest) returns (Acl) {
4936 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
4937 # }
4938 # ...
4939 # }
4940 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
4941 # are rooted.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004942 "name": "A String", # The fully qualified name of the interface which is included.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004943 },
4944 ],
4945 "syntax": "A String", # The source syntax of the service.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004946 "version": "A String", # A version string for this interface. If specified, must have the form
4947 # `major-version.minor-version`, as in `1.10`. If the minor version is
4948 # omitted, it defaults to zero. If the entire version field is empty, the
4949 # major version is derived from the package name, as outlined below. If the
4950 # field is not empty, the version in the package name will be verified to be
4951 # consistent with what is provided here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004952 #
4953 # The versioning schema uses [semantic
4954 # versioning](http://semver.org) where the major version number
4955 # indicates a breaking change and the minor version an additive,
4956 # non-breaking change. Both version numbers are signals to users
4957 # what to expect from different versions, and should be carefully
4958 # chosen based on the product plan.
4959 #
4960 # The major version is also reflected in the package name of the
Dan O'Mearadd494642020-05-01 07:42:23 -07004961 # interface, which must end in `v&lt;major-version&gt;`, as in
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004962 # `google.feature.v1`. For major versions 0 and 1, the suffix can
4963 # be omitted. Zero major versions must only be used for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07004964 # experimental, non-GA interfaces.
4965 "options": [ # Any metadata attached to the interface.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004966 { # A protocol buffer option, which can be attached to a message, field,
4967 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004968 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4969 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4970 # For custom options, it should be the fully-qualified name. For example,
4971 # `"google.api.http"`.
4972 "value": { # The option's value packed in an Any message. If the value is a primitive,
4973 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4974 # should be used. If the value is an enum, it should be stored as an int32
4975 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004976 "a_key": "", # Properties of the object. Contains field @type with type URL.
4977 },
4978 },
4979 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07004980 "methods": [ # The methods of this interface, in unspecified order.
4981 { # Method represents a method of an API interface.
4982 "name": "A String", # The simple name of this method.
4983 "requestStreaming": True or False, # If true, the request is streamed.
4984 "responseTypeUrl": "A String", # The URL of the output message type.
4985 "requestTypeUrl": "A String", # A URL of the input message type.
4986 "responseStreaming": True or False, # If true, the response is streamed.
4987 "syntax": "A String", # The source syntax of this method.
4988 "options": [ # Any metadata attached to the method.
4989 { # A protocol buffer option, which can be attached to a message, field,
4990 # enumeration, etc.
4991 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4992 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4993 # For custom options, it should be the fully-qualified name. For example,
4994 # `"google.api.http"`.
4995 "value": { # The option's value packed in an Any message. If the value is a primitive,
4996 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4997 # should be used. If the value is an enum, it should be stored as an int32
4998 # value using the google.protobuf.Int32Value type.
4999 "a_key": "", # Properties of the object. Contains field @type with type URL.
5000 },
5001 },
5002 ],
5003 },
5004 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005005 },
5006 ],
5007 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
5008 # specific protobuf types that can appear in error detail lists of
5009 # error responses.
5010 #
5011 # Example:
5012 #
5013 # custom_error:
5014 # types:
5015 # - google.foo.v1.CustomError
5016 # - google.foo.v1.AnotherError
5017 "rules": [ # The list of custom error rules that apply to individual API messages.
5018 #
5019 # **NOTE:** All service configuration rules follow "last one wins" order.
5020 { # A custom error rule.
5021 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
5022 # objects of this type will be filtered when they appear in error payload.
5023 "selector": "A String", # Selects messages to which this rule applies.
5024 #
5025 # Refer to selector for syntax details.
5026 },
5027 ],
5028 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
5029 "A String",
5030 ],
5031 },
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005032 "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
5033 # usage.
5034 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005035 # The metric based quota configuration works this way:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005036 # - The service configuration defines a set of metrics.
5037 # - For API calls, the quota.metric_rules maps methods to metrics with
5038 # corresponding costs.
5039 # - The quota.limits defines limits on the metrics, which will be used for
5040 # quota checks at runtime.
5041 #
5042 # An example quota configuration in yaml format:
5043 #
5044 # quota:
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005045 # limits:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005046 #
5047 # - name: apiWriteQpsPerProject
5048 # metric: library.googleapis.com/write_calls
5049 # unit: "1/min/{project}" # rate limit for consumer projects
5050 # values:
5051 # STANDARD: 10000
5052 #
5053 #
5054 # # The metric rules bind all methods to the read_calls metric,
5055 # # except for the UpdateBook and DeleteBook methods. These two methods
5056 # # are mapped to the write_calls metric, with the UpdateBook method
5057 # # consuming at twice rate as the DeleteBook method.
5058 # metric_rules:
5059 # - selector: "*"
5060 # metric_costs:
5061 # library.googleapis.com/read_calls: 1
5062 # - selector: google.example.library.v1.LibraryService.UpdateBook
5063 # metric_costs:
5064 # library.googleapis.com/write_calls: 2
5065 # - selector: google.example.library.v1.LibraryService.DeleteBook
5066 # metric_costs:
5067 # library.googleapis.com/write_calls: 1
5068 #
5069 # Corresponding Metric definition:
5070 #
5071 # metrics:
5072 # - name: library.googleapis.com/read_calls
5073 # display_name: Read requests
5074 # metric_kind: DELTA
5075 # value_type: INT64
5076 #
5077 # - name: library.googleapis.com/write_calls
5078 # display_name: Write requests
5079 # metric_kind: DELTA
5080 # value_type: INT64
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005081 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005082 "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
5083 # or more metrics.
5084 { # Bind API methods to metrics. Binding a method to a metric causes that
5085 # metric's configured quota behaviors to apply to the method call.
5086 "metricCosts": { # Metrics to update when the selected methods are called, and the associated
5087 # cost applied to each metric.
5088 #
5089 # The key of the map is the metric name, and the values are the amount
5090 # increased for the metric against which the quota limits are defined.
5091 # The value must not be negative.
5092 "a_key": "A String",
5093 },
5094 "selector": "A String", # Selects the methods to which this rule applies.
5095 #
5096 # Refer to selector for syntax details.
5097 },
5098 ],
5099 "limits": [ # List of `QuotaLimit` definitions for the service.
5100 { # `QuotaLimit` defines a specific limit that applies over a specified duration
5101 # for a limit type. There can be at most one limit for a duration and limit
5102 # type combination defined within a `QuotaGroup`.
5103 "displayName": "A String", # User-visible display name for this limit.
5104 # Optional. If not set, the UI will provide a default display name based on
5105 # the quota configuration. This field can be used to override the default
5106 # display name generated from the configuration.
Dan O'Mearadd494642020-05-01 07:42:23 -07005107 "description": "A String", # Optional. User-visible, extended description for this quota limit.
5108 # Should be used only when more context is needed to understand this limit
5109 # than provided by the limit's display name (see: `display_name`).
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005110 "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
5111 # duration. This is the number of tokens assigned when a client
5112 # application developer activates the service for his/her project.
5113 #
5114 # Specifying a value of 0 will block all requests. This can be used if you
5115 # are provisioning quota to selected consumers and blocking others.
5116 # Similarly, a value of -1 will indicate an unlimited quota. No other
5117 # negative values are allowed.
5118 #
5119 # Used by group-based quotas only.
5120 "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
5121 # the same metric will be checked together during runtime. The metric must be
5122 # defined within the service config.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005123 "values": { # Tiered limit values. You must specify this as a key:value pair, with an
5124 # integer value that is the maximum number of requests allowed for the
5125 # specified unit. Currently only STANDARD is supported.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005126 "a_key": "A String",
5127 },
5128 "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
5129 # duration. Client application developers can override the default limit up
5130 # to this maximum. If specified, this value cannot be set to a value less
5131 # than the default limit. If not specified, it is set to the default limit.
5132 #
5133 # To allow clients to apply overrides with no upper bound, set this to -1,
5134 # indicating unlimited maximum quota.
5135 #
5136 # Used by group-based quotas only.
Dan O'Mearadd494642020-05-01 07:42:23 -07005137 "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005138 #
5139 # Used by group-based quotas only.
5140 "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
5141 # The free tier is the number of tokens that will be subtracted from the
5142 # billed amount when billing is enabled.
5143 # This field can only be set on a limit with duration "1d", in a billable
5144 # group; it is invalid on any other limit. If this field is not set, it
5145 # defaults to 0, indicating that there is no free tier for this service.
5146 #
5147 # Used by group-based quotas only.
5148 "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
5149 # Metric.unit. The supported unit kinds are determined by the quota
5150 # backend system.
5151 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005152 # Here are some examples:
5153 # * "1/min/{project}" for quota per minute per project.
5154 #
5155 # Note: the order of unit components is insignificant.
5156 # The "1" at the beginning is required to follow the metric unit syntax.
Dan O'Mearadd494642020-05-01 07:42:23 -07005157 "name": "A String", # Name of the quota limit.
5158 #
5159 # The name must be provided, and it must be unique within the service. The
5160 # name can only include alphanumeric characters as well as '-'.
5161 #
5162 # The maximum length of the limit name is 64 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005163 },
5164 ],
5165 },
5166 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005167 { # Defines a metric type and its schema. Once a metric descriptor is created,
5168 # deleting or altering it stops data collection and makes the metric type's
5169 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005170 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
5171 # Use sentence case without an ending period, for example "Request count".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005172 # This field is optional but it is recommended to be set for any metrics
5173 # associated with user-visible concepts, such as Quota.
Dan O'Mearadd494642020-05-01 07:42:23 -07005174 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005175 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005176 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005177 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005178 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005179 "labels": [ # The set of labels that can be used to describe a specific
5180 # instance of this metric type. For example, the
5181 # `appengine.googleapis.com/http/server/response_latencies` metric
5182 # type has a label for the HTTP response code, `response_code`, so
5183 # you can look at latencies for successful responses or just
5184 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005185 { # A description of a label.
5186 "valueType": "A String", # The type of data that can be assigned to the label.
5187 "description": "A String", # A human-readable description for the label.
5188 "key": "A String", # The label key.
5189 },
5190 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005191 "launchStage": "A String", # Optional. The launch stage of the metric definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07005192 "monitoredResourceTypes": [ # Read-only. If present, then a time
5193 # series, which is identified partially by
5194 # a metric type and a MonitoredResourceDescriptor, that is associated
5195 # with this metric type can only be associated with one of the monitored
5196 # resource types listed here.
5197 "A String",
5198 ],
5199 "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
5200 "launchStage": "A String", # Deprecated. Must use the MetricDescriptor.launch_stage instead.
5201 "ingestDelay": "A String", # The delay of data points caused by ingestion. Data points older than this
5202 # age are guaranteed to be ingested and available to be read, excluding
5203 # data loss due to errors.
5204 "samplePeriod": "A String", # The sampling period of metric data points. For metrics which are written
5205 # periodically, consecutive data points are stored at this time interval,
5206 # excluding data loss due to errors. Metrics with a higher granularity have
5207 # a smaller sampling period.
5208 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005209 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005210 # URL-encoded. All user-defined metric types have the DNS name
5211 # `custom.googleapis.com` or `external.googleapis.com`. Metric types should
5212 # use a natural hierarchical grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005213 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005214 # "custom.googleapis.com/invoice/paid/amount"
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005215 # "external.googleapis.com/prometheus/up"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005216 # "appengine.googleapis.com/http/server/response_latencies"
Dan O'Mearadd494642020-05-01 07:42:23 -07005217 "unit": "A String", # The units in which the metric value is reported. It is only applicable
5218 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
5219 # defines the representation of the stored metric values.
5220 #
5221 # Different systems may scale the values to be more easily displayed (so a
5222 # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
5223 # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
5224 # `KBy`, then the value of the metric is always in thousands of bytes, no
5225 # matter how it may be displayed..
5226 #
5227 # If you want a custom metric to record the exact number of CPU-seconds used
5228 # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
5229 # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
5230 # CPU-seconds, then the value is written as `12005`.
5231 #
5232 # Alternatively, if you want a custom metric to record data in a more
5233 # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
5234 # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
5235 # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
5236 #
5237 # The supported units are a subset of [The Unified Code for Units of
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005238 # Measure](http://unitsofmeasure.org/ucum.html) standard:
5239 #
5240 # **Basic units (UNIT)**
5241 #
5242 # * `bit` bit
5243 # * `By` byte
5244 # * `s` second
5245 # * `min` minute
5246 # * `h` hour
5247 # * `d` day
5248 #
5249 # **Prefixes (PREFIX)**
5250 #
Dan O'Mearadd494642020-05-01 07:42:23 -07005251 # * `k` kilo (10^3)
5252 # * `M` mega (10^6)
5253 # * `G` giga (10^9)
5254 # * `T` tera (10^12)
5255 # * `P` peta (10^15)
5256 # * `E` exa (10^18)
5257 # * `Z` zetta (10^21)
5258 # * `Y` yotta (10^24)
5259 #
5260 # * `m` milli (10^-3)
5261 # * `u` micro (10^-6)
5262 # * `n` nano (10^-9)
5263 # * `p` pico (10^-12)
5264 # * `f` femto (10^-15)
5265 # * `a` atto (10^-18)
5266 # * `z` zepto (10^-21)
5267 # * `y` yocto (10^-24)
5268 #
5269 # * `Ki` kibi (2^10)
5270 # * `Mi` mebi (2^20)
5271 # * `Gi` gibi (2^30)
5272 # * `Ti` tebi (2^40)
5273 # * `Pi` pebi (2^50)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005274 #
5275 # **Grammar**
5276 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005277 # The grammar also includes these connectors:
5278 #
Dan O'Mearadd494642020-05-01 07:42:23 -07005279 # * `/` division or ratio (as an infix operator). For examples,
5280 # `kBy/{email}` or `MiBy/10ms` (although you should almost never
5281 # have `/s` in a metric `unit`; rates should always be computed at
5282 # query time from the underlying cumulative or delta value).
5283 # * `.` multiplication or composition (as an infix operator). For
5284 # examples, `GBy.d` or `k{watt}.h`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005285 #
5286 # The grammar for a unit is as follows:
5287 #
5288 # Expression = Component { "." Component } { "/" Component } ;
5289 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005290 # Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005291 # | Annotation
5292 # | "1"
5293 # ;
5294 #
5295 # Annotation = "{" NAME "}" ;
5296 #
5297 # Notes:
5298 #
Dan O'Mearadd494642020-05-01 07:42:23 -07005299 # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
5300 # is used alone, then the unit is equivalent to `1`. For examples,
5301 # `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005302 # * `NAME` is a sequence of non-blank printable ASCII characters not
Dan O'Mearadd494642020-05-01 07:42:23 -07005303 # containing `{` or `}`.
5304 # * `1` represents a unitary [dimensionless
5305 # unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
5306 # as in `1/s`. It is typically used when none of the basic units are
5307 # appropriate. For example, "new users per day" can be represented as
5308 # `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
5309 # users). Alternatively, "thousands of page views per day" would be
5310 # represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
5311 # value of `5.3` would mean "5300 page views per day").
5312 # * `%` represents dimensionless value of 1/100, and annotates values giving
5313 # a percentage (so the metric values are typically in the range of 0..100,
5314 # and a metric value `3` means "3 percent").
5315 # * `10^2.%` indicates a metric contains a ratio, typically in the range
5316 # 0..1, that will be multiplied by 100 and displayed as a percentage
5317 # (so a metric value `0.03` means "3 percent").
5318 "name": "A String", # The resource name of the metric descriptor.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005319 },
5320 ],
5321 "enums": [ # A list of all enum types included in this API service. Enums
5322 # referenced directly or indirectly by the `apis` are automatically
5323 # included. Enums which are not referenced but shall be included
5324 # should be listed here by name. Example:
5325 #
5326 # enums:
5327 # - name: google.someapi.v1.SomeEnum
5328 { # Enum type definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07005329 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005330 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5331 # protobuf element, like the file in which it is defined.
5332 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5333 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5334 },
Dan O'Mearadd494642020-05-01 07:42:23 -07005335 "options": [ # Protocol buffer options.
5336 { # A protocol buffer option, which can be attached to a message, field,
5337 # enumeration, etc.
5338 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5339 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5340 # For custom options, it should be the fully-qualified name. For example,
5341 # `"google.api.http"`.
5342 "value": { # The option's value packed in an Any message. If the value is a primitive,
5343 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5344 # should be used. If the value is an enum, it should be stored as an int32
5345 # value using the google.protobuf.Int32Value type.
5346 "a_key": "", # Properties of the object. Contains field @type with type URL.
5347 },
5348 },
5349 ],
5350 "name": "A String", # Enum type name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005351 "enumvalue": [ # Enum value definitions.
5352 { # Enum value definition.
5353 "options": [ # Protocol buffer options.
5354 { # A protocol buffer option, which can be attached to a message, field,
5355 # enumeration, etc.
5356 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5357 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5358 # For custom options, it should be the fully-qualified name. For example,
5359 # `"google.api.http"`.
5360 "value": { # The option's value packed in an Any message. If the value is a primitive,
5361 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5362 # should be used. If the value is an enum, it should be stored as an int32
5363 # value using the google.protobuf.Int32Value type.
5364 "a_key": "", # Properties of the object. Contains field @type with type URL.
5365 },
5366 },
5367 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005368 "number": 42, # Enum value number.
Dan O'Mearadd494642020-05-01 07:42:23 -07005369 "name": "A String", # Enum value name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005370 },
5371 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005372 },
5373 ],
5374 "types": [ # A list of all proto message types included in this API service.
5375 # Types referenced directly or indirectly by the `apis` are
5376 # automatically included. Messages which are not referenced but
5377 # shall be included, such as types used by the `google.protobuf.Any` type,
5378 # should be listed here by name. Example:
5379 #
5380 # types:
5381 # - name: google.protobuf.Int32
5382 { # A protocol buffer message type.
5383 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
5384 "A String",
5385 ],
5386 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005387 "fields": [ # The list of fields.
5388 { # A single field of a message type.
5389 "kind": "A String", # The field type.
5390 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
5391 # types. The first type has index 1; zero means the type is not in the list.
5392 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
5393 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
5394 "name": "A String", # The field name.
5395 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
5396 "jsonName": "A String", # The field JSON name.
5397 "number": 42, # The field number.
5398 "cardinality": "A String", # The field cardinality.
5399 "options": [ # The protocol buffer options.
5400 { # A protocol buffer option, which can be attached to a message, field,
5401 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005402 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5403 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5404 # For custom options, it should be the fully-qualified name. For example,
5405 # `"google.api.http"`.
5406 "value": { # The option's value packed in an Any message. If the value is a primitive,
5407 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5408 # should be used. If the value is an enum, it should be stored as an int32
5409 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005410 "a_key": "", # Properties of the object. Contains field @type with type URL.
5411 },
5412 },
5413 ],
5414 "packed": True or False, # Whether to use alternative packed wire representation.
5415 },
5416 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005417 "syntax": "A String", # The source syntax.
5418 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5419 # protobuf element, like the file in which it is defined.
5420 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5421 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5422 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005423 "options": [ # The protocol buffer options.
5424 { # A protocol buffer option, which can be attached to a message, field,
5425 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005426 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5427 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5428 # For custom options, it should be the fully-qualified name. For example,
5429 # `"google.api.http"`.
5430 "value": { # The option's value packed in an Any message. If the value is a primitive,
5431 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5432 # should be used. If the value is an enum, it should be stored as an int32
5433 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005434 "a_key": "", # Properties of the object. Contains field @type with type URL.
5435 },
5436 },
5437 ],
5438 },
5439 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005440 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005441 #
5442 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005443 # producer and consumer projects. In the example, the `activity_history`
5444 # log is sent to both the producer and consumer projects, whereas the
5445 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005446 #
5447 # monitored_resources:
5448 # - type: library.googleapis.com/branch
5449 # labels:
5450 # - key: /city
5451 # description: The city where the library branch is located in.
5452 # - key: /name
5453 # description: The name of the branch.
5454 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005455 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005456 # labels:
5457 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005458 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005459 # logging:
5460 # producer_destinations:
5461 # - monitored_resource: library.googleapis.com/branch
5462 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005463 # - activity_history
5464 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005465 # consumer_destinations:
5466 # - monitored_resource: library.googleapis.com/branch
5467 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005468 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005469 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
5470 # There can be multiple producer destinations, each one must have a
5471 # different monitored resource type. A log can be used in at most
5472 # one producer destination.
5473 { # Configuration of a specific logging destination (the producer project
5474 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005475 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005476 # Service.monitored_resources section.
5477 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005478 # be defined in the Service.logs section. If the log name is
5479 # not a domain scoped name, it will be automatically prefixed with
5480 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005481 "A String",
5482 ],
5483 },
5484 ],
5485 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
5486 # There can be multiple consumer destinations, each one must have a
5487 # different monitored resource type. A log can be used in at most
5488 # one consumer destination.
5489 { # Configuration of a specific logging destination (the producer project
5490 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005491 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005492 # Service.monitored_resources section.
5493 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005494 # be defined in the Service.logs section. If the log name is
5495 # not a domain scoped name, it will be automatically prefixed with
5496 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005497 "A String",
5498 ],
5499 },
5500 ],
5501 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005502 "name": "A String", # The service name, which is a DNS-like logical identifier for the
5503 # service, such as `calendar.googleapis.com`. The service name
5504 # typically goes through DNS verification to make sure the owner
5505 # of the service also owns the DNS name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005506 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
5507 #
5508 # Example:
Dan O'Mearadd494642020-05-01 07:42:23 -07005509 # &lt;pre&gt;&lt;code&gt;documentation:
5510 # summary: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005511 # The Google Calendar API gives access
5512 # to most calendar features.
5513 # pages:
5514 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07005515 # content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005516 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07005517 # content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005518 # subpages;
5519 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07005520 # content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005521 # rules:
5522 # - selector: google.calendar.Calendar.Get
Dan O'Mearadd494642020-05-01 07:42:23 -07005523 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005524 # ...
5525 # - selector: google.calendar.Calendar.Put
Dan O'Mearadd494642020-05-01 07:42:23 -07005526 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005527 # ...
Dan O'Mearadd494642020-05-01 07:42:23 -07005528 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005529 # Documentation is provided in markdown syntax. In addition to
5530 # standard markdown features, definition lists, tables and fenced
5531 # code blocks are supported. Section headers can be provided and are
5532 # interpreted relative to the section nesting of the context where
5533 # a documentation fragment is embedded.
5534 #
5535 # Documentation from the IDL is merged with documentation defined
5536 # via the config at normalization time, where documentation provided
5537 # by config rules overrides IDL provided.
5538 #
5539 # A number of constructs specific to the API platform are supported
5540 # in documentation text.
5541 #
5542 # In order to reference a proto element, the following
5543 # notation can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07005544 # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005545 # To override the display text used for the link, this can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07005546 # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005547 # Text can be excluded from doc using the following notation:
Dan O'Mearadd494642020-05-01 07:42:23 -07005548 # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005549 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005550 # A few directives are available in documentation. Note that
5551 # directives must appear on a single line to be properly
5552 # identified. The `include` directive includes a markdown file from
5553 # an external source:
Dan O'Mearadd494642020-05-01 07:42:23 -07005554 # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005555 # The `resource_for` directive marks a message to be the resource of
5556 # a collection in REST view. If it is not specified, tools attempt
5557 # to infer the resource from the operations in a collection:
Dan O'Mearadd494642020-05-01 07:42:23 -07005558 # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005559 # The directive `suppress_warning` does not directly affect documentation
5560 # and is documented together with service config validation.
5561 "rules": [ # A list of documentation rules that apply to individual API elements.
5562 #
5563 # **NOTE:** All service configuration rules follow "last one wins" order.
5564 { # A documentation rule provides information about individual API elements.
5565 "description": "A String", # Description of the selected API(s).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005566 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
5567 # an element is marked as `deprecated`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005568 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
5569 # qualified name of the element which may end in "*", indicating a wildcard.
5570 # Wildcards are only allowed at the end and for a whole component of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005571 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
5572 # wildcard will match one or more components. To specify a default for all
5573 # applicable elements, the whole pattern "*" is used.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005574 },
5575 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005576 "documentationRootUrl": "A String", # The URL to the root of documentation.
Dan O'Mearadd494642020-05-01 07:42:23 -07005577 "summary": "A String", # A short summary of what the service does. Can only be provided by
5578 # plain text.
5579 "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
5580 # from the yaml file) is not suitable. This can be seen in any fully
5581 # specified service urls as well as sections that show a base that other
5582 # urls are relative to.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005583 "overview": "A String", # Declares a single overview page. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07005584 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005585 # summary: ...
Dan O'Mearadd494642020-05-01 07:42:23 -07005586 # overview: &amp;#40;== include overview.md ==&amp;#41;
5587 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005588 # This is a shortcut for the following declaration (using pages style):
Dan O'Mearadd494642020-05-01 07:42:23 -07005589 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005590 # summary: ...
5591 # pages:
5592 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07005593 # content: &amp;#40;== include overview.md ==&amp;#41;
5594 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005595 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005596 "pages": [ # The top level pages for the documentation set.
5597 { # Represents a documentation page. A page can contain subpages to represent
5598 # nested documentation set structure.
Dan O'Mearadd494642020-05-01 07:42:23 -07005599 "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
5600 # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005601 "subpages": [ # Subpages of this page. The order of subpages specified here will be
5602 # honored in the generated docset.
5603 # Object with schema name: Page
5604 ],
5605 "name": "A String", # The name of the page. It will be used as an identity of the page to
5606 # generate URI of the page, text of the link to this page in navigation,
5607 # etc. The full page name (start from the root page name to this page
5608 # concatenated with `.`) can be used as reference to the page in your
5609 # documentation. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07005610 # &lt;pre&gt;&lt;code&gt;pages:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005611 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07005612 # content: &amp;#40;== include tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005613 # subpages:
5614 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07005615 # content: &amp;#40;== include tutorial_java.md ==&amp;#41;
5616 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005617 # You can reference `Java` page using Markdown reference link syntax:
5618 # `Java`.
5619 },
5620 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005621 },
5622 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
5623 "sourceFiles": [ # All files used during config generation.
5624 {
5625 "a_key": "", # Properties of the object. Contains field @type with type URL.
5626 },
5627 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005628 },
5629 "systemTypes": [ # A list of all proto message types included in this API service.
5630 # It serves similar purpose as [google.api.Service.types], except that
5631 # these types are not needed by user-defined APIs. Therefore, they will not
5632 # show up in the generated discovery doc. This field should only be used
5633 # to define system APIs in ESF.
5634 { # A protocol buffer message type.
5635 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
5636 "A String",
5637 ],
5638 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005639 "fields": [ # The list of fields.
5640 { # A single field of a message type.
5641 "kind": "A String", # The field type.
5642 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
5643 # types. The first type has index 1; zero means the type is not in the list.
5644 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
5645 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
5646 "name": "A String", # The field name.
5647 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
5648 "jsonName": "A String", # The field JSON name.
5649 "number": 42, # The field number.
5650 "cardinality": "A String", # The field cardinality.
5651 "options": [ # The protocol buffer options.
5652 { # A protocol buffer option, which can be attached to a message, field,
5653 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005654 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5655 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5656 # For custom options, it should be the fully-qualified name. For example,
5657 # `"google.api.http"`.
5658 "value": { # The option's value packed in an Any message. If the value is a primitive,
5659 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5660 # should be used. If the value is an enum, it should be stored as an int32
5661 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005662 "a_key": "", # Properties of the object. Contains field @type with type URL.
5663 },
5664 },
5665 ],
5666 "packed": True or False, # Whether to use alternative packed wire representation.
5667 },
5668 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005669 "syntax": "A String", # The source syntax.
5670 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5671 # protobuf element, like the file in which it is defined.
5672 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5673 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5674 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005675 "options": [ # The protocol buffer options.
5676 { # A protocol buffer option, which can be attached to a message, field,
5677 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005678 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5679 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5680 # For custom options, it should be the fully-qualified name. For example,
5681 # `"google.api.http"`.
5682 "value": { # The option's value packed in an Any message. If the value is a primitive,
5683 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5684 # should be used. If the value is an enum, it should be stored as an int32
5685 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005686 "a_key": "", # Properties of the object. Contains field @type with type URL.
5687 },
5688 },
5689 ],
5690 },
5691 ],
5692 "context": { # `Context` defines which contexts an API requests. # Context configuration.
5693 #
5694 # Example:
5695 #
5696 # context:
5697 # rules:
5698 # - selector: "*"
5699 # requested:
5700 # - google.rpc.context.ProjectContext
5701 # - google.rpc.context.OriginContext
5702 #
5703 # The above specifies that all methods in the API request
5704 # `google.rpc.context.ProjectContext` and
5705 # `google.rpc.context.OriginContext`.
5706 #
5707 # Available context types are defined in package
5708 # `google.rpc.context`.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005709 #
5710 # This also provides mechanism to whitelist any protobuf message extension that
Dan O'Mearadd494642020-05-01 07:42:23 -07005711 # can be sent in grpc metadata using “x-goog-ext-&lt;extension_id&gt;-bin” and
5712 # “x-goog-ext-&lt;extension_id&gt;-jspb” format. For example, list any service
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005713 # specific protobuf types that can appear in grpc metadata as follows in your
5714 # yaml file:
5715 #
5716 # Example:
5717 #
5718 # context:
5719 # rules:
5720 # - selector: "google.example.library.v1.LibraryService.CreateBook"
5721 # allowed_request_extensions:
5722 # - google.foo.v1.NewExtension
5723 # allowed_response_extensions:
5724 # - google.foo.v1.NewExtension
5725 #
5726 # You can also specify extension ID instead of fully qualified extension name
5727 # here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005728 "rules": [ # A list of RPC context rules that apply to individual API methods.
5729 #
5730 # **NOTE:** All service configuration rules follow "last one wins" order.
5731 { # A context rule provides information about the context for an individual API
5732 # element.
5733 "provided": [ # A list of full type names of provided contexts.
5734 "A String",
5735 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005736 "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
5737 # side channel from backend to client.
5738 "A String",
5739 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005740 "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
5741 # side channel from client to backend.
5742 "A String",
5743 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04005744 "requested": [ # A list of full type names of requested contexts.
5745 "A String",
5746 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07005747 "selector": "A String", # Selects the methods to which this rule applies.
5748 #
5749 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005750 },
5751 ],
5752 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005753 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
5754 # with the same name as the service is automatically generated to service all
5755 # defined APIs.
5756 { # `Endpoint` describes a network endpoint that serves a set of APIs.
5757 # A service may expose any number of endpoints, and all endpoints share the
5758 # same service configuration, such as quota configuration and monitoring
5759 # configuration.
5760 #
5761 # Example service configuration:
5762 #
5763 # name: library-example.googleapis.com
5764 # endpoints:
5765 # # Below entry makes 'google.example.library.v1.Library'
5766 # # API be served from endpoint address library-example.googleapis.com.
5767 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
5768 # # it to decide whether the subsequent cross-origin request is
5769 # # allowed to proceed.
5770 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005771 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005772 "allowCors": True or False, # Allowing
5773 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
5774 # cross-domain traffic, would allow the backends served from this endpoint to
5775 # receive and respond to HTTP OPTIONS requests. The response will be used by
5776 # the browser to determine whether the subsequent cross-origin request is
5777 # allowed to proceed.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005778 "target": "A String", # The specification of an Internet routable address of API frontend that will
5779 # handle requests to this [API
5780 # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
5781 # either a valid IPv4 address or a fully-qualified domain name. For example,
5782 # "8.8.8.8" or "myservice.appspot.com".
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005783 "features": [ # The list of features enabled on this endpoint.
5784 "A String",
5785 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005786 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07005787 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005788 # please specify multiple google.api.Endpoint for each of the intended
5789 # aliases.
Thomas Coffee2f245372017-03-27 10:39:26 -07005790 #
5791 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005792 "A String",
5793 ],
5794 },
5795 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005796 }</pre>
5797</div>
5798
5799<div class="method">
Thomas Coffee2f245372017-03-27 10:39:26 -07005800 <code class="details" id="list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005801 <pre>Lists the history of the service configuration for a managed service,
5802from the newest to the oldest.
5803
5804Args:
Dan O'Mearadd494642020-05-01 07:42:23 -07005805 serviceName: string, Required. The name of the service. See the [overview](/service-management/overview)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005806for naming requirements. For example: `example.googleapis.com`. (required)
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005807 pageSize: integer, The max number of items to include in the response list. Page size is 50
5808if not specified. Maximum value is 100.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005809 pageToken: string, The token of the page to retrieve.
5810 x__xgafv: string, V1 error format.
5811 Allowed values
5812 1 - v1 error format
5813 2 - v2 error format
5814
5815Returns:
5816 An object of the form:
5817
5818 { # Response message for ListServiceConfigs method.
5819 "nextPageToken": "A String", # The token of the next page of results.
5820 "serviceConfigs": [ # The list of service configuration resources.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005821 { # `Service` is the root object of Google service configuration schema. It
5822 # describes basic information about a service, such as the name and the
5823 # title, and delegates other aspects to sub-sections. Each sub-section is
5824 # either a proto message or a repeated proto message that configures a
5825 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005826 #
5827 # Example:
5828 #
5829 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005830 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005831 # name: calendar.googleapis.com
5832 # title: Google Calendar API
5833 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005834 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005835 # authentication:
5836 # providers:
5837 # - id: google_calendar_auth
5838 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
5839 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005840 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005841 # - selector: "*"
5842 # requirements:
5843 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005844 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
5845 # service controller handles features like abuse, quota, billing, logging,
5846 # monitoring, etc.
5847 "environment": "A String", # The service control environment to use. If empty, no control plane
5848 # feature (like quota and billing) will be enabled.
5849 },
5850 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
5851 # by the Service.monitoring and Service.logging configurations.
5852 { # An object that describes the schema of a MonitoredResource object using a
5853 # type name and a set of labels. For example, the monitored resource
5854 # descriptor for Google Compute Engine VM instances has a type of
5855 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
5856 # `"zone"` to identify particular VM instances.
5857 #
5858 # Different APIs can support different monitored resource types. APIs generally
5859 # provide a `list` method that returns the monitored resource descriptors used
5860 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07005861 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
5862 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
5863 # without any article or other determiners. For example,
5864 # `"Google Cloud SQL Database"`.
Dan O'Mearadd494642020-05-01 07:42:23 -07005865 "description": "A String", # Optional. A detailed description of the monitored resource type that might
5866 # be used in documentation.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07005867 "labels": [ # Required. A set of labels used to describe instances of this monitored
5868 # resource type. For example, an individual Google Cloud SQL database is
5869 # identified by values for the labels `"database_id"` and `"zone"`.
5870 { # A description of a label.
5871 "valueType": "A String", # The type of data that can be assigned to the label.
5872 "description": "A String", # A human-readable description for the label.
5873 "key": "A String", # The label key.
5874 },
5875 ],
5876 "launchStage": "A String", # Optional. The launch stage of the monitored resource definition.
5877 "type": "A String", # Required. The monitored resource type. For example, the type
5878 # `"cloudsql_database"` represents databases in Google Cloud SQL.
5879 # The maximum length of this value is 256 characters.
Dan O'Mearadd494642020-05-01 07:42:23 -07005880 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
5881 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
5882 # {type} is the value of the `type` field in this object and
5883 # {project_id} is a project ID that provides API-specific context for
5884 # accessing the type. APIs that do not use project information can use the
5885 # resource name format `"monitoredResourceDescriptors/{type}"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005886 },
5887 ],
5888 "logs": [ # Defines the logs used by this service.
5889 { # A description of a log type. Example in YAML format:
5890 #
5891 # - name: library.googleapis.com/activity_history
5892 # description: The history of borrowing and returning library items.
5893 # display_name: Activity
5894 # labels:
5895 # - key: /customer_id
5896 # description: Identifier of a library customer
5897 "labels": [ # The set of labels that are available to describe a specific log entry.
5898 # Runtime requests that contain labels not specified here are
5899 # considered invalid.
5900 { # A description of a label.
5901 "valueType": "A String", # The type of data that can be assigned to the label.
5902 "description": "A String", # A human-readable description for the label.
5903 "key": "A String", # The label key.
5904 },
5905 ],
5906 "displayName": "A String", # The human-readable name for this log. This information appears on
5907 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005908 "name": "A String", # The name of the log. It must be less than 512 characters long and can
5909 # include the following characters: upper- and lower-case alphanumeric
5910 # characters [A-Za-z0-9], and punctuation characters including
5911 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07005912 "description": "A String", # A human-readable description of this log. This information appears in
5913 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005914 },
5915 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07005916 "systemParameters": { # ### System parameter configuration # System parameter configuration.
5917 #
5918 # A system parameter is a special kind of parameter defined by the API
5919 # system, not by an individual API. It is typically mapped to an HTTP header
5920 # and/or a URL query parameter. This configuration specifies which methods
5921 # change the names of the system parameters.
5922 "rules": [ # Define system parameters.
5923 #
5924 # The parameters defined here will override the default parameters
5925 # implemented by the system. If this field is missing from the service
5926 # config, default system parameters will be used. Default system parameters
5927 # and names is implementation-dependent.
5928 #
5929 # Example: define api key for all methods
5930 #
5931 # system_parameters
5932 # rules:
5933 # - selector: "*"
5934 # parameters:
5935 # - name: api_key
5936 # url_query_parameter: api_key
5937 #
5938 #
5939 # Example: define 2 api key names for a specific method.
5940 #
5941 # system_parameters
5942 # rules:
5943 # - selector: "/ListShelves"
5944 # parameters:
5945 # - name: api_key
5946 # http_header: Api-Key1
5947 # - name: api_key
5948 # http_header: Api-Key2
5949 #
5950 # **NOTE:** All service configuration rules follow "last one wins" order.
5951 { # Define a system parameter rule mapping system parameter definitions to
5952 # methods.
5953 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
5954 # For a given method call, only one of them should be used. If multiple
5955 # names are used the behavior is implementation-dependent.
5956 # If none of the specified names are present the behavior is
5957 # parameter-dependent.
5958 { # Define a parameter's name and location. The parameter may be passed as either
5959 # an HTTP header or a URL query parameter, and if both are passed the behavior
5960 # is implementation-dependent.
5961 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
5962 # sensitive.
5963 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
5964 # insensitive.
5965 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
5966 },
5967 ],
5968 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
5969 # methods in all APIs.
5970 #
5971 # Refer to selector for syntax details.
5972 },
5973 ],
5974 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005975 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
5976 "rules": [ # A list of API backend rules that apply to individual API methods.
5977 #
5978 # **NOTE:** All service configuration rules follow "last one wins" order.
5979 { # A backend rule provides configuration for an individual API element.
Dan O'Mearadd494642020-05-01 07:42:23 -07005980 "jwtAudience": "A String", # The JWT audience is used when generating a JWT ID token for the backend.
5981 # This ID token will be added in the HTTP "authorization" header, and sent
5982 # to the backend.
5983 "protocol": "A String", # The protocol used for sending a request to the backend.
5984 # The supported values are "http/1.1" and "h2".
5985 #
5986 # The default value is inferred from the scheme in the
5987 # address field:
5988 #
5989 # SCHEME PROTOCOL
5990 # http:// http/1.1
5991 # https:// http/1.1
5992 # grpc:// h2
5993 # grpcs:// h2
5994 #
5995 # For secure HTTP backends (https://) that support HTTP/2, set this field
5996 # to "h2" for improved performance.
5997 #
5998 # Configuring this field to non-default values is only supported for secure
5999 # HTTP backends. This field will be ignored for all other backends.
6000 #
6001 # See
6002 # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
6003 # for more details on the supported values.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006004 "pathTranslation": "A String",
6005 "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
6006 # value lower than this will be rejected.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006007 "selector": "A String", # Selects the methods to which this rule applies.
6008 #
6009 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006010 "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running
6011 # operation. The default is no deadline.
Dan O'Mearadd494642020-05-01 07:42:23 -07006012 "deadline": 3.14, # The number of seconds to wait for a response from a request. The default
6013 # varies based on the request protocol and deployment environment.
6014 "disableAuth": True or False, # When disable_auth is true, a JWT ID token won't be generated and the
6015 # original "Authorization" HTTP header will be preserved. If the header is
6016 # used to carry the original token and is expected by the backend, this
6017 # field must be set to true to preserve the header.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006018 "address": "A String", # The address of the API backend.
Dan O'Mearadd494642020-05-01 07:42:23 -07006019 #
6020 # The scheme is used to determine the backend protocol and security.
6021 # The following schemes are accepted:
6022 #
6023 # SCHEME PROTOCOL SECURITY
6024 # http:// HTTP None
6025 # https:// HTTP TLS
6026 # grpc:// gRPC None
6027 # grpcs:// gRPC TLS
6028 #
6029 # It is recommended to explicitly include a scheme. Leaving out the scheme
6030 # may cause constrasting behaviors across platforms.
6031 #
6032 # If the port is unspecified, the default is:
6033 # - 80 for schemes without TLS
6034 # - 443 for schemes with TLS
6035 #
6036 # For HTTP backends, use protocol
6037 # to specify the protocol version.
6038 "renameTo": "A String", # Unimplemented. Do not use.
6039 #
6040 # The new name the selected proto elements should be renamed to.
6041 #
6042 # The package, the service and the method can all be renamed.
6043 # The backend server should implement the renamed proto. However, clients
6044 # should call the original method, and ESF routes the traffic to the renamed
6045 # method.
6046 #
6047 # HTTP clients should call the URL mapped to the original method.
6048 # gRPC and Stubby clients should call the original method with package name.
6049 #
6050 # For legacy reasons, ESF allows Stubby clients to call with the
6051 # short name (without the package name). However, for API Versioning(or
6052 # multiple methods mapped to the same short name), all Stubby clients must
6053 # call the method's full name with the package name, otherwise the first one
6054 # (selector) wins.
6055 #
6056 # If this `rename_to` is specified with a trailing `*`, the `selector` must
6057 # be specified with a trailing `*` as well. The all element short names
6058 # matched by the `*` in the selector will be kept in the `rename_to`.
6059 #
6060 # For example,
6061 # rename_rules:
6062 # - selector: |-
6063 # google.example.library.v1.*
6064 # rename_to: google.example.library.*
6065 #
6066 # The selector matches `google.example.library.v1.Library.CreateShelf` and
6067 # `google.example.library.v1.Library.CreateBook`, they will be renamed to
6068 # `google.example.library.Library.CreateShelf` and
6069 # `google.example.library.Library.CreateBook`. It essentially renames the
6070 # proto package name section of the matched proto service and methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006071 },
6072 ],
6073 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006074 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006075 #
6076 # The example below shows how to configure monitored resources and metrics
6077 # for monitoring. In the example, a monitored resource and two metrics are
6078 # defined. The `library.googleapis.com/book/returned_count` metric is sent
6079 # to both producer and consumer projects, whereas the
6080 # `library.googleapis.com/book/overdue_count` metric is only sent to the
6081 # consumer project.
6082 #
6083 # monitored_resources:
6084 # - type: library.googleapis.com/branch
6085 # labels:
6086 # - key: /city
6087 # description: The city where the library branch is located in.
6088 # - key: /name
6089 # description: The name of the branch.
6090 # metrics:
6091 # - name: library.googleapis.com/book/returned_count
6092 # metric_kind: DELTA
6093 # value_type: INT64
6094 # labels:
6095 # - key: /customer_id
6096 # - name: library.googleapis.com/book/overdue_count
6097 # metric_kind: GAUGE
6098 # value_type: INT64
6099 # labels:
6100 # - key: /customer_id
6101 # monitoring:
6102 # producer_destinations:
6103 # - monitored_resource: library.googleapis.com/branch
6104 # metrics:
6105 # - library.googleapis.com/book/returned_count
6106 # consumer_destinations:
6107 # - monitored_resource: library.googleapis.com/branch
6108 # metrics:
6109 # - library.googleapis.com/book/returned_count
6110 # - library.googleapis.com/book/overdue_count
6111 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006112 # There can be multiple producer destinations. A monitored resouce type may
6113 # appear in multiple monitoring destinations if different aggregations are
6114 # needed for different sets of metrics associated with that monitored
6115 # resource type. A monitored resource and metric pair may only be used once
6116 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006117 { # Configuration of a specific monitoring destination (the producer project
6118 # or the consumer project).
6119 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
6120 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006121 "metrics": [ # Types of the metrics to report to this monitoring destination.
6122 # Each type must be defined in Service.metrics section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006123 "A String",
6124 ],
6125 },
6126 ],
6127 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006128 # There can be multiple consumer destinations. A monitored resouce type may
6129 # appear in multiple monitoring destinations if different aggregations are
6130 # needed for different sets of metrics associated with that monitored
6131 # resource type. A monitored resource and metric pair may only be used once
6132 # in the Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006133 { # Configuration of a specific monitoring destination (the producer project
6134 # or the consumer project).
6135 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
6136 # Service.monitored_resources section.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006137 "metrics": [ # Types of the metrics to report to this monitoring destination.
6138 # Each type must be defined in Service.metrics section.
6139 "A String",
6140 ],
6141 },
6142 ],
6143 },
6144 "billing": { # Billing related configuration of the service. # Billing configuration.
6145 #
6146 # The following example shows how to configure monitored resources and metrics
6147 # for billing:
6148 #
6149 # monitored_resources:
6150 # - type: library.googleapis.com/branch
6151 # labels:
6152 # - key: /city
6153 # description: The city where the library branch is located in.
6154 # - key: /name
6155 # description: The name of the branch.
6156 # metrics:
6157 # - name: library.googleapis.com/book/borrowed_count
6158 # metric_kind: DELTA
6159 # value_type: INT64
6160 # billing:
6161 # consumer_destinations:
6162 # - monitored_resource: library.googleapis.com/branch
6163 # metrics:
6164 # - library.googleapis.com/book/borrowed_count
6165 "consumerDestinations": [ # Billing configurations for sending metrics to the consumer project.
6166 # There can be multiple consumer destinations per service, each one must have
6167 # a different monitored resource type. A metric can be used in at most
6168 # one consumer destination.
6169 { # Configuration of a specific billing destination (Currently only support
6170 # bill against consumer project).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006171 "metrics": [ # Names of the metrics to report to this billing destination.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006172 # Each name must be defined in Service.metrics section.
6173 "A String",
6174 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07006175 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
6176 # Service.monitored_resources section.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006177 },
6178 ],
6179 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006180 "title": "A String", # The product title for this service.
Dan O'Mearadd494642020-05-01 07:42:23 -07006181 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
6182 # by the client for tracking purpose. Must be no longer than 63 characters
6183 # and only lower case letters, digits, '.', '_' and '-' are allowed. If
6184 # empty, the server may choose to generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006185 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
6186 #
6187 # Example for an API targeted for external use:
6188 #
6189 # name: calendar.googleapis.com
6190 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006191 # providers:
6192 # - id: google_calendar_auth
6193 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
6194 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006195 # rules:
6196 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006197 # requirements:
6198 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006199 "rules": [ # A list of authentication rules that apply to individual API methods.
6200 #
6201 # **NOTE:** All service configuration rules follow "last one wins" order.
6202 { # Authentication rules for the service.
6203 #
6204 # By default, if a method has any authentication requirements, every request
6205 # must include a valid credential matching one of the requirements.
6206 # It's an error to include more than one kind of credential in a single
6207 # request.
6208 #
6209 # If a method doesn't have any auth requirements, request credentials will be
6210 # ignored.
6211 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
6212 # there are scopes defined for "Read-only access to Google Calendar" and
6213 # "Access to Cloud Platform". Users can consent to a scope for an application,
6214 # giving it permission to access that data on their behalf.
6215 #
6216 # OAuth scope specifications should be fairly coarse grained; a user will need
6217 # to see and understand the text description of what your scope means.
6218 #
6219 # In most cases: use one or at most two OAuth scopes for an entire family of
6220 # products. If your product has multiple APIs, you should probably be sharing
6221 # the OAuth scope across all of those APIs.
6222 #
6223 # When you need finer grained OAuth consent screens: talk with your product
6224 # management about how developers will use them in practice.
6225 #
6226 # Please note that even though each of the canonical scopes is enough for a
6227 # request to be accepted and passed to the backend, a request can still fail
6228 # due to the backend requiring additional scopes or permissions.
6229 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
6230 # OAuth token containing any of these scopes will be accepted.
6231 #
6232 # Example:
6233 #
6234 # canonical_scopes: https://www.googleapis.com/auth/calendar,
6235 # https://www.googleapis.com/auth/calendar.read
6236 },
6237 "requirements": [ # Requirements for additional authentication providers.
6238 { # User-defined authentication requirements, including support for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006239 # [JSON Web Token
6240 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006241 "providerId": "A String", # id from authentication provider.
6242 #
6243 # Example:
6244 #
6245 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006246 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
6247 # implemented and accepted in all the runtime components.
6248 #
6249 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006250 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
6251 # that are allowed to access. A JWT containing any of these audiences will
6252 # be accepted. When this setting is absent, only JWTs with audience
6253 # "https://Service_name/API_name"
6254 # will be accepted. For example, if no audiences are in the setting,
6255 # LibraryService API will only accept JWTs with the following audience
6256 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
6257 #
6258 # Example:
6259 #
6260 # audiences: bookstore_android.apps.googleusercontent.com,
6261 # bookstore_web.apps.googleusercontent.com
6262 },
6263 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07006264 "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006265 "selector": "A String", # Selects the methods to which this rule applies.
6266 #
6267 # Refer to selector for syntax details.
6268 },
6269 ],
6270 "providers": [ # Defines a set of authentication providers that a service supports.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006271 { # Configuration for an authentication provider, including support for
6272 # [JSON Web Token
6273 # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Dan O'Mearadd494642020-05-01 07:42:23 -07006274 "jwtLocations": [ # Defines the locations to extract the JWT.
6275 #
6276 # JWT locations can be either from HTTP headers or URL query parameters.
6277 # The rule is that the first match wins. The checking order is: checking
6278 # all headers first, then URL query parameters.
6279 #
6280 # If not specified, default to use following 3 locations:
6281 # 1) Authorization: Bearer
6282 # 2) x-goog-iap-jwt-assertion
6283 # 3) access_token query parameter
6284 #
6285 # Default locations can be specified as followings:
6286 # jwt_locations:
6287 # - header: Authorization
6288 # value_prefix: "Bearer "
6289 # - header: x-goog-iap-jwt-assertion
6290 # - query: access_token
6291 { # Specifies a location to extract JWT from an API request.
6292 "query": "A String", # Specifies URL query parameter name to extract JWT token.
6293 "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
6294 # Only applies to "in" header type. Must be empty for "in" query type.
6295 # If not empty, the header value has to match (case sensitive) this prefix.
6296 # If not matched, JWT will not be extracted. If matched, JWT will be
6297 # extracted after the prefix is removed.
6298 #
6299 # For example, for "Authorization: Bearer {JWT}",
6300 # value_prefix="Bearer " with a space at the end.
6301 "header": "A String", # Specifies HTTP header name to extract JWT token.
6302 },
6303 ],
6304 "audiences": "A String", # The list of JWT
6305 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
6306 # that are allowed to access. A JWT containing any of these audiences will
6307 # be accepted. When this setting is absent, JWTs with audiences:
6308 # - "https://[service.name]/[google.protobuf.Api.name]"
6309 # - "https://[service.name]/"
6310 # will be accepted.
6311 # For example, if no audiences are in the setting, LibraryService API will
6312 # accept JWTs with the following audiences:
6313 # -
6314 # https://library-example.googleapis.com/google.example.library.v1.LibraryService
6315 # - https://library-example.googleapis.com/
6316 #
6317 # Example:
6318 #
6319 # audiences: bookstore_android.apps.googleusercontent.com,
6320 # bookstore_web.apps.googleusercontent.com
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006321 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
6322 # [OpenID
6323 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
6324 # Optional if the key set document:
6325 # - can be retrieved from
6326 # [OpenID
6327 # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
6328 # the issuer.
6329 # - can be inferred from the email domain of the issuer (e.g. a Google
6330 # service account).
6331 #
6332 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006333 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
6334 # `AuthRequirement.provider_id`.
6335 #
6336 # Example: "bookstore_auth".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006337 "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
6338 # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006339 "issuer": "A String", # Identifies the principal that issued the JWT. See
6340 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
6341 # Usually a URL or an email address.
6342 #
6343 # Example: https://securetoken.google.com
6344 # Example: 1234567-compute@developer.gserviceaccount.com
6345 },
6346 ],
6347 },
6348 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
6349 "rules": [ # A list of usage rules that apply to individual API methods.
6350 #
6351 # **NOTE:** All service configuration rules follow "last one wins" order.
6352 { # Usage configuration rules for the service.
6353 #
6354 # NOTE: Under development.
6355 #
6356 #
6357 # Use this rule to configure unregistered calls for the service. Unregistered
6358 # calls are calls that do not contain consumer project identity.
6359 # (Example: calls that do not contain an API key).
6360 # By default, API methods do not allow unregistered calls, and each method call
6361 # must be identified by a consumer project identity. Use this rule to
6362 # allow/disallow unregistered calls.
6363 #
6364 # Example of an API that wants to allow unregistered calls for entire service.
6365 #
6366 # usage:
6367 # rules:
6368 # - selector: "*"
6369 # allow_unregistered_calls: true
6370 #
6371 # Example of a method that wants to allow unregistered calls.
6372 #
6373 # usage:
6374 # rules:
6375 # - selector: "google.example.library.v1.LibraryService.CreateBook"
6376 # allow_unregistered_calls: true
Dan O'Mearadd494642020-05-01 07:42:23 -07006377 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
6378 # methods in all APIs.
6379 #
6380 # Refer to selector for syntax details.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006381 "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
6382 # plane features, such as quota and billing, will not be available.
6383 # This flag is used by Google Cloud Endpoints to bypass checks for internal
6384 # methods, such as service health check methods.
6385 "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
6386 # that don't identify any user or application.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006387 },
6388 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07006389 "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
6390 #
6391 #
6392 # Use this field to configure per-product per-project service identity.
6393 # Example of a service identity configuration.
6394 #
6395 # usage:
6396 # service_identity:
6397 # - service_account_parent: "projects/123456789"
6398 # display_name: "Cloud XXX Service Agent"
6399 # description: "Used as the identity of Cloud XXX to access resources"
6400 "displayName": "A String", # Optional. A user-specified name for the service account.
6401 # Must be less than or equal to 100 UTF-8 bytes.
6402 "description": "A String", # Optional. A user-specified opaque description of the service account.
6403 # Must be less than or equal to 256 UTF-8 bytes.
6404 "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
6405 #
6406 # An example name would be:
6407 # `projects/123456789`
6408 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006409 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
6410 # service producer.
6411 #
6412 # Google Service Management currently only supports
6413 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
6414 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
6415 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
6416 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006417 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
Dan O'Mearadd494642020-05-01 07:42:23 -07006418 # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006419 # for example 'serviceusage.googleapis.com/billing-enabled'.
6420 "A String",
6421 ],
6422 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006423 "configVersion": 42, # The semantic version of the service configuration. The config version
6424 # affects the interpretation of the service configuration. For example,
6425 # certain features are enabled by default for certain config versions.
Dan O'Mearadd494642020-05-01 07:42:23 -07006426 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006427 # The latest config version is `3`.
6428 "producerProjectId": "A String", # The Google project that owns this service.
6429 "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006430 # HttpRule, each specifying the mapping of an RPC method
6431 # to one or more HTTP REST API methods.
6432 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
6433 #
6434 # **NOTE:** All service configuration rules follow "last one wins" order.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006435 { # # gRPC Transcoding
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006436 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006437 # gRPC Transcoding is a feature for mapping between a gRPC method and one or
6438 # more HTTP REST endpoints. It allows developers to build a single API service
6439 # that supports both gRPC APIs and REST APIs. Many systems, including [Google
6440 # APIs](https://github.com/googleapis/googleapis),
6441 # [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
6442 # Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
6443 # and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
6444 # and use it for large scale production services.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006445 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006446 # `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
6447 # how different portions of the gRPC request message are mapped to the URL
6448 # path, URL query parameters, and HTTP request body. It also controls how the
6449 # gRPC response message is mapped to the HTTP response body. `HttpRule` is
6450 # typically specified as an `google.api.http` annotation on the gRPC method.
6451 #
6452 # Each mapping specifies a URL path template and an HTTP method. The path
6453 # template may refer to one or more fields in the gRPC request message, as long
6454 # as each field is a non-repeated field with a primitive (non-message) type.
6455 # The path template controls how fields of the request message are mapped to
6456 # the URL path.
6457 #
6458 # Example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006459 #
6460 # service Messaging {
6461 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006462 # option (google.api.http) = {
6463 # get: "/v1/{name=messages/*}"
6464 # };
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006465 # }
6466 # }
6467 # message GetMessageRequest {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006468 # string name = 1; // Mapped to URL path.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006469 # }
6470 # message Message {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006471 # string text = 1; // The resource content.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006472 # }
6473 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006474 # This enables an HTTP REST to gRPC mapping as below:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006475 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006476 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006477 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006478 # `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006479 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006480 # Any fields in the request message which are not bound by the path template
6481 # automatically become HTTP query parameters if there is no HTTP request body.
6482 # For example:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006483 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006484 # service Messaging {
6485 # rpc GetMessage(GetMessageRequest) returns (Message) {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006486 # option (google.api.http) = {
6487 # get:"/v1/messages/{message_id}"
6488 # };
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006489 # }
6490 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006491 # message GetMessageRequest {
6492 # message SubMessage {
6493 # string subfield = 1;
6494 # }
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006495 # string message_id = 1; // Mapped to URL path.
6496 # int64 revision = 2; // Mapped to URL query parameter `revision`.
6497 # SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006498 # }
6499 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006500 # This enables a HTTP JSON to RPC mapping as below:
6501 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006502 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006503 # -----|-----
Dan O'Mearadd494642020-05-01 07:42:23 -07006504 # `GET /v1/messages/123456?revision=2&amp;sub.subfield=foo` |
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006505 # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
6506 # "foo"))`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006507 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006508 # Note that fields which are mapped to URL query parameters must have a
6509 # primitive type or a repeated primitive type or a non-repeated message type.
6510 # In the case of a repeated type, the parameter can be repeated in the URL
Dan O'Mearadd494642020-05-01 07:42:23 -07006511 # as `...?param=A&amp;param=B`. In the case of a message type, each field of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006512 # message is mapped to a separate parameter, such as
Dan O'Mearadd494642020-05-01 07:42:23 -07006513 # `...?foo.a=A&amp;foo.b=B&amp;foo.c=C`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006514 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006515 # For HTTP methods that allow a request body, the `body` field
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006516 # specifies the mapping. Consider a REST update method on the
6517 # message resource collection:
6518 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006519 # service Messaging {
6520 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
6521 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006522 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006523 # body: "message"
6524 # };
6525 # }
6526 # }
6527 # message UpdateMessageRequest {
6528 # string message_id = 1; // mapped to the URL
6529 # Message message = 2; // mapped to the body
6530 # }
6531 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006532 # The following HTTP JSON to RPC mapping is enabled, where the
6533 # representation of the JSON in the request body is determined by
6534 # protos JSON encoding:
6535 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006536 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006537 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006538 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
6539 # "123456" message { text: "Hi!" })`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006540 #
6541 # The special name `*` can be used in the body mapping to define that
6542 # every field not bound by the path template should be mapped to the
6543 # request body. This enables the following alternative definition of
6544 # the update method:
6545 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006546 # service Messaging {
6547 # rpc UpdateMessage(Message) returns (Message) {
6548 # option (google.api.http) = {
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006549 # patch: "/v1/messages/{message_id}"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006550 # body: "*"
6551 # };
6552 # }
6553 # }
6554 # message Message {
6555 # string message_id = 1;
6556 # string text = 2;
6557 # }
6558 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006559 #
6560 # The following HTTP JSON to RPC mapping is enabled:
6561 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006562 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006563 # -----|-----
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006564 # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
6565 # "123456" text: "Hi!")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006566 #
6567 # Note that when using `*` in the body mapping, it is not possible to
6568 # have HTTP parameters, as all fields not bound by the path end in
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006569 # the body. This makes this option more rarely used in practice when
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006570 # defining REST APIs. The common usage of `*` is in custom methods
6571 # which don't use the URL at all for transferring data.
6572 #
6573 # It is possible to define multiple HTTP methods for one RPC by using
6574 # the `additional_bindings` option. Example:
6575 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006576 # service Messaging {
6577 # rpc GetMessage(GetMessageRequest) returns (Message) {
6578 # option (google.api.http) = {
6579 # get: "/v1/messages/{message_id}"
6580 # additional_bindings {
6581 # get: "/v1/users/{user_id}/messages/{message_id}"
6582 # }
6583 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006584 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006585 # }
6586 # message GetMessageRequest {
6587 # string message_id = 1;
6588 # string user_id = 2;
6589 # }
6590 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006591 # This enables the following two alternative HTTP JSON to RPC mappings:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006592 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006593 # HTTP | gRPC
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006594 # -----|-----
6595 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006596 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id:
6597 # "123456")`
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006598 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006599 # ## Rules for HTTP mapping
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006600 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006601 # 1. Leaf request fields (recursive expansion nested messages in the request
6602 # message) are classified into three categories:
6603 # - Fields referred by the path template. They are passed via the URL path.
6604 # - Fields referred by the HttpRule.body. They are passed via the HTTP
6605 # request body.
6606 # - All other fields are passed via the URL query parameters, and the
6607 # parameter name is the field path in the request message. A repeated
6608 # field can be represented as multiple query parameters under the same
6609 # name.
6610 # 2. If HttpRule.body is "*", there is no URL query parameter, all fields
6611 # are passed via URL path and HTTP request body.
6612 # 3. If HttpRule.body is omitted, there is no HTTP request body, all
6613 # fields are passed via URL path and URL query parameters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006614 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006615 # ### Path template syntax
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006616 #
6617 # Template = "/" Segments [ Verb ] ;
6618 # Segments = Segment { "/" Segment } ;
6619 # Segment = "*" | "**" | LITERAL | Variable ;
6620 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
6621 # FieldPath = IDENT { "." IDENT } ;
6622 # Verb = ":" LITERAL ;
6623 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006624 # The syntax `*` matches a single URL path segment. The syntax `**` matches
6625 # zero or more URL path segments, which must be the last part of the URL path
6626 # except the `Verb`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006627 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006628 # The syntax `Variable` matches part of the URL path as specified by its
6629 # template. A variable template must not contain other variables. If a variable
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006630 # matches a single path segment, its template may be omitted, e.g. `{var}`
6631 # is equivalent to `{var=*}`.
6632 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006633 # The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
6634 # contains any reserved character, such characters should be percent-encoded
6635 # before the matching.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006636 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006637 # If a variable contains exactly one path segment, such as `"{var}"` or
6638 # `"{var=*}"`, when such a variable is expanded into a URL path on the client
6639 # side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
6640 # server side does the reverse decoding. Such variables show up in the
6641 # [Discovery
6642 # Document](https://developers.google.com/discovery/v1/reference/apis) as
6643 # `{var}`.
6644 #
6645 # If a variable contains multiple path segments, such as `"{var=foo/*}"`
6646 # or `"{var=**}"`, when such a variable is expanded into a URL path on the
6647 # client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
6648 # The server side does the reverse decoding, except "%2F" and "%2f" are left
6649 # unchanged. Such variables show up in the
6650 # [Discovery
6651 # Document](https://developers.google.com/discovery/v1/reference/apis) as
6652 # `{+var}`.
6653 #
6654 # ## Using gRPC API Service Configuration
6655 #
6656 # gRPC API Service Configuration (service config) is a configuration language
6657 # for configuring a gRPC service to become a user-facing product. The
6658 # service config is simply the YAML representation of the `google.api.Service`
6659 # proto message.
6660 #
6661 # As an alternative to annotating your proto file, you can configure gRPC
6662 # transcoding in your service config YAML files. You do this by specifying a
6663 # `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
6664 # effect as the proto annotation. This can be particularly useful if you
6665 # have a proto that is reused in multiple services. Note that any transcoding
6666 # specified in the service config will override any matching transcoding
6667 # configuration in the proto.
6668 #
6669 # Example:
6670 #
6671 # http:
6672 # rules:
6673 # # Selects a gRPC method and applies HttpRule to it.
6674 # - selector: example.v1.Messaging.GetMessage
6675 # get: /v1/messages/{message_id}/{sub.subfield}
6676 #
6677 # ## Special notes
6678 #
6679 # When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
6680 # proto to JSON conversion must follow the [proto3
6681 # specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
6682 #
6683 # While the single segment variable follows the semantics of
6684 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
6685 # Expansion, the multi segment variable **does not** follow RFC 6570 Section
6686 # 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
6687 # does not expand special characters like `?` and `#`, which would lead
6688 # to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
6689 # for multi segment variables.
6690 #
6691 # The path variables **must not** refer to any repeated or mapped field,
6692 # because client libraries are not capable of handling such variable expansion.
6693 #
6694 # The path variables **must not** capture the leading "/" character. The reason
6695 # is that the most common use case "{var}" does not capture the leading "/"
6696 # character. For consistency, all path variables must share the same behavior.
6697 #
6698 # Repeated message fields must not be mapped to URL query parameters, because
6699 # no client library can support such complicated mapping.
6700 #
6701 # If an API needs to use a JSON array for request or response body, it can map
6702 # the request or response body to a repeated field. However, some gRPC
6703 # Transcoding implementations may not support this feature.
6704 "body": "A String", # The name of the request field whose value is mapped to the HTTP request
6705 # body, or `*` for mapping all request fields not captured by the path
6706 # pattern to the HTTP body, or omitted for not having any HTTP request body.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006707 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006708 # NOTE: the referred field must be present at the top-level of the request
6709 # message type.
Dan O'Mearadd494642020-05-01 07:42:23 -07006710 "get": "A String", # Maps to HTTP GET. Used for listing and getting information about
6711 # resources.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006712 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
6713 # not contain an `additional_bindings` field themselves (that is,
6714 # the nesting may only be one level deep).
6715 # Object with schema name: HttpRule
6716 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07006717 "selector": "A String", # Selects a method to which this rule applies.
6718 #
6719 # Refer to selector for syntax details.
6720 "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP
6721 # response body. When omitted, the entire response message will be used
6722 # as the HTTP response body.
6723 #
6724 # NOTE: The referred field must be present at the top-level of the response
6725 # message type.
6726 "allowHalfDuplex": True or False, # When this flag is set to true, HTTP requests will be allowed to invoke a
6727 # half-duplex streaming method.
6728 "put": "A String", # Maps to HTTP PUT. Used for replacing a resource.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006729 "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource.
Dan O'Mearadd494642020-05-01 07:42:23 -07006730 "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006731 "custom": { # A custom pattern is used for defining custom HTTP verb. # The custom pattern is used for specifying an HTTP method that is not
6732 # included in the `pattern` field, such as HEAD, or "*" to leave the
6733 # HTTP method unspecified for this rule. The wild-card rule is useful
6734 # for services that provide content to Web (HTML) clients.
Thomas Coffee2f245372017-03-27 10:39:26 -07006735 "path": "A String", # The path matched by this custom verb.
6736 "kind": "A String", # The name of this custom HTTP verb.
6737 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006738 "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006739 },
6740 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006741 "fullyDecodeReservedExpansion": True or False, # When set to true, URL path parameters will be fully URI-decoded except in
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006742 # cases of single segment matches in reserved expansion, where "%2F" will be
6743 # left encoded.
6744 #
6745 # The default behavior is to not decode RFC 6570 reserved characters in multi
6746 # segment matches.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006747 },
6748 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
6749 # of the google.protobuf.Api needs to be provided by the configuration
6750 # author, as the remaining fields will be derived from the IDL during the
6751 # normalization process. It is an error to specify an API interface here
6752 # which cannot be resolved against the associated IDL files.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006753 { # Api is a light-weight descriptor for an API Interface.
6754 #
6755 # Interfaces are also described as "protocol buffer services" in some contexts,
6756 # such as by the "service" keyword in a .proto file, but they are different
6757 # from API Services, which represent a concrete implementation of an interface
6758 # as opposed to simply a description of methods and bindings. They are also
6759 # sometimes simply referred to as "APIs" in other contexts, such as the name of
6760 # this message itself. See https://cloud.google.com/apis/design/glossary for
6761 # detailed terminology.
Dan O'Mearadd494642020-05-01 07:42:23 -07006762 "name": "A String", # The fully qualified name of this interface, including package name
6763 # followed by the interface's simple name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006764 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
6765 # message.
6766 # protobuf element, like the file in which it is defined.
6767 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
6768 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
6769 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006770 "mixins": [ # Included interfaces. See Mixin.
6771 { # Declares an API Interface to be included in this interface. The including
6772 # interface must redeclare all the methods from the included interface, but
6773 # documentation and options are inherited as follows:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006774 #
6775 # - If after comment and whitespace stripping, the documentation
6776 # string of the redeclared method is empty, it will be inherited
6777 # from the original method.
6778 #
6779 # - Each annotation belonging to the service config (http,
6780 # visibility) which is not set in the redeclared method will be
6781 # inherited.
6782 #
6783 # - If an http annotation is inherited, the path pattern will be
6784 # modified as follows. Any version prefix will be replaced by the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006785 # version of the including interface plus the root path if
6786 # specified.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006787 #
6788 # Example of a simple mixin:
6789 #
6790 # package google.acl.v1;
6791 # service AccessControl {
6792 # // Get the underlying ACL object.
6793 # rpc GetAcl(GetAclRequest) returns (Acl) {
6794 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
6795 # }
6796 # }
6797 #
6798 # package google.storage.v2;
6799 # service Storage {
6800 # // rpc GetAcl(GetAclRequest) returns (Acl);
6801 #
6802 # // Get a data record.
6803 # rpc GetData(GetDataRequest) returns (Data) {
6804 # option (google.api.http).get = "/v2/{resource=**}";
6805 # }
6806 # }
6807 #
6808 # Example of a mixin configuration:
6809 #
6810 # apis:
6811 # - name: google.storage.v2.Storage
6812 # mixins:
6813 # - name: google.acl.v1.AccessControl
6814 #
6815 # The mixin construct implies that all methods in `AccessControl` are
6816 # also declared with same name and request/response types in
6817 # `Storage`. A documentation generator or annotation processor will
6818 # see the effective `Storage.GetAcl` method after inherting
6819 # documentation and annotations as follows:
6820 #
6821 # service Storage {
6822 # // Get the underlying ACL object.
6823 # rpc GetAcl(GetAclRequest) returns (Acl) {
6824 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
6825 # }
6826 # ...
6827 # }
6828 #
6829 # Note how the version in the path pattern changed from `v1` to `v2`.
6830 #
6831 # If the `root` field in the mixin is specified, it should be a
6832 # relative path under which inherited HTTP paths are placed. Example:
6833 #
6834 # apis:
6835 # - name: google.storage.v2.Storage
6836 # mixins:
6837 # - name: google.acl.v1.AccessControl
6838 # root: acls
6839 #
6840 # This implies the following inherited HTTP annotation:
6841 #
6842 # service Storage {
6843 # // Get the underlying ACL object.
6844 # rpc GetAcl(GetAclRequest) returns (Acl) {
6845 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
6846 # }
6847 # ...
6848 # }
6849 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
6850 # are rooted.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006851 "name": "A String", # The fully qualified name of the interface which is included.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006852 },
6853 ],
6854 "syntax": "A String", # The source syntax of the service.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006855 "version": "A String", # A version string for this interface. If specified, must have the form
6856 # `major-version.minor-version`, as in `1.10`. If the minor version is
6857 # omitted, it defaults to zero. If the entire version field is empty, the
6858 # major version is derived from the package name, as outlined below. If the
6859 # field is not empty, the version in the package name will be verified to be
6860 # consistent with what is provided here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006861 #
6862 # The versioning schema uses [semantic
6863 # versioning](http://semver.org) where the major version number
6864 # indicates a breaking change and the minor version an additive,
6865 # non-breaking change. Both version numbers are signals to users
6866 # what to expect from different versions, and should be carefully
6867 # chosen based on the product plan.
6868 #
6869 # The major version is also reflected in the package name of the
Dan O'Mearadd494642020-05-01 07:42:23 -07006870 # interface, which must end in `v&lt;major-version&gt;`, as in
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006871 # `google.feature.v1`. For major versions 0 and 1, the suffix can
6872 # be omitted. Zero major versions must only be used for
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006873 # experimental, non-GA interfaces.
6874 "options": [ # Any metadata attached to the interface.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006875 { # A protocol buffer option, which can be attached to a message, field,
6876 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08006877 "name": "A String", # The option's name. For protobuf built-in options (options defined in
6878 # descriptor.proto), this is the short name. For example, `"map_entry"`.
6879 # For custom options, it should be the fully-qualified name. For example,
6880 # `"google.api.http"`.
6881 "value": { # The option's value packed in an Any message. If the value is a primitive,
6882 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
6883 # should be used. If the value is an enum, it should be stored as an int32
6884 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006885 "a_key": "", # Properties of the object. Contains field @type with type URL.
6886 },
6887 },
6888 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07006889 "methods": [ # The methods of this interface, in unspecified order.
6890 { # Method represents a method of an API interface.
6891 "name": "A String", # The simple name of this method.
6892 "requestStreaming": True or False, # If true, the request is streamed.
6893 "responseTypeUrl": "A String", # The URL of the output message type.
6894 "requestTypeUrl": "A String", # A URL of the input message type.
6895 "responseStreaming": True or False, # If true, the response is streamed.
6896 "syntax": "A String", # The source syntax of this method.
6897 "options": [ # Any metadata attached to the method.
6898 { # A protocol buffer option, which can be attached to a message, field,
6899 # enumeration, etc.
6900 "name": "A String", # The option's name. For protobuf built-in options (options defined in
6901 # descriptor.proto), this is the short name. For example, `"map_entry"`.
6902 # For custom options, it should be the fully-qualified name. For example,
6903 # `"google.api.http"`.
6904 "value": { # The option's value packed in an Any message. If the value is a primitive,
6905 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
6906 # should be used. If the value is an enum, it should be stored as an int32
6907 # value using the google.protobuf.Int32Value type.
6908 "a_key": "", # Properties of the object. Contains field @type with type URL.
6909 },
6910 },
6911 ],
6912 },
6913 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006914 },
6915 ],
6916 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
6917 # specific protobuf types that can appear in error detail lists of
6918 # error responses.
6919 #
6920 # Example:
6921 #
6922 # custom_error:
6923 # types:
6924 # - google.foo.v1.CustomError
6925 # - google.foo.v1.AnotherError
6926 "rules": [ # The list of custom error rules that apply to individual API messages.
6927 #
6928 # **NOTE:** All service configuration rules follow "last one wins" order.
6929 { # A custom error rule.
6930 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
6931 # objects of this type will be filtered when they appear in error payload.
6932 "selector": "A String", # Selects messages to which this rule applies.
6933 #
6934 # Refer to selector for syntax details.
6935 },
6936 ],
6937 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
6938 "A String",
6939 ],
6940 },
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006941 "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
6942 # usage.
6943 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006944 # The metric based quota configuration works this way:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006945 # - The service configuration defines a set of metrics.
6946 # - For API calls, the quota.metric_rules maps methods to metrics with
6947 # corresponding costs.
6948 # - The quota.limits defines limits on the metrics, which will be used for
6949 # quota checks at runtime.
6950 #
6951 # An example quota configuration in yaml format:
6952 #
6953 # quota:
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006954 # limits:
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006955 #
6956 # - name: apiWriteQpsPerProject
6957 # metric: library.googleapis.com/write_calls
6958 # unit: "1/min/{project}" # rate limit for consumer projects
6959 # values:
6960 # STANDARD: 10000
6961 #
6962 #
6963 # # The metric rules bind all methods to the read_calls metric,
6964 # # except for the UpdateBook and DeleteBook methods. These two methods
6965 # # are mapped to the write_calls metric, with the UpdateBook method
6966 # # consuming at twice rate as the DeleteBook method.
6967 # metric_rules:
6968 # - selector: "*"
6969 # metric_costs:
6970 # library.googleapis.com/read_calls: 1
6971 # - selector: google.example.library.v1.LibraryService.UpdateBook
6972 # metric_costs:
6973 # library.googleapis.com/write_calls: 2
6974 # - selector: google.example.library.v1.LibraryService.DeleteBook
6975 # metric_costs:
6976 # library.googleapis.com/write_calls: 1
6977 #
6978 # Corresponding Metric definition:
6979 #
6980 # metrics:
6981 # - name: library.googleapis.com/read_calls
6982 # display_name: Read requests
6983 # metric_kind: DELTA
6984 # value_type: INT64
6985 #
6986 # - name: library.googleapis.com/write_calls
6987 # display_name: Write requests
6988 # metric_kind: DELTA
6989 # value_type: INT64
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07006990 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04006991 "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
6992 # or more metrics.
6993 { # Bind API methods to metrics. Binding a method to a metric causes that
6994 # metric's configured quota behaviors to apply to the method call.
6995 "metricCosts": { # Metrics to update when the selected methods are called, and the associated
6996 # cost applied to each metric.
6997 #
6998 # The key of the map is the metric name, and the values are the amount
6999 # increased for the metric against which the quota limits are defined.
7000 # The value must not be negative.
7001 "a_key": "A String",
7002 },
7003 "selector": "A String", # Selects the methods to which this rule applies.
7004 #
7005 # Refer to selector for syntax details.
7006 },
7007 ],
7008 "limits": [ # List of `QuotaLimit` definitions for the service.
7009 { # `QuotaLimit` defines a specific limit that applies over a specified duration
7010 # for a limit type. There can be at most one limit for a duration and limit
7011 # type combination defined within a `QuotaGroup`.
7012 "displayName": "A String", # User-visible display name for this limit.
7013 # Optional. If not set, the UI will provide a default display name based on
7014 # the quota configuration. This field can be used to override the default
7015 # display name generated from the configuration.
Dan O'Mearadd494642020-05-01 07:42:23 -07007016 "description": "A String", # Optional. User-visible, extended description for this quota limit.
7017 # Should be used only when more context is needed to understand this limit
7018 # than provided by the limit's display name (see: `display_name`).
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007019 "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
7020 # duration. This is the number of tokens assigned when a client
7021 # application developer activates the service for his/her project.
7022 #
7023 # Specifying a value of 0 will block all requests. This can be used if you
7024 # are provisioning quota to selected consumers and blocking others.
7025 # Similarly, a value of -1 will indicate an unlimited quota. No other
7026 # negative values are allowed.
7027 #
7028 # Used by group-based quotas only.
7029 "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
7030 # the same metric will be checked together during runtime. The metric must be
7031 # defined within the service config.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007032 "values": { # Tiered limit values. You must specify this as a key:value pair, with an
7033 # integer value that is the maximum number of requests allowed for the
7034 # specified unit. Currently only STANDARD is supported.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007035 "a_key": "A String",
7036 },
7037 "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
7038 # duration. Client application developers can override the default limit up
7039 # to this maximum. If specified, this value cannot be set to a value less
7040 # than the default limit. If not specified, it is set to the default limit.
7041 #
7042 # To allow clients to apply overrides with no upper bound, set this to -1,
7043 # indicating unlimited maximum quota.
7044 #
7045 # Used by group-based quotas only.
Dan O'Mearadd494642020-05-01 07:42:23 -07007046 "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007047 #
7048 # Used by group-based quotas only.
7049 "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
7050 # The free tier is the number of tokens that will be subtracted from the
7051 # billed amount when billing is enabled.
7052 # This field can only be set on a limit with duration "1d", in a billable
7053 # group; it is invalid on any other limit. If this field is not set, it
7054 # defaults to 0, indicating that there is no free tier for this service.
7055 #
7056 # Used by group-based quotas only.
7057 "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
7058 # Metric.unit. The supported unit kinds are determined by the quota
7059 # backend system.
7060 #
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007061 # Here are some examples:
7062 # * "1/min/{project}" for quota per minute per project.
7063 #
7064 # Note: the order of unit components is insignificant.
7065 # The "1" at the beginning is required to follow the metric unit syntax.
Dan O'Mearadd494642020-05-01 07:42:23 -07007066 "name": "A String", # Name of the quota limit.
7067 #
7068 # The name must be provided, and it must be unique within the service. The
7069 # name can only include alphanumeric characters as well as '-'.
7070 #
7071 # The maximum length of the limit name is 64 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007072 },
7073 ],
7074 },
7075 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007076 { # Defines a metric type and its schema. Once a metric descriptor is created,
7077 # deleting or altering it stops data collection and makes the metric type's
7078 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007079 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
7080 # Use sentence case without an ending period, for example "Request count".
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007081 # This field is optional but it is recommended to be set for any metrics
7082 # associated with user-visible concepts, such as Quota.
Dan O'Mearadd494642020-05-01 07:42:23 -07007083 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007084 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007085 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007086 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007087 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007088 "labels": [ # The set of labels that can be used to describe a specific
7089 # instance of this metric type. For example, the
7090 # `appengine.googleapis.com/http/server/response_latencies` metric
7091 # type has a label for the HTTP response code, `response_code`, so
7092 # you can look at latencies for successful responses or just
7093 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007094 { # A description of a label.
7095 "valueType": "A String", # The type of data that can be assigned to the label.
7096 "description": "A String", # A human-readable description for the label.
7097 "key": "A String", # The label key.
7098 },
7099 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007100 "launchStage": "A String", # Optional. The launch stage of the metric definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07007101 "monitoredResourceTypes": [ # Read-only. If present, then a time
7102 # series, which is identified partially by
7103 # a metric type and a MonitoredResourceDescriptor, that is associated
7104 # with this metric type can only be associated with one of the monitored
7105 # resource types listed here.
7106 "A String",
7107 ],
7108 "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
7109 "launchStage": "A String", # Deprecated. Must use the MetricDescriptor.launch_stage instead.
7110 "ingestDelay": "A String", # The delay of data points caused by ingestion. Data points older than this
7111 # age are guaranteed to be ingested and available to be read, excluding
7112 # data loss due to errors.
7113 "samplePeriod": "A String", # The sampling period of metric data points. For metrics which are written
7114 # periodically, consecutive data points are stored at this time interval,
7115 # excluding data loss due to errors. Metrics with a higher granularity have
7116 # a smaller sampling period.
7117 },
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007118 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007119 # URL-encoded. All user-defined metric types have the DNS name
7120 # `custom.googleapis.com` or `external.googleapis.com`. Metric types should
7121 # use a natural hierarchical grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007122 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007123 # "custom.googleapis.com/invoice/paid/amount"
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007124 # "external.googleapis.com/prometheus/up"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007125 # "appengine.googleapis.com/http/server/response_latencies"
Dan O'Mearadd494642020-05-01 07:42:23 -07007126 "unit": "A String", # The units in which the metric value is reported. It is only applicable
7127 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
7128 # defines the representation of the stored metric values.
7129 #
7130 # Different systems may scale the values to be more easily displayed (so a
7131 # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
7132 # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
7133 # `KBy`, then the value of the metric is always in thousands of bytes, no
7134 # matter how it may be displayed..
7135 #
7136 # If you want a custom metric to record the exact number of CPU-seconds used
7137 # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
7138 # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
7139 # CPU-seconds, then the value is written as `12005`.
7140 #
7141 # Alternatively, if you want a custom metric to record data in a more
7142 # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
7143 # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
7144 # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
7145 #
7146 # The supported units are a subset of [The Unified Code for Units of
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007147 # Measure](http://unitsofmeasure.org/ucum.html) standard:
7148 #
7149 # **Basic units (UNIT)**
7150 #
7151 # * `bit` bit
7152 # * `By` byte
7153 # * `s` second
7154 # * `min` minute
7155 # * `h` hour
7156 # * `d` day
7157 #
7158 # **Prefixes (PREFIX)**
7159 #
Dan O'Mearadd494642020-05-01 07:42:23 -07007160 # * `k` kilo (10^3)
7161 # * `M` mega (10^6)
7162 # * `G` giga (10^9)
7163 # * `T` tera (10^12)
7164 # * `P` peta (10^15)
7165 # * `E` exa (10^18)
7166 # * `Z` zetta (10^21)
7167 # * `Y` yotta (10^24)
7168 #
7169 # * `m` milli (10^-3)
7170 # * `u` micro (10^-6)
7171 # * `n` nano (10^-9)
7172 # * `p` pico (10^-12)
7173 # * `f` femto (10^-15)
7174 # * `a` atto (10^-18)
7175 # * `z` zepto (10^-21)
7176 # * `y` yocto (10^-24)
7177 #
7178 # * `Ki` kibi (2^10)
7179 # * `Mi` mebi (2^20)
7180 # * `Gi` gibi (2^30)
7181 # * `Ti` tebi (2^40)
7182 # * `Pi` pebi (2^50)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007183 #
7184 # **Grammar**
7185 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007186 # The grammar also includes these connectors:
7187 #
Dan O'Mearadd494642020-05-01 07:42:23 -07007188 # * `/` division or ratio (as an infix operator). For examples,
7189 # `kBy/{email}` or `MiBy/10ms` (although you should almost never
7190 # have `/s` in a metric `unit`; rates should always be computed at
7191 # query time from the underlying cumulative or delta value).
7192 # * `.` multiplication or composition (as an infix operator). For
7193 # examples, `GBy.d` or `k{watt}.h`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007194 #
7195 # The grammar for a unit is as follows:
7196 #
7197 # Expression = Component { "." Component } { "/" Component } ;
7198 #
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007199 # Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007200 # | Annotation
7201 # | "1"
7202 # ;
7203 #
7204 # Annotation = "{" NAME "}" ;
7205 #
7206 # Notes:
7207 #
Dan O'Mearadd494642020-05-01 07:42:23 -07007208 # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
7209 # is used alone, then the unit is equivalent to `1`. For examples,
7210 # `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007211 # * `NAME` is a sequence of non-blank printable ASCII characters not
Dan O'Mearadd494642020-05-01 07:42:23 -07007212 # containing `{` or `}`.
7213 # * `1` represents a unitary [dimensionless
7214 # unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
7215 # as in `1/s`. It is typically used when none of the basic units are
7216 # appropriate. For example, "new users per day" can be represented as
7217 # `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
7218 # users). Alternatively, "thousands of page views per day" would be
7219 # represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
7220 # value of `5.3` would mean "5300 page views per day").
7221 # * `%` represents dimensionless value of 1/100, and annotates values giving
7222 # a percentage (so the metric values are typically in the range of 0..100,
7223 # and a metric value `3` means "3 percent").
7224 # * `10^2.%` indicates a metric contains a ratio, typically in the range
7225 # 0..1, that will be multiplied by 100 and displayed as a percentage
7226 # (so a metric value `0.03` means "3 percent").
7227 "name": "A String", # The resource name of the metric descriptor.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007228 },
7229 ],
7230 "enums": [ # A list of all enum types included in this API service. Enums
7231 # referenced directly or indirectly by the `apis` are automatically
7232 # included. Enums which are not referenced but shall be included
7233 # should be listed here by name. Example:
7234 #
7235 # enums:
7236 # - name: google.someapi.v1.SomeEnum
7237 { # Enum type definition.
Dan O'Mearadd494642020-05-01 07:42:23 -07007238 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007239 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
7240 # protobuf element, like the file in which it is defined.
7241 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
7242 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
7243 },
Dan O'Mearadd494642020-05-01 07:42:23 -07007244 "options": [ # Protocol buffer options.
7245 { # A protocol buffer option, which can be attached to a message, field,
7246 # enumeration, etc.
7247 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7248 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7249 # For custom options, it should be the fully-qualified name. For example,
7250 # `"google.api.http"`.
7251 "value": { # The option's value packed in an Any message. If the value is a primitive,
7252 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7253 # should be used. If the value is an enum, it should be stored as an int32
7254 # value using the google.protobuf.Int32Value type.
7255 "a_key": "", # Properties of the object. Contains field @type with type URL.
7256 },
7257 },
7258 ],
7259 "name": "A String", # Enum type name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007260 "enumvalue": [ # Enum value definitions.
7261 { # Enum value definition.
7262 "options": [ # Protocol buffer options.
7263 { # A protocol buffer option, which can be attached to a message, field,
7264 # enumeration, etc.
7265 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7266 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7267 # For custom options, it should be the fully-qualified name. For example,
7268 # `"google.api.http"`.
7269 "value": { # The option's value packed in an Any message. If the value is a primitive,
7270 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7271 # should be used. If the value is an enum, it should be stored as an int32
7272 # value using the google.protobuf.Int32Value type.
7273 "a_key": "", # Properties of the object. Contains field @type with type URL.
7274 },
7275 },
7276 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007277 "number": 42, # Enum value number.
Dan O'Mearadd494642020-05-01 07:42:23 -07007278 "name": "A String", # Enum value name.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007279 },
7280 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007281 },
7282 ],
7283 "types": [ # A list of all proto message types included in this API service.
7284 # Types referenced directly or indirectly by the `apis` are
7285 # automatically included. Messages which are not referenced but
7286 # shall be included, such as types used by the `google.protobuf.Any` type,
7287 # should be listed here by name. Example:
7288 #
7289 # types:
7290 # - name: google.protobuf.Int32
7291 { # A protocol buffer message type.
7292 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
7293 "A String",
7294 ],
7295 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007296 "fields": [ # The list of fields.
7297 { # A single field of a message type.
7298 "kind": "A String", # The field type.
7299 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
7300 # types. The first type has index 1; zero means the type is not in the list.
7301 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
7302 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
7303 "name": "A String", # The field name.
7304 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
7305 "jsonName": "A String", # The field JSON name.
7306 "number": 42, # The field number.
7307 "cardinality": "A String", # The field cardinality.
7308 "options": [ # The protocol buffer options.
7309 { # A protocol buffer option, which can be attached to a message, field,
7310 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007311 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7312 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7313 # For custom options, it should be the fully-qualified name. For example,
7314 # `"google.api.http"`.
7315 "value": { # The option's value packed in an Any message. If the value is a primitive,
7316 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7317 # should be used. If the value is an enum, it should be stored as an int32
7318 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007319 "a_key": "", # Properties of the object. Contains field @type with type URL.
7320 },
7321 },
7322 ],
7323 "packed": True or False, # Whether to use alternative packed wire representation.
7324 },
7325 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04007326 "syntax": "A String", # The source syntax.
7327 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
7328 # protobuf element, like the file in which it is defined.
7329 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
7330 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
7331 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007332 "options": [ # The protocol buffer options.
7333 { # A protocol buffer option, which can be attached to a message, field,
7334 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007335 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7336 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7337 # For custom options, it should be the fully-qualified name. For example,
7338 # `"google.api.http"`.
7339 "value": { # The option's value packed in an Any message. If the value is a primitive,
7340 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7341 # should be used. If the value is an enum, it should be stored as an int32
7342 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007343 "a_key": "", # Properties of the object. Contains field @type with type URL.
7344 },
7345 },
7346 ],
7347 },
7348 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007349 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007350 #
7351 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007352 # producer and consumer projects. In the example, the `activity_history`
7353 # log is sent to both the producer and consumer projects, whereas the
7354 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007355 #
7356 # monitored_resources:
7357 # - type: library.googleapis.com/branch
7358 # labels:
7359 # - key: /city
7360 # description: The city where the library branch is located in.
7361 # - key: /name
7362 # description: The name of the branch.
7363 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007364 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007365 # labels:
7366 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007367 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007368 # logging:
7369 # producer_destinations:
7370 # - monitored_resource: library.googleapis.com/branch
7371 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007372 # - activity_history
7373 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007374 # consumer_destinations:
7375 # - monitored_resource: library.googleapis.com/branch
7376 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007377 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007378 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
7379 # There can be multiple producer destinations, each one must have a
7380 # different monitored resource type. A log can be used in at most
7381 # one producer destination.
7382 { # Configuration of a specific logging destination (the producer project
7383 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007384 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007385 # Service.monitored_resources section.
7386 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007387 # be defined in the Service.logs section. If the log name is
7388 # not a domain scoped name, it will be automatically prefixed with
7389 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007390 "A String",
7391 ],
7392 },
7393 ],
7394 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
7395 # There can be multiple consumer destinations, each one must have a
7396 # different monitored resource type. A log can be used in at most
7397 # one consumer destination.
7398 { # Configuration of a specific logging destination (the producer project
7399 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007400 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007401 # Service.monitored_resources section.
7402 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07007403 # be defined in the Service.logs section. If the log name is
7404 # not a domain scoped name, it will be automatically prefixed with
7405 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007406 "A String",
7407 ],
7408 },
7409 ],
7410 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007411 "name": "A String", # The service name, which is a DNS-like logical identifier for the
7412 # service, such as `calendar.googleapis.com`. The service name
7413 # typically goes through DNS verification to make sure the owner
7414 # of the service also owns the DNS name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007415 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
7416 #
7417 # Example:
Dan O'Mearadd494642020-05-01 07:42:23 -07007418 # &lt;pre&gt;&lt;code&gt;documentation:
7419 # summary: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007420 # The Google Calendar API gives access
7421 # to most calendar features.
7422 # pages:
7423 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07007424 # content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007425 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07007426 # content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007427 # subpages;
7428 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07007429 # content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007430 # rules:
7431 # - selector: google.calendar.Calendar.Get
Dan O'Mearadd494642020-05-01 07:42:23 -07007432 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007433 # ...
7434 # - selector: google.calendar.Calendar.Put
Dan O'Mearadd494642020-05-01 07:42:23 -07007435 # description: &gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007436 # ...
Dan O'Mearadd494642020-05-01 07:42:23 -07007437 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007438 # Documentation is provided in markdown syntax. In addition to
7439 # standard markdown features, definition lists, tables and fenced
7440 # code blocks are supported. Section headers can be provided and are
7441 # interpreted relative to the section nesting of the context where
7442 # a documentation fragment is embedded.
7443 #
7444 # Documentation from the IDL is merged with documentation defined
7445 # via the config at normalization time, where documentation provided
7446 # by config rules overrides IDL provided.
7447 #
7448 # A number of constructs specific to the API platform are supported
7449 # in documentation text.
7450 #
7451 # In order to reference a proto element, the following
7452 # notation can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07007453 # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007454 # To override the display text used for the link, this can be used:
Dan O'Mearadd494642020-05-01 07:42:23 -07007455 # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007456 # Text can be excluded from doc using the following notation:
Dan O'Mearadd494642020-05-01 07:42:23 -07007457 # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007458 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007459 # A few directives are available in documentation. Note that
7460 # directives must appear on a single line to be properly
7461 # identified. The `include` directive includes a markdown file from
7462 # an external source:
Dan O'Mearadd494642020-05-01 07:42:23 -07007463 # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007464 # The `resource_for` directive marks a message to be the resource of
7465 # a collection in REST view. If it is not specified, tools attempt
7466 # to infer the resource from the operations in a collection:
Dan O'Mearadd494642020-05-01 07:42:23 -07007467 # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007468 # The directive `suppress_warning` does not directly affect documentation
7469 # and is documented together with service config validation.
7470 "rules": [ # A list of documentation rules that apply to individual API elements.
7471 #
7472 # **NOTE:** All service configuration rules follow "last one wins" order.
7473 { # A documentation rule provides information about individual API elements.
7474 "description": "A String", # Description of the selected API(s).
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007475 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
7476 # an element is marked as `deprecated`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007477 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
7478 # qualified name of the element which may end in "*", indicating a wildcard.
7479 # Wildcards are only allowed at the end and for a whole component of the
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007480 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
7481 # wildcard will match one or more components. To specify a default for all
7482 # applicable elements, the whole pattern "*" is used.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007483 },
7484 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04007485 "documentationRootUrl": "A String", # The URL to the root of documentation.
Dan O'Mearadd494642020-05-01 07:42:23 -07007486 "summary": "A String", # A short summary of what the service does. Can only be provided by
7487 # plain text.
7488 "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
7489 # from the yaml file) is not suitable. This can be seen in any fully
7490 # specified service urls as well as sections that show a base that other
7491 # urls are relative to.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07007492 "overview": "A String", # Declares a single overview page. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07007493 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07007494 # summary: ...
Dan O'Mearadd494642020-05-01 07:42:23 -07007495 # overview: &amp;#40;== include overview.md ==&amp;#41;
7496 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07007497 # This is a shortcut for the following declaration (using pages style):
Dan O'Mearadd494642020-05-01 07:42:23 -07007498 # &lt;pre&gt;&lt;code&gt;documentation:
Sai Cheemalapatie833b792017-03-24 15:06:46 -07007499 # summary: ...
7500 # pages:
7501 # - name: Overview
Dan O'Mearadd494642020-05-01 07:42:23 -07007502 # content: &amp;#40;== include overview.md ==&amp;#41;
7503 # &lt;/code&gt;&lt;/pre&gt;
Sai Cheemalapatie833b792017-03-24 15:06:46 -07007504 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007505 "pages": [ # The top level pages for the documentation set.
7506 { # Represents a documentation page. A page can contain subpages to represent
7507 # nested documentation set structure.
Dan O'Mearadd494642020-05-01 07:42:23 -07007508 "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
7509 # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007510 "subpages": [ # Subpages of this page. The order of subpages specified here will be
7511 # honored in the generated docset.
7512 # Object with schema name: Page
7513 ],
7514 "name": "A String", # The name of the page. It will be used as an identity of the page to
7515 # generate URI of the page, text of the link to this page in navigation,
7516 # etc. The full page name (start from the root page name to this page
7517 # concatenated with `.`) can be used as reference to the page in your
7518 # documentation. For example:
Dan O'Mearadd494642020-05-01 07:42:23 -07007519 # &lt;pre&gt;&lt;code&gt;pages:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007520 # - name: Tutorial
Dan O'Mearadd494642020-05-01 07:42:23 -07007521 # content: &amp;#40;== include tutorial.md ==&amp;#41;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007522 # subpages:
7523 # - name: Java
Dan O'Mearadd494642020-05-01 07:42:23 -07007524 # content: &amp;#40;== include tutorial_java.md ==&amp;#41;
7525 # &lt;/code&gt;&lt;/pre&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007526 # You can reference `Java` page using Markdown reference link syntax:
7527 # `Java`.
7528 },
7529 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04007530 },
7531 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
7532 "sourceFiles": [ # All files used during config generation.
7533 {
7534 "a_key": "", # Properties of the object. Contains field @type with type URL.
7535 },
7536 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007537 },
7538 "systemTypes": [ # A list of all proto message types included in this API service.
7539 # It serves similar purpose as [google.api.Service.types], except that
7540 # these types are not needed by user-defined APIs. Therefore, they will not
7541 # show up in the generated discovery doc. This field should only be used
7542 # to define system APIs in ESF.
7543 { # A protocol buffer message type.
7544 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
7545 "A String",
7546 ],
7547 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007548 "fields": [ # The list of fields.
7549 { # A single field of a message type.
7550 "kind": "A String", # The field type.
7551 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
7552 # types. The first type has index 1; zero means the type is not in the list.
7553 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
7554 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
7555 "name": "A String", # The field name.
7556 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
7557 "jsonName": "A String", # The field JSON name.
7558 "number": 42, # The field number.
7559 "cardinality": "A String", # The field cardinality.
7560 "options": [ # The protocol buffer options.
7561 { # A protocol buffer option, which can be attached to a message, field,
7562 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007563 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7564 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7565 # For custom options, it should be the fully-qualified name. For example,
7566 # `"google.api.http"`.
7567 "value": { # The option's value packed in an Any message. If the value is a primitive,
7568 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7569 # should be used. If the value is an enum, it should be stored as an int32
7570 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007571 "a_key": "", # Properties of the object. Contains field @type with type URL.
7572 },
7573 },
7574 ],
7575 "packed": True or False, # Whether to use alternative packed wire representation.
7576 },
7577 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04007578 "syntax": "A String", # The source syntax.
7579 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
7580 # protobuf element, like the file in which it is defined.
7581 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
7582 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
7583 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007584 "options": [ # The protocol buffer options.
7585 { # A protocol buffer option, which can be attached to a message, field,
7586 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08007587 "name": "A String", # The option's name. For protobuf built-in options (options defined in
7588 # descriptor.proto), this is the short name. For example, `"map_entry"`.
7589 # For custom options, it should be the fully-qualified name. For example,
7590 # `"google.api.http"`.
7591 "value": { # The option's value packed in an Any message. If the value is a primitive,
7592 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
7593 # should be used. If the value is an enum, it should be stored as an int32
7594 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007595 "a_key": "", # Properties of the object. Contains field @type with type URL.
7596 },
7597 },
7598 ],
7599 },
7600 ],
7601 "context": { # `Context` defines which contexts an API requests. # Context configuration.
7602 #
7603 # Example:
7604 #
7605 # context:
7606 # rules:
7607 # - selector: "*"
7608 # requested:
7609 # - google.rpc.context.ProjectContext
7610 # - google.rpc.context.OriginContext
7611 #
7612 # The above specifies that all methods in the API request
7613 # `google.rpc.context.ProjectContext` and
7614 # `google.rpc.context.OriginContext`.
7615 #
7616 # Available context types are defined in package
7617 # `google.rpc.context`.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007618 #
7619 # This also provides mechanism to whitelist any protobuf message extension that
Dan O'Mearadd494642020-05-01 07:42:23 -07007620 # can be sent in grpc metadata using “x-goog-ext-&lt;extension_id&gt;-bin” and
7621 # “x-goog-ext-&lt;extension_id&gt;-jspb” format. For example, list any service
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007622 # specific protobuf types that can appear in grpc metadata as follows in your
7623 # yaml file:
7624 #
7625 # Example:
7626 #
7627 # context:
7628 # rules:
7629 # - selector: "google.example.library.v1.LibraryService.CreateBook"
7630 # allowed_request_extensions:
7631 # - google.foo.v1.NewExtension
7632 # allowed_response_extensions:
7633 # - google.foo.v1.NewExtension
7634 #
7635 # You can also specify extension ID instead of fully qualified extension name
7636 # here.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007637 "rules": [ # A list of RPC context rules that apply to individual API methods.
7638 #
7639 # **NOTE:** All service configuration rules follow "last one wins" order.
7640 { # A context rule provides information about the context for an individual API
7641 # element.
7642 "provided": [ # A list of full type names of provided contexts.
7643 "A String",
7644 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007645 "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
7646 # side channel from backend to client.
7647 "A String",
7648 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007649 "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc
7650 # side channel from client to backend.
7651 "A String",
7652 ],
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007653 "requested": [ # A list of full type names of requested contexts.
7654 "A String",
7655 ],
Dan O'Mearadd494642020-05-01 07:42:23 -07007656 "selector": "A String", # Selects the methods to which this rule applies.
7657 #
7658 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007659 },
7660 ],
7661 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007662 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
7663 # with the same name as the service is automatically generated to service all
7664 # defined APIs.
7665 { # `Endpoint` describes a network endpoint that serves a set of APIs.
7666 # A service may expose any number of endpoints, and all endpoints share the
7667 # same service configuration, such as quota configuration and monitoring
7668 # configuration.
7669 #
7670 # Example service configuration:
7671 #
7672 # name: library-example.googleapis.com
7673 # endpoints:
7674 # # Below entry makes 'google.example.library.v1.Library'
7675 # # API be served from endpoint address library-example.googleapis.com.
7676 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
7677 # # it to decide whether the subsequent cross-origin request is
7678 # # allowed to proceed.
7679 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007680 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007681 "allowCors": True or False, # Allowing
7682 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
7683 # cross-domain traffic, would allow the backends served from this endpoint to
7684 # receive and respond to HTTP OPTIONS requests. The response will be used by
7685 # the browser to determine whether the subsequent cross-origin request is
7686 # allowed to proceed.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007687 "target": "A String", # The specification of an Internet routable address of API frontend that will
7688 # handle requests to this [API
7689 # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
7690 # either a valid IPv4 address or a fully-qualified domain name. For example,
7691 # "8.8.8.8" or "myservice.appspot.com".
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007692 "features": [ # The list of features enabled on this endpoint.
7693 "A String",
7694 ],
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007695 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07007696 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007697 # please specify multiple google.api.Endpoint for each of the intended
7698 # aliases.
Thomas Coffee2f245372017-03-27 10:39:26 -07007699 #
7700 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07007701 "A String",
7702 ],
7703 },
7704 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007705 },
7706 ],
7707 }</pre>
7708</div>
7709
7710<div class="method">
7711 <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
7712 <pre>Retrieves the next page of results.
7713
7714Args:
7715 previous_request: The request for the previous page. (required)
7716 previous_response: The response from the request for the previous page. (required)
7717
7718Returns:
7719 A request object that you can call 'execute()' on to request the next
7720 page. Returns None if there are no more items in the collection.
7721 </pre>
7722</div>
7723
7724<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -07007725 <code class="details" id="submit">submit(serviceName, body=None, x__xgafv=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007726 <pre>Creates a new service configuration (version) for a managed service based
7727on
7728user-supplied configuration source files (for example: OpenAPI
7729Specification). This method stores the source configurations as well as the
7730generated service configuration. To rollout the service configuration to
7731other services,
7732please call CreateServiceRollout.
7733
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007734Only the 100 most recent configuration sources and ones referenced by
7735existing service configurtions are kept for each service. The rest will be
7736deleted eventually.
7737
Dan O'Mearadd494642020-05-01 07:42:23 -07007738Operation&lt;response: SubmitConfigSourceResponse&gt;
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007739
7740Args:
Dan O'Mearadd494642020-05-01 07:42:23 -07007741 serviceName: string, Required. The name of the service. See the [overview](/service-management/overview)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007742for naming requirements. For example: `example.googleapis.com`. (required)
Dan O'Mearadd494642020-05-01 07:42:23 -07007743 body: object, The request body.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007744 The object takes the form of:
7745
7746{ # Request message for SubmitConfigSource method.
7747 "validateOnly": True or False, # Optional. If set, this will result in the generation of a
7748 # `google.api.Service` configuration based on the `ConfigSource` provided,
7749 # but the generated config and the sources will NOT be persisted.
Dan O'Mearadd494642020-05-01 07:42:23 -07007750 "configSource": { # Represents a source file which is used to generate the service configuration # Required. The source configuration for the service.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007751 # defined by `google.api.Service`.
7752 "files": [ # Set of source configuration files that are used to generate a service
7753 # configuration (`google.api.Service`).
7754 { # Generic specification of a source configuration file
7755 "fileContents": "A String", # The bytes that constitute the file.
7756 "fileType": "A String", # The type of configuration file this represents.
7757 "filePath": "A String", # The file name of the configuration file (full or relative path).
7758 },
7759 ],
7760 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
7761 # by the client for tracking purpose. If empty, the server may choose to
7762 # generate one instead.
7763 },
7764 }
7765
7766 x__xgafv: string, V1 error format.
7767 Allowed values
7768 1 - v1 error format
7769 2 - v2 error format
7770
7771Returns:
7772 An object of the form:
7773
7774 { # This resource represents a long-running operation that is the result of a
7775 # network API call.
Sai Cheemalapati4ba8c232017-06-06 18:46:08 -04007776 "metadata": { # Service-specific metadata associated with the operation. It typically
7777 # contains progress information and common metadata such as create time.
7778 # Some services might not provide such metadata. Any method that returns a
7779 # long-running operation should document the metadata type, if any.
7780 "a_key": "", # Properties of the object. Contains field @type with type URL.
7781 },
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07007782 "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
7783 # different programming environments, including REST APIs and RPC APIs. It is
7784 # used by [gRPC](https://github.com/grpc). Each `Status` message contains
7785 # three pieces of data: error code, error message, and error details.
7786 #
7787 # You can find out more about this error model and how to work with it in the
7788 # [API Design Guide](https://cloud.google.com/apis/design/errors).
7789 "message": "A String", # A developer-facing error message, which should be in English. Any
7790 # user-facing error message should be localized and sent in the
7791 # google.rpc.Status.details field, or localized by the client.
7792 "code": 42, # The status code, which should be an enum value of google.rpc.Code.
7793 "details": [ # A list of messages that carry the error details. There is a common set of
7794 # message types for APIs to use.
7795 {
7796 "a_key": "", # Properties of the object. Contains field @type with type URL.
7797 },
7798 ],
7799 },
Dan O'Mearadd494642020-05-01 07:42:23 -07007800 "done": True or False, # If the value is `false`, it means the operation is still in progress.
7801 # If `true`, the operation is completed, and either `error` or `response` is
7802 # available.
7803 "response": { # The normal response of the operation in case of success. If the original
7804 # method returns no data on success, such as `Delete`, the response is
7805 # `google.protobuf.Empty`. If the original method is standard
7806 # `Get`/`Create`/`Update`, the response should be the resource. For other
7807 # methods, the response should have the type `XxxResponse`, where `Xxx`
7808 # is the original method name. For example, if the original method name
7809 # is `TakeSnapshot()`, the inferred response type is
7810 # `TakeSnapshotResponse`.
7811 "a_key": "", # Properties of the object. Contains field @type with type URL.
7812 },
7813 "name": "A String", # The server-assigned name, which is only unique within the same service that
7814 # originally returns it. If you use the default HTTP mapping, the
7815 # `name` should be a resource name ending with `operations/{unique_id}`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07007816 }</pre>
7817</div>
7818
7819</body></html>