blob: dee0d717fd8fa601ffb0e0430de8af8da7e38896 [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
75<h1><a href="servicemanagement_v1.html">Google Service Management API</a> . <a href="servicemanagement_v1.services.html">services</a> . <a href="servicemanagement_v1.services.configs.html">configs</a></h1>
76<h2>Instance Methods</h2>
77<p class="toc_element">
Thomas Coffee2f245372017-03-27 10:39:26 -070078 <code><a href="#create">create(serviceName, body, 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">
Thomas Coffee2f245372017-03-27 10:39:26 -070090 <code><a href="#submit">submit(serviceName, body, 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">
Thomas Coffee2f245372017-03-27 10:39:26 -070094 <code class="details" id="create">create(serviceName, body, 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
100Args:
101 serviceName: string, The name of the service. See the [overview](/service-management/overview)
102for naming requirements. For example: `example.googleapis.com`. (required)
103 body: object, The request body. (required)
104 The object takes the form of:
105
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700106{ # `Service` is the root object of Google service configuration schema. It
107 # describes basic information about a service, such as the name and the
108 # title, and delegates other aspects to sub-sections. Each sub-section is
109 # either a proto message or a repeated proto message that configures a
110 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700111 #
112 # Example:
113 #
114 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700115 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700116 # name: calendar.googleapis.com
117 # title: Google Calendar API
118 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700119 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800120 # authentication:
121 # providers:
122 # - id: google_calendar_auth
123 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
124 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700125 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800126 # - selector: "*"
127 # requirements:
128 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700129 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
130 # service controller handles features like abuse, quota, billing, logging,
131 # monitoring, etc.
132 "environment": "A String", # The service control environment to use. If empty, no control plane
133 # feature (like quota and billing) will be enabled.
134 },
135 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
136 # by the Service.monitoring and Service.logging configurations.
137 { # An object that describes the schema of a MonitoredResource object using a
138 # type name and a set of labels. For example, the monitored resource
139 # descriptor for Google Compute Engine VM instances has a type of
140 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
141 # `"zone"` to identify particular VM instances.
142 #
143 # Different APIs can support different monitored resource types. APIs generally
144 # provide a `list` method that returns the monitored resource descriptors used
145 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -0700146 "type": "A String", # Required. The monitored resource type. For example, the type
147 # `"cloudsql_database"` represents databases in Google Cloud SQL.
148 # The maximum length of this value is 256 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700149 "labels": [ # Required. A set of labels used to describe instances of this monitored
150 # resource type. For example, an individual Google Cloud SQL database is
151 # identified by values for the labels `"database_id"` and `"zone"`.
152 { # A description of a label.
153 "valueType": "A String", # The type of data that can be assigned to the label.
154 "description": "A String", # A human-readable description for the label.
155 "key": "A String", # The label key.
156 },
157 ],
Thomas Coffee2f245372017-03-27 10:39:26 -0700158 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
159 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
160 # without any article or other determiners. For example,
161 # `"Google Cloud SQL Database"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700162 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
163 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
164 # {type} is the value of the `type` field in this object and
165 # {project_id} is a project ID that provides API-specific context for
166 # accessing the type. APIs that do not use project information can use the
167 # resource name format `"monitoredResourceDescriptors/{type}"`.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400168 "description": "A String", # Optional. A detailed description of the monitored resource type that might
169 # be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700170 },
171 ],
172 "logs": [ # Defines the logs used by this service.
173 { # A description of a log type. Example in YAML format:
174 #
175 # - name: library.googleapis.com/activity_history
176 # description: The history of borrowing and returning library items.
177 # display_name: Activity
178 # labels:
179 # - key: /customer_id
180 # description: Identifier of a library customer
181 "labels": [ # The set of labels that are available to describe a specific log entry.
182 # Runtime requests that contain labels not specified here are
183 # considered invalid.
184 { # A description of a label.
185 "valueType": "A String", # The type of data that can be assigned to the label.
186 "description": "A String", # A human-readable description for the label.
187 "key": "A String", # The label key.
188 },
189 ],
190 "displayName": "A String", # The human-readable name for this log. This information appears on
191 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700192 "name": "A String", # The name of the log. It must be less than 512 characters long and can
193 # include the following characters: upper- and lower-case alphanumeric
194 # characters [A-Za-z0-9], and punctuation characters including
195 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -0700196 "description": "A String", # A human-readable description of this log. This information appears in
197 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700198 },
199 ],
Thomas Coffee2f245372017-03-27 10:39:26 -0700200 "systemParameters": { # ### System parameter configuration # System parameter configuration.
201 #
202 # A system parameter is a special kind of parameter defined by the API
203 # system, not by an individual API. It is typically mapped to an HTTP header
204 # and/or a URL query parameter. This configuration specifies which methods
205 # change the names of the system parameters.
206 "rules": [ # Define system parameters.
207 #
208 # The parameters defined here will override the default parameters
209 # implemented by the system. If this field is missing from the service
210 # config, default system parameters will be used. Default system parameters
211 # and names is implementation-dependent.
212 #
213 # Example: define api key for all methods
214 #
215 # system_parameters
216 # rules:
217 # - selector: "*"
218 # parameters:
219 # - name: api_key
220 # url_query_parameter: api_key
221 #
222 #
223 # Example: define 2 api key names for a specific method.
224 #
225 # system_parameters
226 # rules:
227 # - selector: "/ListShelves"
228 # parameters:
229 # - name: api_key
230 # http_header: Api-Key1
231 # - name: api_key
232 # http_header: Api-Key2
233 #
234 # **NOTE:** All service configuration rules follow "last one wins" order.
235 { # Define a system parameter rule mapping system parameter definitions to
236 # methods.
237 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
238 # For a given method call, only one of them should be used. If multiple
239 # names are used the behavior is implementation-dependent.
240 # If none of the specified names are present the behavior is
241 # parameter-dependent.
242 { # Define a parameter's name and location. The parameter may be passed as either
243 # an HTTP header or a URL query parameter, and if both are passed the behavior
244 # is implementation-dependent.
245 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
246 # sensitive.
247 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
248 # insensitive.
249 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
250 },
251 ],
252 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
253 # methods in all APIs.
254 #
255 # Refer to selector for syntax details.
256 },
257 ],
258 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700259 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
260 "rules": [ # A list of API backend rules that apply to individual API methods.
261 #
262 # **NOTE:** All service configuration rules follow "last one wins" order.
263 { # A backend rule provides configuration for an individual API element.
264 "selector": "A String", # Selects the methods to which this rule applies.
265 #
266 # Refer to selector for syntax details.
267 "deadline": 3.14, # The number of seconds to wait for a response from a request. The
268 # default depends on the deployment context.
269 "address": "A String", # The address of the API backend.
270 },
271 ],
272 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -0700273 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700274 #
275 # The example below shows how to configure monitored resources and metrics
276 # for monitoring. In the example, a monitored resource and two metrics are
277 # defined. The `library.googleapis.com/book/returned_count` metric is sent
278 # to both producer and consumer projects, whereas the
279 # `library.googleapis.com/book/overdue_count` metric is only sent to the
280 # consumer project.
281 #
282 # monitored_resources:
283 # - type: library.googleapis.com/branch
284 # labels:
285 # - key: /city
286 # description: The city where the library branch is located in.
287 # - key: /name
288 # description: The name of the branch.
289 # metrics:
290 # - name: library.googleapis.com/book/returned_count
291 # metric_kind: DELTA
292 # value_type: INT64
293 # labels:
294 # - key: /customer_id
295 # - name: library.googleapis.com/book/overdue_count
296 # metric_kind: GAUGE
297 # value_type: INT64
298 # labels:
299 # - key: /customer_id
300 # monitoring:
301 # producer_destinations:
302 # - monitored_resource: library.googleapis.com/branch
303 # metrics:
304 # - library.googleapis.com/book/returned_count
305 # consumer_destinations:
306 # - monitored_resource: library.googleapis.com/branch
307 # metrics:
308 # - library.googleapis.com/book/returned_count
309 # - library.googleapis.com/book/overdue_count
310 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
311 # There can be multiple producer destinations, each one must have a
312 # different monitored resource type. A metric can be used in at most
313 # one producer destination.
314 { # Configuration of a specific monitoring destination (the producer project
315 # or the consumer project).
316 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
317 # Service.monitored_resources section.
318 "metrics": [ # Names of the metrics to report to this monitoring destination.
319 # Each name must be defined in Service.metrics section.
320 "A String",
321 ],
322 },
323 ],
324 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
325 # There can be multiple consumer destinations, each one must have a
326 # different monitored resource type. A metric can be used in at most
327 # one consumer destination.
328 { # Configuration of a specific monitoring destination (the producer project
329 # or the consumer project).
330 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
331 # Service.monitored_resources section.
332 "metrics": [ # Names of the metrics to report to this monitoring destination.
333 # Each name must be defined in Service.metrics section.
334 "A String",
335 ],
336 },
337 ],
338 },
Thomas Coffee2f245372017-03-27 10:39:26 -0700339 "title": "A String", # The product title associated with this service.
340 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
341 # by the client for tracking purpose. If empty, the server may choose to
342 # generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700343 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
344 #
345 # Example for an API targeted for external use:
346 #
347 # name: calendar.googleapis.com
348 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800349 # providers:
350 # - id: google_calendar_auth
351 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
352 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700353 # rules:
354 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800355 # requirements:
356 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700357 "rules": [ # A list of authentication rules that apply to individual API methods.
358 #
359 # **NOTE:** All service configuration rules follow "last one wins" order.
360 { # Authentication rules for the service.
361 #
362 # By default, if a method has any authentication requirements, every request
363 # must include a valid credential matching one of the requirements.
364 # It's an error to include more than one kind of credential in a single
365 # request.
366 #
367 # If a method doesn't have any auth requirements, request credentials will be
368 # ignored.
369 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
370 # there are scopes defined for "Read-only access to Google Calendar" and
371 # "Access to Cloud Platform". Users can consent to a scope for an application,
372 # giving it permission to access that data on their behalf.
373 #
374 # OAuth scope specifications should be fairly coarse grained; a user will need
375 # to see and understand the text description of what your scope means.
376 #
377 # In most cases: use one or at most two OAuth scopes for an entire family of
378 # products. If your product has multiple APIs, you should probably be sharing
379 # the OAuth scope across all of those APIs.
380 #
381 # When you need finer grained OAuth consent screens: talk with your product
382 # management about how developers will use them in practice.
383 #
384 # Please note that even though each of the canonical scopes is enough for a
385 # request to be accepted and passed to the backend, a request can still fail
386 # due to the backend requiring additional scopes or permissions.
387 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
388 # OAuth token containing any of these scopes will be accepted.
389 #
390 # Example:
391 #
392 # canonical_scopes: https://www.googleapis.com/auth/calendar,
393 # https://www.googleapis.com/auth/calendar.read
394 },
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400395 "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
396 # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
397 #
398 # For requests without credentials, if the service control environment is
399 # specified, each incoming request **must** be associated with a service
400 # consumer. This can be done by passing an API key that belongs to a consumer
401 # project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700402 "requirements": [ # Requirements for additional authentication providers.
403 { # User-defined authentication requirements, including support for
404 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
405 "providerId": "A String", # id from authentication provider.
406 #
407 # Example:
408 #
409 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800410 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
411 # implemented and accepted in all the runtime components.
412 #
413 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700414 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
415 # that are allowed to access. A JWT containing any of these audiences will
416 # be accepted. When this setting is absent, only JWTs with audience
417 # "https://Service_name/API_name"
418 # will be accepted. For example, if no audiences are in the setting,
419 # LibraryService API will only accept JWTs with the following audience
420 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
421 #
422 # Example:
423 #
424 # audiences: bookstore_android.apps.googleusercontent.com,
425 # bookstore_web.apps.googleusercontent.com
426 },
427 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700428 "selector": "A String", # Selects the methods to which this rule applies.
429 #
430 # Refer to selector for syntax details.
431 },
432 ],
433 "providers": [ # Defines a set of authentication providers that a service supports.
434 { # Configuration for an anthentication provider, including support for
435 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800436 "audiences": "A String", # The list of JWT
437 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
438 # that are allowed to access. A JWT containing any of these audiences will
439 # be accepted. When this setting is absent, only JWTs with audience
440 # "https://Service_name/API_name"
441 # will be accepted. For example, if no audiences are in the setting,
442 # LibraryService API will only accept JWTs with the following audience
443 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
444 #
445 # Example:
446 #
447 # audiences: bookstore_android.apps.googleusercontent.com,
448 # bookstore_web.apps.googleusercontent.com
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400449 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
450 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
451 # Optional if the key set document:
452 # - can be retrieved from
453 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
454 # of the issuer.
455 # - can be inferred from the email domain of the issuer (e.g. a Google service account).
456 #
457 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700458 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
459 # `AuthRequirement.provider_id`.
460 #
461 # Example: "bookstore_auth".
462 "issuer": "A String", # Identifies the principal that issued the JWT. See
463 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
464 # Usually a URL or an email address.
465 #
466 # Example: https://securetoken.google.com
467 # Example: 1234567-compute@developer.gserviceaccount.com
468 },
469 ],
470 },
471 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
472 "rules": [ # A list of usage rules that apply to individual API methods.
473 #
474 # **NOTE:** All service configuration rules follow "last one wins" order.
475 { # Usage configuration rules for the service.
476 #
477 # NOTE: Under development.
478 #
479 #
480 # Use this rule to configure unregistered calls for the service. Unregistered
481 # calls are calls that do not contain consumer project identity.
482 # (Example: calls that do not contain an API key).
483 # By default, API methods do not allow unregistered calls, and each method call
484 # must be identified by a consumer project identity. Use this rule to
485 # allow/disallow unregistered calls.
486 #
487 # Example of an API that wants to allow unregistered calls for entire service.
488 #
489 # usage:
490 # rules:
491 # - selector: "*"
492 # allow_unregistered_calls: true
493 #
494 # Example of a method that wants to allow unregistered calls.
495 #
496 # usage:
497 # rules:
498 # - selector: "google.example.library.v1.LibraryService.CreateBook"
499 # allow_unregistered_calls: true
500 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
501 # methods in all APIs.
502 #
503 # Refer to selector for syntax details.
Thomas Coffee2f245372017-03-27 10:39:26 -0700504 "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700505 },
506 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800507 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
508 # service producer.
509 #
510 # Google Service Management currently only supports
511 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
512 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
513 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
514 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700515 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
516 # service. Each requirement is of the form <service.name>/<requirement-id>;
517 # for example 'serviceusage.googleapis.com/billing-enabled'.
518 "A String",
519 ],
520 },
521 "configVersion": 42, # The version of the service configuration. The config version may
522 # influence interpretation of the configuration, for example, to
523 # determine defaults. This is documented together with applicable
524 # options. The current default for the config version itself is `3`.
525 "producerProjectId": "A String", # The id of the Google developer project that owns the service.
526 # Members of this project can manage the service configuration,
527 # manage consumption of the service, etc.
528 "http": { # Defines the HTTP configuration for a service. It contains a list of # HTTP configuration.
529 # HttpRule, each specifying the mapping of an RPC method
530 # to one or more HTTP REST API methods.
531 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
532 #
533 # **NOTE:** All service configuration rules follow "last one wins" order.
534 { # `HttpRule` defines the mapping of an RPC method to one or more HTTP
535 # REST APIs. The mapping determines what portions of the request
536 # message are populated from the path, query parameters, or body of
537 # the HTTP request. The mapping is typically specified as an
538 # `google.api.http` annotation, see "google/api/annotations.proto"
539 # for details.
540 #
541 # The mapping consists of a field specifying the path template and
542 # method kind. The path template can refer to fields in the request
543 # message, as in the example below which describes a REST GET
544 # operation on a resource collection of messages:
545 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800546 #
547 # service Messaging {
548 # rpc GetMessage(GetMessageRequest) returns (Message) {
549 # option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
550 # }
551 # }
552 # message GetMessageRequest {
553 # message SubMessage {
554 # string subfield = 1;
555 # }
556 # string message_id = 1; // mapped to the URL
557 # SubMessage sub = 2; // `sub.subfield` is url-mapped
558 # }
559 # message Message {
560 # string text = 1; // content of the resource
561 # }
562 #
563 # The same http annotation can alternatively be expressed inside the
564 # `GRPC API Configuration` YAML file.
565 #
566 # http:
567 # rules:
568 # - selector: <proto_package_name>.Messaging.GetMessage
569 # get: /v1/messages/{message_id}/{sub.subfield}
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700570 #
571 # This definition enables an automatic, bidrectional mapping of HTTP
572 # JSON to RPC. Example:
573 #
574 # HTTP | RPC
575 # -----|-----
576 # `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))`
577 #
578 # In general, not only fields but also field paths can be referenced
579 # from a path pattern. Fields mapped to the path pattern cannot be
580 # repeated and must have a primitive (non-message) type.
581 #
582 # Any fields in the request message which are not bound by the path
583 # pattern automatically become (optional) HTTP query
584 # parameters. Assume the following definition of the request message:
585 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800586 #
587 # message GetMessageRequest {
588 # message SubMessage {
589 # string subfield = 1;
590 # }
591 # string message_id = 1; // mapped to the URL
592 # int64 revision = 2; // becomes a parameter
593 # SubMessage sub = 3; // `sub.subfield` becomes a parameter
594 # }
595 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700596 #
597 # This enables a HTTP JSON to RPC mapping as below:
598 #
599 # HTTP | RPC
600 # -----|-----
601 # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))`
602 #
603 # Note that fields which are mapped to HTTP parameters must have a
604 # primitive type or a repeated primitive type. Message types are not
605 # allowed. In the case of a repeated type, the parameter can be
606 # repeated in the URL, as in `...?param=A&param=B`.
607 #
608 # For HTTP method kinds which allow a request body, the `body` field
609 # specifies the mapping. Consider a REST update method on the
610 # message resource collection:
611 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800612 #
613 # service Messaging {
614 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
615 # option (google.api.http) = {
616 # put: "/v1/messages/{message_id}"
617 # body: "message"
618 # };
619 # }
620 # }
621 # message UpdateMessageRequest {
622 # string message_id = 1; // mapped to the URL
623 # Message message = 2; // mapped to the body
624 # }
625 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700626 #
627 # The following HTTP JSON to RPC mapping is enabled, where the
628 # representation of the JSON in the request body is determined by
629 # protos JSON encoding:
630 #
631 # HTTP | RPC
632 # -----|-----
633 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
634 #
635 # The special name `*` can be used in the body mapping to define that
636 # every field not bound by the path template should be mapped to the
637 # request body. This enables the following alternative definition of
638 # the update method:
639 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800640 # service Messaging {
641 # rpc UpdateMessage(Message) returns (Message) {
642 # option (google.api.http) = {
643 # put: "/v1/messages/{message_id}"
644 # body: "*"
645 # };
646 # }
647 # }
648 # message Message {
649 # string message_id = 1;
650 # string text = 2;
651 # }
652 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700653 #
654 # The following HTTP JSON to RPC mapping is enabled:
655 #
656 # HTTP | RPC
657 # -----|-----
658 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")`
659 #
660 # Note that when using `*` in the body mapping, it is not possible to
661 # have HTTP parameters, as all fields not bound by the path end in
662 # the body. This makes this option more rarely used in practice of
663 # defining REST APIs. The common usage of `*` is in custom methods
664 # which don't use the URL at all for transferring data.
665 #
666 # It is possible to define multiple HTTP methods for one RPC by using
667 # the `additional_bindings` option. Example:
668 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800669 # service Messaging {
670 # rpc GetMessage(GetMessageRequest) returns (Message) {
671 # option (google.api.http) = {
672 # get: "/v1/messages/{message_id}"
673 # additional_bindings {
674 # get: "/v1/users/{user_id}/messages/{message_id}"
675 # }
676 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700677 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800678 # }
679 # message GetMessageRequest {
680 # string message_id = 1;
681 # string user_id = 2;
682 # }
683 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700684 #
685 # This enables the following two alternative HTTP JSON to RPC
686 # mappings:
687 #
688 # HTTP | RPC
689 # -----|-----
690 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
691 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")`
692 #
693 # # Rules for HTTP mapping
694 #
695 # The rules for mapping HTTP path, query parameters, and body fields
696 # to the request message are as follows:
697 #
698 # 1. The `body` field specifies either `*` or a field path, or is
699 # omitted. If omitted, it assumes there is no HTTP body.
700 # 2. Leaf fields (recursive expansion of nested messages in the
701 # request) can be classified into three types:
702 # (a) Matched in the URL template.
703 # (b) Covered by body (if body is `*`, everything except (a) fields;
704 # else everything under the body field)
705 # (c) All other fields.
706 # 3. URL query parameters found in the HTTP request are mapped to (c) fields.
707 # 4. Any body sent with an HTTP request can contain only (b) fields.
708 #
709 # The syntax of the path template is as follows:
710 #
711 # Template = "/" Segments [ Verb ] ;
712 # Segments = Segment { "/" Segment } ;
713 # Segment = "*" | "**" | LITERAL | Variable ;
714 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
715 # FieldPath = IDENT { "." IDENT } ;
716 # Verb = ":" LITERAL ;
717 #
718 # The syntax `*` matches a single path segment. It follows the semantics of
719 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
720 # Expansion.
721 #
722 # The syntax `**` matches zero or more path segments. It follows the semantics
723 # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800724 # Expansion. NOTE: it must be the last segment in the path except the Verb.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700725 #
726 # The syntax `LITERAL` matches literal text in the URL path.
727 #
728 # The syntax `Variable` matches the entire path as specified by its template;
729 # this nested template must not contain further variables. If a variable
730 # matches a single path segment, its template may be omitted, e.g. `{var}`
731 # is equivalent to `{var=*}`.
732 #
733 # NOTE: the field paths in variables and in the `body` must not refer to
734 # repeated fields or map fields.
735 #
736 # Use CustomHttpPattern to specify any HTTP method that is not included in the
737 # `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for
738 # a given URL path rule. The wild-card rule is useful for services that provide
739 # content to Web (HTML) clients.
740 "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
741 # `*` for mapping all fields not captured by the path pattern to the HTTP
742 # body. NOTE: the referred field must not be a repeated field and must be
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800743 # present at the top-level of request message type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700744 "get": "A String", # Used for listing and getting information about resources.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400745 "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
746 # For media support, add instead [][google.bytestream.RestByteStream] as an
747 # API to your configuration.
748 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
749 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700750 "enabled": True or False, # Whether download is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400751 "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
752 #
753 # Specify name of the download service if one is used for download.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700754 },
755 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
756 # not contain an `additional_bindings` field themselves (that is,
757 # the nesting may only be one level deep).
758 # Object with schema name: HttpRule
759 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400760 "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
761 # Bytestream, add instead
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700762 # [][google.bytestream.RestByteStream] as an API to your
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400763 # configuration for Bytestream methods.
764 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
765 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700766 "enabled": True or False, # Whether upload is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -0400767 "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
768 #
769 # Specify name of the upload service if one is used for upload.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700770 },
Thomas Coffee2f245372017-03-27 10:39:26 -0700771 "selector": "A String", # Selects methods to which this rule applies.
772 #
773 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700774 "responseBody": "A String", # The name of the response field whose value is mapped to the HTTP body of
775 # response. Other response fields are ignored. This field is optional. When
776 # not set, the response message will be used as HTTP body of response.
777 # NOTE: the referred field must be not a repeated field and must be present
778 # at the top-level of response message type.
779 "put": "A String", # Used for updating a resource.
Sai Cheemalapatie833b792017-03-24 15:06:46 -0700780 "patch": "A String", # Used for updating a resource.
Thomas Coffee2f245372017-03-27 10:39:26 -0700781 "post": "A String", # Used for creating a resource.
782 "custom": { # A custom pattern is used for defining custom HTTP verb. # Custom pattern is used for defining custom verbs.
783 "path": "A String", # The path matched by this custom verb.
784 "kind": "A String", # The name of this custom HTTP verb.
785 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700786 "delete": "A String", # Used for deleting a resource.
787 },
788 ],
789 },
790 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
791 # of the google.protobuf.Api needs to be provided by the configuration
792 # author, as the remaining fields will be derived from the IDL during the
793 # normalization process. It is an error to specify an API interface here
794 # which cannot be resolved against the associated IDL files.
795 { # Api is a light-weight descriptor for a protocol buffer service.
796 "methods": [ # The methods of this api, in unspecified order.
797 { # Method represents a method of an api.
798 "name": "A String", # The simple name of this method.
799 "requestStreaming": True or False, # If true, the request is streamed.
800 "responseTypeUrl": "A String", # The URL of the output message type.
801 "requestTypeUrl": "A String", # A URL of the input message type.
802 "responseStreaming": True or False, # If true, the response is streamed.
803 "syntax": "A String", # The source syntax of this method.
804 "options": [ # Any metadata attached to the method.
805 { # A protocol buffer option, which can be attached to a message, field,
806 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800807 "name": "A String", # The option's name. For protobuf built-in options (options defined in
808 # descriptor.proto), this is the short name. For example, `"map_entry"`.
809 # For custom options, it should be the fully-qualified name. For example,
810 # `"google.api.http"`.
811 "value": { # The option's value packed in an Any message. If the value is a primitive,
812 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
813 # should be used. If the value is an enum, it should be stored as an int32
814 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700815 "a_key": "", # Properties of the object. Contains field @type with type URL.
816 },
817 },
818 ],
819 },
820 ],
821 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
822 # message.
823 # protobuf element, like the file in which it is defined.
824 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
825 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
826 },
827 "mixins": [ # Included APIs. See Mixin.
828 { # Declares an API to be included in this API. The including API must
829 # redeclare all the methods from the included API, but documentation
830 # and options are inherited as follows:
831 #
832 # - If after comment and whitespace stripping, the documentation
833 # string of the redeclared method is empty, it will be inherited
834 # from the original method.
835 #
836 # - Each annotation belonging to the service config (http,
837 # visibility) which is not set in the redeclared method will be
838 # inherited.
839 #
840 # - If an http annotation is inherited, the path pattern will be
841 # modified as follows. Any version prefix will be replaced by the
842 # version of the including API plus the root path if specified.
843 #
844 # Example of a simple mixin:
845 #
846 # package google.acl.v1;
847 # service AccessControl {
848 # // Get the underlying ACL object.
849 # rpc GetAcl(GetAclRequest) returns (Acl) {
850 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
851 # }
852 # }
853 #
854 # package google.storage.v2;
855 # service Storage {
856 # // rpc GetAcl(GetAclRequest) returns (Acl);
857 #
858 # // Get a data record.
859 # rpc GetData(GetDataRequest) returns (Data) {
860 # option (google.api.http).get = "/v2/{resource=**}";
861 # }
862 # }
863 #
864 # Example of a mixin configuration:
865 #
866 # apis:
867 # - name: google.storage.v2.Storage
868 # mixins:
869 # - name: google.acl.v1.AccessControl
870 #
871 # The mixin construct implies that all methods in `AccessControl` are
872 # also declared with same name and request/response types in
873 # `Storage`. A documentation generator or annotation processor will
874 # see the effective `Storage.GetAcl` method after inherting
875 # documentation and annotations as follows:
876 #
877 # service Storage {
878 # // Get the underlying ACL object.
879 # rpc GetAcl(GetAclRequest) returns (Acl) {
880 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
881 # }
882 # ...
883 # }
884 #
885 # Note how the version in the path pattern changed from `v1` to `v2`.
886 #
887 # If the `root` field in the mixin is specified, it should be a
888 # relative path under which inherited HTTP paths are placed. Example:
889 #
890 # apis:
891 # - name: google.storage.v2.Storage
892 # mixins:
893 # - name: google.acl.v1.AccessControl
894 # root: acls
895 #
896 # This implies the following inherited HTTP annotation:
897 #
898 # service Storage {
899 # // Get the underlying ACL object.
900 # rpc GetAcl(GetAclRequest) returns (Acl) {
901 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
902 # }
903 # ...
904 # }
905 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
906 # are rooted.
907 "name": "A String", # The fully qualified name of the API which is included.
908 },
909 ],
910 "syntax": "A String", # The source syntax of the service.
911 "version": "A String", # A version string for this api. If specified, must have the form
912 # `major-version.minor-version`, as in `1.10`. If the minor version
913 # is omitted, it defaults to zero. If the entire version field is
914 # empty, the major version is derived from the package name, as
915 # outlined below. If the field is not empty, the version in the
916 # package name will be verified to be consistent with what is
917 # provided here.
918 #
919 # The versioning schema uses [semantic
920 # versioning](http://semver.org) where the major version number
921 # indicates a breaking change and the minor version an additive,
922 # non-breaking change. Both version numbers are signals to users
923 # what to expect from different versions, and should be carefully
924 # chosen based on the product plan.
925 #
926 # The major version is also reflected in the package name of the
927 # API, which must end in `v<major-version>`, as in
928 # `google.feature.v1`. For major versions 0 and 1, the suffix can
929 # be omitted. Zero major versions must only be used for
930 # experimental, none-GA apis.
931 "options": [ # Any metadata attached to the API.
932 { # A protocol buffer option, which can be attached to a message, field,
933 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -0800934 "name": "A String", # The option's name. For protobuf built-in options (options defined in
935 # descriptor.proto), this is the short name. For example, `"map_entry"`.
936 # For custom options, it should be the fully-qualified name. For example,
937 # `"google.api.http"`.
938 "value": { # The option's value packed in an Any message. If the value is a primitive,
939 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
940 # should be used. If the value is an enum, it should be stored as an int32
941 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -0700942 "a_key": "", # Properties of the object. Contains field @type with type URL.
943 },
944 },
945 ],
946 "name": "A String", # The fully qualified name of this api, including package name
947 # followed by the api's simple name.
948 },
949 ],
950 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
951 # specific protobuf types that can appear in error detail lists of
952 # error responses.
953 #
954 # Example:
955 #
956 # custom_error:
957 # types:
958 # - google.foo.v1.CustomError
959 # - google.foo.v1.AnotherError
960 "rules": [ # The list of custom error rules that apply to individual API messages.
961 #
962 # **NOTE:** All service configuration rules follow "last one wins" order.
963 { # A custom error rule.
964 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
965 # objects of this type will be filtered when they appear in error payload.
966 "selector": "A String", # Selects messages to which this rule applies.
967 #
968 # Refer to selector for syntax details.
969 },
970 ],
971 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
972 "A String",
973 ],
974 },
975 "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
976 # elements. Restrictions are specified using visibility labels
977 # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
978 #
979 # Users and projects can have access to more than one visibility label. The
980 # effective visibility for multiple labels is the union of each label's
981 # elements, plus any unrestricted elements.
982 #
983 # If an element and its parents have no restrictions, visibility is
984 # unconditionally granted.
985 #
986 # Example:
987 #
988 # visibility:
989 # rules:
990 # - selector: google.calendar.Calendar.EnhancedSearch
991 # restriction: TRUSTED_TESTER
992 # - selector: google.calendar.Calendar.Delegate
993 # restriction: GOOGLE_INTERNAL
994 #
995 # Here, all methods are publicly visible except for the restricted methods
996 # EnhancedSearch and Delegate.
997 "rules": [ # A list of visibility rules that apply to individual API elements.
998 #
999 # **NOTE:** All service configuration rules follow "last one wins" order.
1000 { # A visibility rule provides visibility configuration for an individual API
1001 # element.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001002 "restriction": "A String", # A comma-separated list of visibility labels that apply to the `selector`.
1003 # Any of the listed labels can be used to grant the visibility.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001004 #
1005 # If a rule has multiple labels, removing one of the labels but not all of
1006 # them can break clients.
1007 #
1008 # Example:
1009 #
1010 # visibility:
1011 # rules:
1012 # - selector: google.calendar.Calendar.EnhancedSearch
1013 # restriction: GOOGLE_INTERNAL, TRUSTED_TESTER
1014 #
1015 # Removing GOOGLE_INTERNAL from this restriction will break clients that
1016 # rely on this method and only had access to it through GOOGLE_INTERNAL.
1017 "selector": "A String", # Selects methods, messages, fields, enums, etc. to which this rule applies.
1018 #
1019 # Refer to selector for syntax details.
1020 },
1021 ],
1022 },
1023 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001024 { # Defines a metric type and its schema. Once a metric descriptor is created,
1025 # deleting or altering it stops data collection and makes the metric type's
1026 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001027 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
1028 # Use sentence case without an ending period, for example "Request count".
Thomas Coffee2f245372017-03-27 10:39:26 -07001029 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001030 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001031 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001032 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001033 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001034 "labels": [ # The set of labels that can be used to describe a specific
1035 # instance of this metric type. For example, the
1036 # `appengine.googleapis.com/http/server/response_latencies` metric
1037 # type has a label for the HTTP response code, `response_code`, so
1038 # you can look at latencies for successful responses or just
1039 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001040 { # A description of a label.
1041 "valueType": "A String", # The type of data that can be assigned to the label.
1042 "description": "A String", # A human-readable description for the label.
1043 "key": "A String", # The label key.
1044 },
1045 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001046 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001047 # URL-encoded. All user-defined custom metric types have the DNS name
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001048 # `custom.googleapis.com`. Metric types should use a natural hierarchical
1049 # grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001050 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001051 # "custom.googleapis.com/invoice/paid/amount"
1052 # "appengine.googleapis.com/http/server/response_latencies"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001053 "unit": "A String", # The unit in which the metric value is reported. It is only applicable
1054 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
1055 # supported units are a subset of [The Unified Code for Units of
1056 # Measure](http://unitsofmeasure.org/ucum.html) standard:
1057 #
1058 # **Basic units (UNIT)**
1059 #
1060 # * `bit` bit
1061 # * `By` byte
1062 # * `s` second
1063 # * `min` minute
1064 # * `h` hour
1065 # * `d` day
1066 #
1067 # **Prefixes (PREFIX)**
1068 #
1069 # * `k` kilo (10**3)
1070 # * `M` mega (10**6)
1071 # * `G` giga (10**9)
1072 # * `T` tera (10**12)
1073 # * `P` peta (10**15)
1074 # * `E` exa (10**18)
1075 # * `Z` zetta (10**21)
1076 # * `Y` yotta (10**24)
1077 # * `m` milli (10**-3)
1078 # * `u` micro (10**-6)
1079 # * `n` nano (10**-9)
1080 # * `p` pico (10**-12)
1081 # * `f` femto (10**-15)
1082 # * `a` atto (10**-18)
1083 # * `z` zepto (10**-21)
1084 # * `y` yocto (10**-24)
1085 # * `Ki` kibi (2**10)
1086 # * `Mi` mebi (2**20)
1087 # * `Gi` gibi (2**30)
1088 # * `Ti` tebi (2**40)
1089 #
1090 # **Grammar**
1091 #
1092 # The grammar includes the dimensionless unit `1`, such as `1/s`.
1093 #
1094 # The grammar also includes these connectors:
1095 #
1096 # * `/` division (as an infix operator, e.g. `1/s`).
1097 # * `.` multiplication (as an infix operator, e.g. `GBy.d`)
1098 #
1099 # The grammar for a unit is as follows:
1100 #
1101 # Expression = Component { "." Component } { "/" Component } ;
1102 #
1103 # Component = [ PREFIX ] UNIT [ Annotation ]
1104 # | Annotation
1105 # | "1"
1106 # ;
1107 #
1108 # Annotation = "{" NAME "}" ;
1109 #
1110 # Notes:
1111 #
1112 # * `Annotation` is just a comment if it follows a `UNIT` and is
1113 # equivalent to `1` if it is used alone. For examples,
1114 # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
1115 # * `NAME` is a sequence of non-blank printable ASCII characters not
1116 # containing '{' or '}'.
Thomas Coffee2f245372017-03-27 10:39:26 -07001117 "name": "A String", # The resource name of the metric descriptor. Depending on the
1118 # implementation, the name typically includes: (1) the parent resource name
1119 # that defines the scope of the metric type or of its data; and (2) the
1120 # metric's URL-encoded type, which also appears in the `type` field of this
1121 # descriptor. For example, following is the resource name of a custom
1122 # metric within the GCP project `my-project-id`:
1123 #
1124 # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001125 },
1126 ],
1127 "enums": [ # A list of all enum types included in this API service. Enums
1128 # referenced directly or indirectly by the `apis` are automatically
1129 # included. Enums which are not referenced but shall be included
1130 # should be listed here by name. Example:
1131 #
1132 # enums:
1133 # - name: google.someapi.v1.SomeEnum
1134 { # Enum type definition.
Thomas Coffee2f245372017-03-27 10:39:26 -07001135 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001136 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1137 # protobuf element, like the file in which it is defined.
1138 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1139 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1140 },
Thomas Coffee2f245372017-03-27 10:39:26 -07001141 "options": [ # Protocol buffer options.
1142 { # A protocol buffer option, which can be attached to a message, field,
1143 # enumeration, etc.
1144 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1145 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1146 # For custom options, it should be the fully-qualified name. For example,
1147 # `"google.api.http"`.
1148 "value": { # The option's value packed in an Any message. If the value is a primitive,
1149 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1150 # should be used. If the value is an enum, it should be stored as an int32
1151 # value using the google.protobuf.Int32Value type.
1152 "a_key": "", # Properties of the object. Contains field @type with type URL.
1153 },
1154 },
1155 ],
1156 "name": "A String", # Enum type name.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001157 "enumvalue": [ # Enum value definitions.
1158 { # Enum value definition.
1159 "number": 42, # Enum value number.
1160 "name": "A String", # Enum value name.
1161 "options": [ # Protocol buffer options.
1162 { # A protocol buffer option, which can be attached to a message, field,
1163 # enumeration, etc.
1164 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1165 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1166 # For custom options, it should be the fully-qualified name. For example,
1167 # `"google.api.http"`.
1168 "value": { # The option's value packed in an Any message. If the value is a primitive,
1169 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1170 # should be used. If the value is an enum, it should be stored as an int32
1171 # value using the google.protobuf.Int32Value type.
1172 "a_key": "", # Properties of the object. Contains field @type with type URL.
1173 },
1174 },
1175 ],
1176 },
1177 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001178 },
1179 ],
1180 "types": [ # A list of all proto message types included in this API service.
1181 # Types referenced directly or indirectly by the `apis` are
1182 # automatically included. Messages which are not referenced but
1183 # shall be included, such as types used by the `google.protobuf.Any` type,
1184 # should be listed here by name. Example:
1185 #
1186 # types:
1187 # - name: google.protobuf.Int32
1188 { # A protocol buffer message type.
1189 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
1190 "A String",
1191 ],
1192 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001193 "fields": [ # The list of fields.
1194 { # A single field of a message type.
1195 "kind": "A String", # The field type.
1196 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
1197 # types. The first type has index 1; zero means the type is not in the list.
1198 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
1199 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1200 "name": "A String", # The field name.
1201 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
1202 "jsonName": "A String", # The field JSON name.
1203 "number": 42, # The field number.
1204 "cardinality": "A String", # The field cardinality.
1205 "options": [ # The protocol buffer options.
1206 { # A protocol buffer option, which can be attached to a message, field,
1207 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001208 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1209 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1210 # For custom options, it should be the fully-qualified name. For example,
1211 # `"google.api.http"`.
1212 "value": { # The option's value packed in an Any message. If the value is a primitive,
1213 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1214 # should be used. If the value is an enum, it should be stored as an int32
1215 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001216 "a_key": "", # Properties of the object. Contains field @type with type URL.
1217 },
1218 },
1219 ],
1220 "packed": True or False, # Whether to use alternative packed wire representation.
1221 },
1222 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001223 "syntax": "A String", # The source syntax.
1224 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1225 # protobuf element, like the file in which it is defined.
1226 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1227 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1228 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001229 "options": [ # The protocol buffer options.
1230 { # A protocol buffer option, which can be attached to a message, field,
1231 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001232 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1233 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1234 # For custom options, it should be the fully-qualified name. For example,
1235 # `"google.api.http"`.
1236 "value": { # The option's value packed in an Any message. If the value is a primitive,
1237 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1238 # should be used. If the value is an enum, it should be stored as an int32
1239 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001240 "a_key": "", # Properties of the object. Contains field @type with type URL.
1241 },
1242 },
1243 ],
1244 },
1245 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001246 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001247 #
1248 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001249 # producer and consumer projects. In the example, the `activity_history`
1250 # log is sent to both the producer and consumer projects, whereas the
1251 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001252 #
1253 # monitored_resources:
1254 # - type: library.googleapis.com/branch
1255 # labels:
1256 # - key: /city
1257 # description: The city where the library branch is located in.
1258 # - key: /name
1259 # description: The name of the branch.
1260 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001261 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001262 # labels:
1263 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001264 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001265 # logging:
1266 # producer_destinations:
1267 # - monitored_resource: library.googleapis.com/branch
1268 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001269 # - activity_history
1270 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001271 # consumer_destinations:
1272 # - monitored_resource: library.googleapis.com/branch
1273 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001274 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001275 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
1276 # There can be multiple producer destinations, each one must have a
1277 # different monitored resource type. A log can be used in at most
1278 # one producer destination.
1279 { # Configuration of a specific logging destination (the producer project
1280 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001281 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001282 # Service.monitored_resources section.
1283 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001284 # be defined in the Service.logs section. If the log name is
1285 # not a domain scoped name, it will be automatically prefixed with
1286 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001287 "A String",
1288 ],
1289 },
1290 ],
1291 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
1292 # There can be multiple consumer destinations, each one must have a
1293 # different monitored resource type. A log can be used in at most
1294 # one consumer destination.
1295 { # Configuration of a specific logging destination (the producer project
1296 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001297 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001298 # Service.monitored_resources section.
1299 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07001300 # be defined in the Service.logs section. If the log name is
1301 # not a domain scoped name, it will be automatically prefixed with
1302 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001303 "A String",
1304 ],
1305 },
1306 ],
1307 },
1308 "name": "A String", # The DNS address at which this service is available,
1309 # e.g. `calendar.googleapis.com`.
1310 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
1311 #
1312 # Example:
1313 # <pre><code>documentation:
1314 # summary: >
1315 # The Google Calendar API gives access
1316 # to most calendar features.
1317 # pages:
1318 # - name: Overview
1319 # content: &#40;== include google/foo/overview.md ==&#41;
1320 # - name: Tutorial
1321 # content: &#40;== include google/foo/tutorial.md ==&#41;
1322 # subpages;
1323 # - name: Java
1324 # content: &#40;== include google/foo/tutorial_java.md ==&#41;
1325 # rules:
1326 # - selector: google.calendar.Calendar.Get
1327 # description: >
1328 # ...
1329 # - selector: google.calendar.Calendar.Put
1330 # description: >
1331 # ...
1332 # </code></pre>
1333 # Documentation is provided in markdown syntax. In addition to
1334 # standard markdown features, definition lists, tables and fenced
1335 # code blocks are supported. Section headers can be provided and are
1336 # interpreted relative to the section nesting of the context where
1337 # a documentation fragment is embedded.
1338 #
1339 # Documentation from the IDL is merged with documentation defined
1340 # via the config at normalization time, where documentation provided
1341 # by config rules overrides IDL provided.
1342 #
1343 # A number of constructs specific to the API platform are supported
1344 # in documentation text.
1345 #
1346 # In order to reference a proto element, the following
1347 # notation can be used:
1348 # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
1349 # To override the display text used for the link, this can be used:
1350 # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
1351 # Text can be excluded from doc using the following notation:
1352 # <pre><code>&#40;-- internal comment --&#41;</code></pre>
1353 # Comments can be made conditional using a visibility label. The below
1354 # text will be only rendered if the `BETA` label is available:
1355 # <pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>
1356 # A few directives are available in documentation. Note that
1357 # directives must appear on a single line to be properly
1358 # identified. The `include` directive includes a markdown file from
1359 # an external source:
1360 # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
1361 # The `resource_for` directive marks a message to be the resource of
1362 # a collection in REST view. If it is not specified, tools attempt
1363 # to infer the resource from the operations in a collection:
1364 # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
1365 # The directive `suppress_warning` does not directly affect documentation
1366 # and is documented together with service config validation.
1367 "rules": [ # A list of documentation rules that apply to individual API elements.
1368 #
1369 # **NOTE:** All service configuration rules follow "last one wins" order.
1370 { # A documentation rule provides information about individual API elements.
1371 "description": "A String", # Description of the selected API(s).
1372 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if an
1373 # element is marked as `deprecated`.
1374 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
1375 # qualified name of the element which may end in "*", indicating a wildcard.
1376 # Wildcards are only allowed at the end and for a whole component of the
1377 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To
1378 # specify a default for all applicable elements, the whole pattern "*"
1379 # is used.
1380 },
1381 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001382 "documentationRootUrl": "A String", # The URL to the root of documentation.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001383 "overview": "A String", # Declares a single overview page. For example:
1384 # <pre><code>documentation:
1385 # summary: ...
1386 # overview: &#40;== include overview.md ==&#41;
1387 # </code></pre>
1388 # This is a shortcut for the following declaration (using pages style):
1389 # <pre><code>documentation:
1390 # summary: ...
1391 # pages:
1392 # - name: Overview
1393 # content: &#40;== include overview.md ==&#41;
1394 # </code></pre>
1395 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001396 "pages": [ # The top level pages for the documentation set.
1397 { # Represents a documentation page. A page can contain subpages to represent
1398 # nested documentation set structure.
1399 "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path} ==&#41;</code>
1400 # to include content from a Markdown file.
1401 "subpages": [ # Subpages of this page. The order of subpages specified here will be
1402 # honored in the generated docset.
1403 # Object with schema name: Page
1404 ],
1405 "name": "A String", # The name of the page. It will be used as an identity of the page to
1406 # generate URI of the page, text of the link to this page in navigation,
1407 # etc. The full page name (start from the root page name to this page
1408 # concatenated with `.`) can be used as reference to the page in your
1409 # documentation. For example:
1410 # <pre><code>pages:
1411 # - name: Tutorial
1412 # content: &#40;== include tutorial.md ==&#41;
1413 # subpages:
1414 # - name: Java
1415 # content: &#40;== include tutorial_java.md ==&#41;
1416 # </code></pre>
1417 # You can reference `Java` page using Markdown reference link syntax:
1418 # `Java`.
1419 },
1420 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001421 "summary": "A String", # A short summary of what the service does. Can only be provided by
1422 # plain text.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001423 },
1424 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
1425 "sourceFiles": [ # All files used during config generation.
1426 {
1427 "a_key": "", # Properties of the object. Contains field @type with type URL.
1428 },
1429 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001430 },
1431 "systemTypes": [ # A list of all proto message types included in this API service.
1432 # It serves similar purpose as [google.api.Service.types], except that
1433 # these types are not needed by user-defined APIs. Therefore, they will not
1434 # show up in the generated discovery doc. This field should only be used
1435 # to define system APIs in ESF.
1436 { # A protocol buffer message type.
1437 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
1438 "A String",
1439 ],
1440 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001441 "fields": [ # The list of fields.
1442 { # A single field of a message type.
1443 "kind": "A String", # The field type.
1444 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
1445 # types. The first type has index 1; zero means the type is not in the list.
1446 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
1447 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1448 "name": "A String", # The field name.
1449 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
1450 "jsonName": "A String", # The field JSON name.
1451 "number": 42, # The field number.
1452 "cardinality": "A String", # The field cardinality.
1453 "options": [ # The protocol buffer options.
1454 { # A protocol buffer option, which can be attached to a message, field,
1455 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001456 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1457 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1458 # For custom options, it should be the fully-qualified name. For example,
1459 # `"google.api.http"`.
1460 "value": { # The option's value packed in an Any message. If the value is a primitive,
1461 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1462 # should be used. If the value is an enum, it should be stored as an int32
1463 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001464 "a_key": "", # Properties of the object. Contains field @type with type URL.
1465 },
1466 },
1467 ],
1468 "packed": True or False, # Whether to use alternative packed wire representation.
1469 },
1470 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001471 "syntax": "A String", # The source syntax.
1472 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
1473 # protobuf element, like the file in which it is defined.
1474 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
1475 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
1476 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001477 "options": [ # The protocol buffer options.
1478 { # A protocol buffer option, which can be attached to a message, field,
1479 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001480 "name": "A String", # The option's name. For protobuf built-in options (options defined in
1481 # descriptor.proto), this is the short name. For example, `"map_entry"`.
1482 # For custom options, it should be the fully-qualified name. For example,
1483 # `"google.api.http"`.
1484 "value": { # The option's value packed in an Any message. If the value is a primitive,
1485 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
1486 # should be used. If the value is an enum, it should be stored as an int32
1487 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001488 "a_key": "", # Properties of the object. Contains field @type with type URL.
1489 },
1490 },
1491 ],
1492 },
1493 ],
1494 "context": { # `Context` defines which contexts an API requests. # Context configuration.
1495 #
1496 # Example:
1497 #
1498 # context:
1499 # rules:
1500 # - selector: "*"
1501 # requested:
1502 # - google.rpc.context.ProjectContext
1503 # - google.rpc.context.OriginContext
1504 #
1505 # The above specifies that all methods in the API request
1506 # `google.rpc.context.ProjectContext` and
1507 # `google.rpc.context.OriginContext`.
1508 #
1509 # Available context types are defined in package
1510 # `google.rpc.context`.
1511 "rules": [ # A list of RPC context rules that apply to individual API methods.
1512 #
1513 # **NOTE:** All service configuration rules follow "last one wins" order.
1514 { # A context rule provides information about the context for an individual API
1515 # element.
1516 "provided": [ # A list of full type names of provided contexts.
1517 "A String",
1518 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07001519 "requested": [ # A list of full type names of requested contexts.
1520 "A String",
1521 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07001522 "selector": "A String", # Selects the methods to which this rule applies.
1523 #
1524 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001525 },
1526 ],
1527 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001528 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
1529 # with the same name as the service is automatically generated to service all
1530 # defined APIs.
1531 { # `Endpoint` describes a network endpoint that serves a set of APIs.
1532 # A service may expose any number of endpoints, and all endpoints share the
1533 # same service configuration, such as quota configuration and monitoring
1534 # configuration.
1535 #
1536 # Example service configuration:
1537 #
1538 # name: library-example.googleapis.com
1539 # endpoints:
1540 # # Below entry makes 'google.example.library.v1.Library'
1541 # # API be served from endpoint address library-example.googleapis.com.
1542 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
1543 # # it to decide whether the subsequent cross-origin request is
1544 # # allowed to proceed.
1545 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001546 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001547 "allowCors": True or False, # Allowing
1548 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
1549 # cross-domain traffic, would allow the backends served from this endpoint to
1550 # receive and respond to HTTP OPTIONS requests. The response will be used by
1551 # the browser to determine whether the subsequent cross-origin request is
1552 # allowed to proceed.
Thomas Coffee2f245372017-03-27 10:39:26 -07001553 "apis": [ # The list of APIs served by this endpoint.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001554 "A String",
1555 ],
1556 "features": [ # The list of features enabled on this endpoint.
1557 "A String",
1558 ],
1559 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07001560 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
1561 # please specify multiple google.api.Endpoint for each of the intented
1562 # alias.
1563 #
1564 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001565 "A String",
1566 ],
1567 },
1568 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001569 "experimental": { # Experimental service configuration. These configuration options can # Experimental configuration.
1570 # only be used by whitelisted users.
1571 "authorization": { # Configuration of authorization. # Authorization configuration.
1572 #
1573 # This section determines the authorization provider, if unspecified, then no
1574 # authorization check will be done.
1575 #
1576 # Example:
1577 #
1578 # experimental:
1579 # authorization:
1580 # provider: firebaserules.googleapis.com
1581 "provider": "A String", # The name of the authorization provider, such as
1582 # firebaserules.googleapis.com.
1583 },
1584 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001585}
1586
1587 x__xgafv: string, V1 error format.
1588 Allowed values
1589 1 - v1 error format
1590 2 - v2 error format
1591
1592Returns:
1593 An object of the form:
1594
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001595 { # `Service` is the root object of Google service configuration schema. It
1596 # describes basic information about a service, such as the name and the
1597 # title, and delegates other aspects to sub-sections. Each sub-section is
1598 # either a proto message or a repeated proto message that configures a
1599 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001600 #
1601 # Example:
1602 #
1603 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001604 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001605 # name: calendar.googleapis.com
1606 # title: Google Calendar API
1607 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001608 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001609 # authentication:
1610 # providers:
1611 # - id: google_calendar_auth
1612 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
1613 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001614 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001615 # - selector: "*"
1616 # requirements:
1617 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001618 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
1619 # service controller handles features like abuse, quota, billing, logging,
1620 # monitoring, etc.
1621 "environment": "A String", # The service control environment to use. If empty, no control plane
1622 # feature (like quota and billing) will be enabled.
1623 },
1624 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
1625 # by the Service.monitoring and Service.logging configurations.
1626 { # An object that describes the schema of a MonitoredResource object using a
1627 # type name and a set of labels. For example, the monitored resource
1628 # descriptor for Google Compute Engine VM instances has a type of
1629 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
1630 # `"zone"` to identify particular VM instances.
1631 #
1632 # Different APIs can support different monitored resource types. APIs generally
1633 # provide a `list` method that returns the monitored resource descriptors used
1634 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07001635 "type": "A String", # Required. The monitored resource type. For example, the type
1636 # `"cloudsql_database"` represents databases in Google Cloud SQL.
1637 # The maximum length of this value is 256 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001638 "labels": [ # Required. A set of labels used to describe instances of this monitored
1639 # resource type. For example, an individual Google Cloud SQL database is
1640 # identified by values for the labels `"database_id"` and `"zone"`.
1641 { # A description of a label.
1642 "valueType": "A String", # The type of data that can be assigned to the label.
1643 "description": "A String", # A human-readable description for the label.
1644 "key": "A String", # The label key.
1645 },
1646 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07001647 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
1648 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
1649 # without any article or other determiners. For example,
1650 # `"Google Cloud SQL Database"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001651 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
1652 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
1653 # {type} is the value of the `type` field in this object and
1654 # {project_id} is a project ID that provides API-specific context for
1655 # accessing the type. APIs that do not use project information can use the
1656 # resource name format `"monitoredResourceDescriptors/{type}"`.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001657 "description": "A String", # Optional. A detailed description of the monitored resource type that might
1658 # be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001659 },
1660 ],
1661 "logs": [ # Defines the logs used by this service.
1662 { # A description of a log type. Example in YAML format:
1663 #
1664 # - name: library.googleapis.com/activity_history
1665 # description: The history of borrowing and returning library items.
1666 # display_name: Activity
1667 # labels:
1668 # - key: /customer_id
1669 # description: Identifier of a library customer
1670 "labels": [ # The set of labels that are available to describe a specific log entry.
1671 # Runtime requests that contain labels not specified here are
1672 # considered invalid.
1673 { # A description of a label.
1674 "valueType": "A String", # The type of data that can be assigned to the label.
1675 "description": "A String", # A human-readable description for the label.
1676 "key": "A String", # The label key.
1677 },
1678 ],
1679 "displayName": "A String", # The human-readable name for this log. This information appears on
1680 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001681 "name": "A String", # The name of the log. It must be less than 512 characters long and can
1682 # include the following characters: upper- and lower-case alphanumeric
1683 # characters [A-Za-z0-9], and punctuation characters including
1684 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07001685 "description": "A String", # A human-readable description of this log. This information appears in
1686 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001687 },
1688 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07001689 "systemParameters": { # ### System parameter configuration # System parameter configuration.
1690 #
1691 # A system parameter is a special kind of parameter defined by the API
1692 # system, not by an individual API. It is typically mapped to an HTTP header
1693 # and/or a URL query parameter. This configuration specifies which methods
1694 # change the names of the system parameters.
1695 "rules": [ # Define system parameters.
1696 #
1697 # The parameters defined here will override the default parameters
1698 # implemented by the system. If this field is missing from the service
1699 # config, default system parameters will be used. Default system parameters
1700 # and names is implementation-dependent.
1701 #
1702 # Example: define api key for all methods
1703 #
1704 # system_parameters
1705 # rules:
1706 # - selector: "*"
1707 # parameters:
1708 # - name: api_key
1709 # url_query_parameter: api_key
1710 #
1711 #
1712 # Example: define 2 api key names for a specific method.
1713 #
1714 # system_parameters
1715 # rules:
1716 # - selector: "/ListShelves"
1717 # parameters:
1718 # - name: api_key
1719 # http_header: Api-Key1
1720 # - name: api_key
1721 # http_header: Api-Key2
1722 #
1723 # **NOTE:** All service configuration rules follow "last one wins" order.
1724 { # Define a system parameter rule mapping system parameter definitions to
1725 # methods.
1726 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
1727 # For a given method call, only one of them should be used. If multiple
1728 # names are used the behavior is implementation-dependent.
1729 # If none of the specified names are present the behavior is
1730 # parameter-dependent.
1731 { # Define a parameter's name and location. The parameter may be passed as either
1732 # an HTTP header or a URL query parameter, and if both are passed the behavior
1733 # is implementation-dependent.
1734 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
1735 # sensitive.
1736 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
1737 # insensitive.
1738 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
1739 },
1740 ],
1741 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
1742 # methods in all APIs.
1743 #
1744 # Refer to selector for syntax details.
1745 },
1746 ],
1747 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001748 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
1749 "rules": [ # A list of API backend rules that apply to individual API methods.
1750 #
1751 # **NOTE:** All service configuration rules follow "last one wins" order.
1752 { # A backend rule provides configuration for an individual API element.
1753 "selector": "A String", # Selects the methods to which this rule applies.
1754 #
1755 # Refer to selector for syntax details.
1756 "deadline": 3.14, # The number of seconds to wait for a response from a request. The
1757 # default depends on the deployment context.
1758 "address": "A String", # The address of the API backend.
1759 },
1760 ],
1761 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07001762 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001763 #
1764 # The example below shows how to configure monitored resources and metrics
1765 # for monitoring. In the example, a monitored resource and two metrics are
1766 # defined. The `library.googleapis.com/book/returned_count` metric is sent
1767 # to both producer and consumer projects, whereas the
1768 # `library.googleapis.com/book/overdue_count` metric is only sent to the
1769 # consumer project.
1770 #
1771 # monitored_resources:
1772 # - type: library.googleapis.com/branch
1773 # labels:
1774 # - key: /city
1775 # description: The city where the library branch is located in.
1776 # - key: /name
1777 # description: The name of the branch.
1778 # metrics:
1779 # - name: library.googleapis.com/book/returned_count
1780 # metric_kind: DELTA
1781 # value_type: INT64
1782 # labels:
1783 # - key: /customer_id
1784 # - name: library.googleapis.com/book/overdue_count
1785 # metric_kind: GAUGE
1786 # value_type: INT64
1787 # labels:
1788 # - key: /customer_id
1789 # monitoring:
1790 # producer_destinations:
1791 # - monitored_resource: library.googleapis.com/branch
1792 # metrics:
1793 # - library.googleapis.com/book/returned_count
1794 # consumer_destinations:
1795 # - monitored_resource: library.googleapis.com/branch
1796 # metrics:
1797 # - library.googleapis.com/book/returned_count
1798 # - library.googleapis.com/book/overdue_count
1799 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
1800 # There can be multiple producer destinations, each one must have a
1801 # different monitored resource type. A metric can be used in at most
1802 # one producer destination.
1803 { # Configuration of a specific monitoring destination (the producer project
1804 # or the consumer project).
1805 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
1806 # Service.monitored_resources section.
1807 "metrics": [ # Names of the metrics to report to this monitoring destination.
1808 # Each name must be defined in Service.metrics section.
1809 "A String",
1810 ],
1811 },
1812 ],
1813 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
1814 # There can be multiple consumer destinations, each one must have a
1815 # different monitored resource type. A metric can be used in at most
1816 # one consumer destination.
1817 { # Configuration of a specific monitoring destination (the producer project
1818 # or the consumer project).
1819 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
1820 # Service.monitored_resources section.
1821 "metrics": [ # Names of the metrics to report to this monitoring destination.
1822 # Each name must be defined in Service.metrics section.
1823 "A String",
1824 ],
1825 },
1826 ],
1827 },
Thomas Coffee2f245372017-03-27 10:39:26 -07001828 "title": "A String", # The product title associated with this service.
1829 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
1830 # by the client for tracking purpose. If empty, the server may choose to
1831 # generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001832 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
1833 #
1834 # Example for an API targeted for external use:
1835 #
1836 # name: calendar.googleapis.com
1837 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001838 # providers:
1839 # - id: google_calendar_auth
1840 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
1841 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001842 # rules:
1843 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001844 # requirements:
1845 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001846 "rules": [ # A list of authentication rules that apply to individual API methods.
1847 #
1848 # **NOTE:** All service configuration rules follow "last one wins" order.
1849 { # Authentication rules for the service.
1850 #
1851 # By default, if a method has any authentication requirements, every request
1852 # must include a valid credential matching one of the requirements.
1853 # It's an error to include more than one kind of credential in a single
1854 # request.
1855 #
1856 # If a method doesn't have any auth requirements, request credentials will be
1857 # ignored.
1858 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
1859 # there are scopes defined for "Read-only access to Google Calendar" and
1860 # "Access to Cloud Platform". Users can consent to a scope for an application,
1861 # giving it permission to access that data on their behalf.
1862 #
1863 # OAuth scope specifications should be fairly coarse grained; a user will need
1864 # to see and understand the text description of what your scope means.
1865 #
1866 # In most cases: use one or at most two OAuth scopes for an entire family of
1867 # products. If your product has multiple APIs, you should probably be sharing
1868 # the OAuth scope across all of those APIs.
1869 #
1870 # When you need finer grained OAuth consent screens: talk with your product
1871 # management about how developers will use them in practice.
1872 #
1873 # Please note that even though each of the canonical scopes is enough for a
1874 # request to be accepted and passed to the backend, a request can still fail
1875 # due to the backend requiring additional scopes or permissions.
1876 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
1877 # OAuth token containing any of these scopes will be accepted.
1878 #
1879 # Example:
1880 #
1881 # canonical_scopes: https://www.googleapis.com/auth/calendar,
1882 # https://www.googleapis.com/auth/calendar.read
1883 },
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001884 "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
1885 # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
1886 #
1887 # For requests without credentials, if the service control environment is
1888 # specified, each incoming request **must** be associated with a service
1889 # consumer. This can be done by passing an API key that belongs to a consumer
1890 # project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001891 "requirements": [ # Requirements for additional authentication providers.
1892 { # User-defined authentication requirements, including support for
1893 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
1894 "providerId": "A String", # id from authentication provider.
1895 #
1896 # Example:
1897 #
1898 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001899 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
1900 # implemented and accepted in all the runtime components.
1901 #
1902 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001903 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
1904 # that are allowed to access. A JWT containing any of these audiences will
1905 # be accepted. When this setting is absent, only JWTs with audience
1906 # "https://Service_name/API_name"
1907 # will be accepted. For example, if no audiences are in the setting,
1908 # LibraryService API will only accept JWTs with the following audience
1909 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
1910 #
1911 # Example:
1912 #
1913 # audiences: bookstore_android.apps.googleusercontent.com,
1914 # bookstore_web.apps.googleusercontent.com
1915 },
1916 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001917 "selector": "A String", # Selects the methods to which this rule applies.
1918 #
1919 # Refer to selector for syntax details.
1920 },
1921 ],
1922 "providers": [ # Defines a set of authentication providers that a service supports.
1923 { # Configuration for an anthentication provider, including support for
1924 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001925 "audiences": "A String", # The list of JWT
1926 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
1927 # that are allowed to access. A JWT containing any of these audiences will
1928 # be accepted. When this setting is absent, only JWTs with audience
1929 # "https://Service_name/API_name"
1930 # will be accepted. For example, if no audiences are in the setting,
1931 # LibraryService API will only accept JWTs with the following audience
1932 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
1933 #
1934 # Example:
1935 #
1936 # audiences: bookstore_android.apps.googleusercontent.com,
1937 # bookstore_web.apps.googleusercontent.com
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04001938 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
1939 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
1940 # Optional if the key set document:
1941 # - can be retrieved from
1942 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
1943 # of the issuer.
1944 # - can be inferred from the email domain of the issuer (e.g. a Google service account).
1945 #
1946 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001947 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
1948 # `AuthRequirement.provider_id`.
1949 #
1950 # Example: "bookstore_auth".
1951 "issuer": "A String", # Identifies the principal that issued the JWT. See
1952 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
1953 # Usually a URL or an email address.
1954 #
1955 # Example: https://securetoken.google.com
1956 # Example: 1234567-compute@developer.gserviceaccount.com
1957 },
1958 ],
1959 },
1960 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
1961 "rules": [ # A list of usage rules that apply to individual API methods.
1962 #
1963 # **NOTE:** All service configuration rules follow "last one wins" order.
1964 { # Usage configuration rules for the service.
1965 #
1966 # NOTE: Under development.
1967 #
1968 #
1969 # Use this rule to configure unregistered calls for the service. Unregistered
1970 # calls are calls that do not contain consumer project identity.
1971 # (Example: calls that do not contain an API key).
1972 # By default, API methods do not allow unregistered calls, and each method call
1973 # must be identified by a consumer project identity. Use this rule to
1974 # allow/disallow unregistered calls.
1975 #
1976 # Example of an API that wants to allow unregistered calls for entire service.
1977 #
1978 # usage:
1979 # rules:
1980 # - selector: "*"
1981 # allow_unregistered_calls: true
1982 #
1983 # Example of a method that wants to allow unregistered calls.
1984 #
1985 # usage:
1986 # rules:
1987 # - selector: "google.example.library.v1.LibraryService.CreateBook"
1988 # allow_unregistered_calls: true
1989 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
1990 # methods in all APIs.
1991 #
1992 # Refer to selector for syntax details.
Thomas Coffee2f245372017-03-27 10:39:26 -07001993 "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07001994 },
1995 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08001996 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
1997 # service producer.
1998 #
1999 # Google Service Management currently only supports
2000 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
2001 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
2002 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
2003 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002004 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
2005 # service. Each requirement is of the form <service.name>/<requirement-id>;
2006 # for example 'serviceusage.googleapis.com/billing-enabled'.
2007 "A String",
2008 ],
2009 },
2010 "configVersion": 42, # The version of the service configuration. The config version may
2011 # influence interpretation of the configuration, for example, to
2012 # determine defaults. This is documented together with applicable
2013 # options. The current default for the config version itself is `3`.
2014 "producerProjectId": "A String", # The id of the Google developer project that owns the service.
2015 # Members of this project can manage the service configuration,
2016 # manage consumption of the service, etc.
2017 "http": { # Defines the HTTP configuration for a service. It contains a list of # HTTP configuration.
2018 # HttpRule, each specifying the mapping of an RPC method
2019 # to one or more HTTP REST API methods.
2020 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
2021 #
2022 # **NOTE:** All service configuration rules follow "last one wins" order.
2023 { # `HttpRule` defines the mapping of an RPC method to one or more HTTP
2024 # REST APIs. The mapping determines what portions of the request
2025 # message are populated from the path, query parameters, or body of
2026 # the HTTP request. The mapping is typically specified as an
2027 # `google.api.http` annotation, see "google/api/annotations.proto"
2028 # for details.
2029 #
2030 # The mapping consists of a field specifying the path template and
2031 # method kind. The path template can refer to fields in the request
2032 # message, as in the example below which describes a REST GET
2033 # operation on a resource collection of messages:
2034 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002035 #
2036 # service Messaging {
2037 # rpc GetMessage(GetMessageRequest) returns (Message) {
2038 # option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
2039 # }
2040 # }
2041 # message GetMessageRequest {
2042 # message SubMessage {
2043 # string subfield = 1;
2044 # }
2045 # string message_id = 1; // mapped to the URL
2046 # SubMessage sub = 2; // `sub.subfield` is url-mapped
2047 # }
2048 # message Message {
2049 # string text = 1; // content of the resource
2050 # }
2051 #
2052 # The same http annotation can alternatively be expressed inside the
2053 # `GRPC API Configuration` YAML file.
2054 #
2055 # http:
2056 # rules:
2057 # - selector: <proto_package_name>.Messaging.GetMessage
2058 # get: /v1/messages/{message_id}/{sub.subfield}
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002059 #
2060 # This definition enables an automatic, bidrectional mapping of HTTP
2061 # JSON to RPC. Example:
2062 #
2063 # HTTP | RPC
2064 # -----|-----
2065 # `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))`
2066 #
2067 # In general, not only fields but also field paths can be referenced
2068 # from a path pattern. Fields mapped to the path pattern cannot be
2069 # repeated and must have a primitive (non-message) type.
2070 #
2071 # Any fields in the request message which are not bound by the path
2072 # pattern automatically become (optional) HTTP query
2073 # parameters. Assume the following definition of the request message:
2074 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002075 #
2076 # message GetMessageRequest {
2077 # message SubMessage {
2078 # string subfield = 1;
2079 # }
2080 # string message_id = 1; // mapped to the URL
2081 # int64 revision = 2; // becomes a parameter
2082 # SubMessage sub = 3; // `sub.subfield` becomes a parameter
2083 # }
2084 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002085 #
2086 # This enables a HTTP JSON to RPC mapping as below:
2087 #
2088 # HTTP | RPC
2089 # -----|-----
2090 # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))`
2091 #
2092 # Note that fields which are mapped to HTTP parameters must have a
2093 # primitive type or a repeated primitive type. Message types are not
2094 # allowed. In the case of a repeated type, the parameter can be
2095 # repeated in the URL, as in `...?param=A&param=B`.
2096 #
2097 # For HTTP method kinds which allow a request body, the `body` field
2098 # specifies the mapping. Consider a REST update method on the
2099 # message resource collection:
2100 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002101 #
2102 # service Messaging {
2103 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
2104 # option (google.api.http) = {
2105 # put: "/v1/messages/{message_id}"
2106 # body: "message"
2107 # };
2108 # }
2109 # }
2110 # message UpdateMessageRequest {
2111 # string message_id = 1; // mapped to the URL
2112 # Message message = 2; // mapped to the body
2113 # }
2114 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002115 #
2116 # The following HTTP JSON to RPC mapping is enabled, where the
2117 # representation of the JSON in the request body is determined by
2118 # protos JSON encoding:
2119 #
2120 # HTTP | RPC
2121 # -----|-----
2122 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
2123 #
2124 # The special name `*` can be used in the body mapping to define that
2125 # every field not bound by the path template should be mapped to the
2126 # request body. This enables the following alternative definition of
2127 # the update method:
2128 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002129 # service Messaging {
2130 # rpc UpdateMessage(Message) returns (Message) {
2131 # option (google.api.http) = {
2132 # put: "/v1/messages/{message_id}"
2133 # body: "*"
2134 # };
2135 # }
2136 # }
2137 # message Message {
2138 # string message_id = 1;
2139 # string text = 2;
2140 # }
2141 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002142 #
2143 # The following HTTP JSON to RPC mapping is enabled:
2144 #
2145 # HTTP | RPC
2146 # -----|-----
2147 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")`
2148 #
2149 # Note that when using `*` in the body mapping, it is not possible to
2150 # have HTTP parameters, as all fields not bound by the path end in
2151 # the body. This makes this option more rarely used in practice of
2152 # defining REST APIs. The common usage of `*` is in custom methods
2153 # which don't use the URL at all for transferring data.
2154 #
2155 # It is possible to define multiple HTTP methods for one RPC by using
2156 # the `additional_bindings` option. Example:
2157 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002158 # service Messaging {
2159 # rpc GetMessage(GetMessageRequest) returns (Message) {
2160 # option (google.api.http) = {
2161 # get: "/v1/messages/{message_id}"
2162 # additional_bindings {
2163 # get: "/v1/users/{user_id}/messages/{message_id}"
2164 # }
2165 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002166 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002167 # }
2168 # message GetMessageRequest {
2169 # string message_id = 1;
2170 # string user_id = 2;
2171 # }
2172 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002173 #
2174 # This enables the following two alternative HTTP JSON to RPC
2175 # mappings:
2176 #
2177 # HTTP | RPC
2178 # -----|-----
2179 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
2180 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")`
2181 #
2182 # # Rules for HTTP mapping
2183 #
2184 # The rules for mapping HTTP path, query parameters, and body fields
2185 # to the request message are as follows:
2186 #
2187 # 1. The `body` field specifies either `*` or a field path, or is
2188 # omitted. If omitted, it assumes there is no HTTP body.
2189 # 2. Leaf fields (recursive expansion of nested messages in the
2190 # request) can be classified into three types:
2191 # (a) Matched in the URL template.
2192 # (b) Covered by body (if body is `*`, everything except (a) fields;
2193 # else everything under the body field)
2194 # (c) All other fields.
2195 # 3. URL query parameters found in the HTTP request are mapped to (c) fields.
2196 # 4. Any body sent with an HTTP request can contain only (b) fields.
2197 #
2198 # The syntax of the path template is as follows:
2199 #
2200 # Template = "/" Segments [ Verb ] ;
2201 # Segments = Segment { "/" Segment } ;
2202 # Segment = "*" | "**" | LITERAL | Variable ;
2203 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
2204 # FieldPath = IDENT { "." IDENT } ;
2205 # Verb = ":" LITERAL ;
2206 #
2207 # The syntax `*` matches a single path segment. It follows the semantics of
2208 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
2209 # Expansion.
2210 #
2211 # The syntax `**` matches zero or more path segments. It follows the semantics
2212 # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002213 # Expansion. NOTE: it must be the last segment in the path except the Verb.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002214 #
2215 # The syntax `LITERAL` matches literal text in the URL path.
2216 #
2217 # The syntax `Variable` matches the entire path as specified by its template;
2218 # this nested template must not contain further variables. If a variable
2219 # matches a single path segment, its template may be omitted, e.g. `{var}`
2220 # is equivalent to `{var=*}`.
2221 #
2222 # NOTE: the field paths in variables and in the `body` must not refer to
2223 # repeated fields or map fields.
2224 #
2225 # Use CustomHttpPattern to specify any HTTP method that is not included in the
2226 # `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for
2227 # a given URL path rule. The wild-card rule is useful for services that provide
2228 # content to Web (HTML) clients.
2229 "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
2230 # `*` for mapping all fields not captured by the path pattern to the HTTP
2231 # body. NOTE: the referred field must not be a repeated field and must be
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002232 # present at the top-level of request message type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002233 "get": "A String", # Used for listing and getting information about resources.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002234 "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
2235 # For media support, add instead [][google.bytestream.RestByteStream] as an
2236 # API to your configuration.
2237 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
2238 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002239 "enabled": True or False, # Whether download is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002240 "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
2241 #
2242 # Specify name of the download service if one is used for download.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002243 },
2244 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
2245 # not contain an `additional_bindings` field themselves (that is,
2246 # the nesting may only be one level deep).
2247 # Object with schema name: HttpRule
2248 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002249 "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
2250 # Bytestream, add instead
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002251 # [][google.bytestream.RestByteStream] as an API to your
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002252 # configuration for Bytestream methods.
2253 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
2254 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002255 "enabled": True or False, # Whether upload is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002256 "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
2257 #
2258 # Specify name of the upload service if one is used for upload.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002259 },
Thomas Coffee2f245372017-03-27 10:39:26 -07002260 "selector": "A String", # Selects methods to which this rule applies.
2261 #
2262 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002263 "responseBody": "A String", # The name of the response field whose value is mapped to the HTTP body of
2264 # response. Other response fields are ignored. This field is optional. When
2265 # not set, the response message will be used as HTTP body of response.
2266 # NOTE: the referred field must be not a repeated field and must be present
2267 # at the top-level of response message type.
2268 "put": "A String", # Used for updating a resource.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07002269 "patch": "A String", # Used for updating a resource.
Thomas Coffee2f245372017-03-27 10:39:26 -07002270 "post": "A String", # Used for creating a resource.
2271 "custom": { # A custom pattern is used for defining custom HTTP verb. # Custom pattern is used for defining custom verbs.
2272 "path": "A String", # The path matched by this custom verb.
2273 "kind": "A String", # The name of this custom HTTP verb.
2274 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002275 "delete": "A String", # Used for deleting a resource.
2276 },
2277 ],
2278 },
2279 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
2280 # of the google.protobuf.Api needs to be provided by the configuration
2281 # author, as the remaining fields will be derived from the IDL during the
2282 # normalization process. It is an error to specify an API interface here
2283 # which cannot be resolved against the associated IDL files.
2284 { # Api is a light-weight descriptor for a protocol buffer service.
2285 "methods": [ # The methods of this api, in unspecified order.
2286 { # Method represents a method of an api.
2287 "name": "A String", # The simple name of this method.
2288 "requestStreaming": True or False, # If true, the request is streamed.
2289 "responseTypeUrl": "A String", # The URL of the output message type.
2290 "requestTypeUrl": "A String", # A URL of the input message type.
2291 "responseStreaming": True or False, # If true, the response is streamed.
2292 "syntax": "A String", # The source syntax of this method.
2293 "options": [ # Any metadata attached to the method.
2294 { # A protocol buffer option, which can be attached to a message, field,
2295 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002296 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2297 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2298 # For custom options, it should be the fully-qualified name. For example,
2299 # `"google.api.http"`.
2300 "value": { # The option's value packed in an Any message. If the value is a primitive,
2301 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2302 # should be used. If the value is an enum, it should be stored as an int32
2303 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002304 "a_key": "", # Properties of the object. Contains field @type with type URL.
2305 },
2306 },
2307 ],
2308 },
2309 ],
2310 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
2311 # message.
2312 # protobuf element, like the file in which it is defined.
2313 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
2314 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2315 },
2316 "mixins": [ # Included APIs. See Mixin.
2317 { # Declares an API to be included in this API. The including API must
2318 # redeclare all the methods from the included API, but documentation
2319 # and options are inherited as follows:
2320 #
2321 # - If after comment and whitespace stripping, the documentation
2322 # string of the redeclared method is empty, it will be inherited
2323 # from the original method.
2324 #
2325 # - Each annotation belonging to the service config (http,
2326 # visibility) which is not set in the redeclared method will be
2327 # inherited.
2328 #
2329 # - If an http annotation is inherited, the path pattern will be
2330 # modified as follows. Any version prefix will be replaced by the
2331 # version of the including API plus the root path if specified.
2332 #
2333 # Example of a simple mixin:
2334 #
2335 # package google.acl.v1;
2336 # service AccessControl {
2337 # // Get the underlying ACL object.
2338 # rpc GetAcl(GetAclRequest) returns (Acl) {
2339 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
2340 # }
2341 # }
2342 #
2343 # package google.storage.v2;
2344 # service Storage {
2345 # // rpc GetAcl(GetAclRequest) returns (Acl);
2346 #
2347 # // Get a data record.
2348 # rpc GetData(GetDataRequest) returns (Data) {
2349 # option (google.api.http).get = "/v2/{resource=**}";
2350 # }
2351 # }
2352 #
2353 # Example of a mixin configuration:
2354 #
2355 # apis:
2356 # - name: google.storage.v2.Storage
2357 # mixins:
2358 # - name: google.acl.v1.AccessControl
2359 #
2360 # The mixin construct implies that all methods in `AccessControl` are
2361 # also declared with same name and request/response types in
2362 # `Storage`. A documentation generator or annotation processor will
2363 # see the effective `Storage.GetAcl` method after inherting
2364 # documentation and annotations as follows:
2365 #
2366 # service Storage {
2367 # // Get the underlying ACL object.
2368 # rpc GetAcl(GetAclRequest) returns (Acl) {
2369 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
2370 # }
2371 # ...
2372 # }
2373 #
2374 # Note how the version in the path pattern changed from `v1` to `v2`.
2375 #
2376 # If the `root` field in the mixin is specified, it should be a
2377 # relative path under which inherited HTTP paths are placed. Example:
2378 #
2379 # apis:
2380 # - name: google.storage.v2.Storage
2381 # mixins:
2382 # - name: google.acl.v1.AccessControl
2383 # root: acls
2384 #
2385 # This implies the following inherited HTTP annotation:
2386 #
2387 # service Storage {
2388 # // Get the underlying ACL object.
2389 # rpc GetAcl(GetAclRequest) returns (Acl) {
2390 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
2391 # }
2392 # ...
2393 # }
2394 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
2395 # are rooted.
2396 "name": "A String", # The fully qualified name of the API which is included.
2397 },
2398 ],
2399 "syntax": "A String", # The source syntax of the service.
2400 "version": "A String", # A version string for this api. If specified, must have the form
2401 # `major-version.minor-version`, as in `1.10`. If the minor version
2402 # is omitted, it defaults to zero. If the entire version field is
2403 # empty, the major version is derived from the package name, as
2404 # outlined below. If the field is not empty, the version in the
2405 # package name will be verified to be consistent with what is
2406 # provided here.
2407 #
2408 # The versioning schema uses [semantic
2409 # versioning](http://semver.org) where the major version number
2410 # indicates a breaking change and the minor version an additive,
2411 # non-breaking change. Both version numbers are signals to users
2412 # what to expect from different versions, and should be carefully
2413 # chosen based on the product plan.
2414 #
2415 # The major version is also reflected in the package name of the
2416 # API, which must end in `v<major-version>`, as in
2417 # `google.feature.v1`. For major versions 0 and 1, the suffix can
2418 # be omitted. Zero major versions must only be used for
2419 # experimental, none-GA apis.
2420 "options": [ # Any metadata attached to the API.
2421 { # A protocol buffer option, which can be attached to a message, field,
2422 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002423 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2424 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2425 # For custom options, it should be the fully-qualified name. For example,
2426 # `"google.api.http"`.
2427 "value": { # The option's value packed in an Any message. If the value is a primitive,
2428 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2429 # should be used. If the value is an enum, it should be stored as an int32
2430 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002431 "a_key": "", # Properties of the object. Contains field @type with type URL.
2432 },
2433 },
2434 ],
2435 "name": "A String", # The fully qualified name of this api, including package name
2436 # followed by the api's simple name.
2437 },
2438 ],
2439 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
2440 # specific protobuf types that can appear in error detail lists of
2441 # error responses.
2442 #
2443 # Example:
2444 #
2445 # custom_error:
2446 # types:
2447 # - google.foo.v1.CustomError
2448 # - google.foo.v1.AnotherError
2449 "rules": [ # The list of custom error rules that apply to individual API messages.
2450 #
2451 # **NOTE:** All service configuration rules follow "last one wins" order.
2452 { # A custom error rule.
2453 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
2454 # objects of this type will be filtered when they appear in error payload.
2455 "selector": "A String", # Selects messages to which this rule applies.
2456 #
2457 # Refer to selector for syntax details.
2458 },
2459 ],
2460 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
2461 "A String",
2462 ],
2463 },
2464 "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
2465 # elements. Restrictions are specified using visibility labels
2466 # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
2467 #
2468 # Users and projects can have access to more than one visibility label. The
2469 # effective visibility for multiple labels is the union of each label's
2470 # elements, plus any unrestricted elements.
2471 #
2472 # If an element and its parents have no restrictions, visibility is
2473 # unconditionally granted.
2474 #
2475 # Example:
2476 #
2477 # visibility:
2478 # rules:
2479 # - selector: google.calendar.Calendar.EnhancedSearch
2480 # restriction: TRUSTED_TESTER
2481 # - selector: google.calendar.Calendar.Delegate
2482 # restriction: GOOGLE_INTERNAL
2483 #
2484 # Here, all methods are publicly visible except for the restricted methods
2485 # EnhancedSearch and Delegate.
2486 "rules": [ # A list of visibility rules that apply to individual API elements.
2487 #
2488 # **NOTE:** All service configuration rules follow "last one wins" order.
2489 { # A visibility rule provides visibility configuration for an individual API
2490 # element.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002491 "restriction": "A String", # A comma-separated list of visibility labels that apply to the `selector`.
2492 # Any of the listed labels can be used to grant the visibility.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002493 #
2494 # If a rule has multiple labels, removing one of the labels but not all of
2495 # them can break clients.
2496 #
2497 # Example:
2498 #
2499 # visibility:
2500 # rules:
2501 # - selector: google.calendar.Calendar.EnhancedSearch
2502 # restriction: GOOGLE_INTERNAL, TRUSTED_TESTER
2503 #
2504 # Removing GOOGLE_INTERNAL from this restriction will break clients that
2505 # rely on this method and only had access to it through GOOGLE_INTERNAL.
2506 "selector": "A String", # Selects methods, messages, fields, enums, etc. to which this rule applies.
2507 #
2508 # Refer to selector for syntax details.
2509 },
2510 ],
2511 },
2512 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002513 { # Defines a metric type and its schema. Once a metric descriptor is created,
2514 # deleting or altering it stops data collection and makes the metric type's
2515 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002516 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
2517 # Use sentence case without an ending period, for example "Request count".
Thomas Coffee2f245372017-03-27 10:39:26 -07002518 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002519 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002520 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002521 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002522 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002523 "labels": [ # The set of labels that can be used to describe a specific
2524 # instance of this metric type. For example, the
2525 # `appengine.googleapis.com/http/server/response_latencies` metric
2526 # type has a label for the HTTP response code, `response_code`, so
2527 # you can look at latencies for successful responses or just
2528 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002529 { # A description of a label.
2530 "valueType": "A String", # The type of data that can be assigned to the label.
2531 "description": "A String", # A human-readable description for the label.
2532 "key": "A String", # The label key.
2533 },
2534 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002535 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002536 # URL-encoded. All user-defined custom metric types have the DNS name
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002537 # `custom.googleapis.com`. Metric types should use a natural hierarchical
2538 # grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002539 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002540 # "custom.googleapis.com/invoice/paid/amount"
2541 # "appengine.googleapis.com/http/server/response_latencies"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002542 "unit": "A String", # The unit in which the metric value is reported. It is only applicable
2543 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
2544 # supported units are a subset of [The Unified Code for Units of
2545 # Measure](http://unitsofmeasure.org/ucum.html) standard:
2546 #
2547 # **Basic units (UNIT)**
2548 #
2549 # * `bit` bit
2550 # * `By` byte
2551 # * `s` second
2552 # * `min` minute
2553 # * `h` hour
2554 # * `d` day
2555 #
2556 # **Prefixes (PREFIX)**
2557 #
2558 # * `k` kilo (10**3)
2559 # * `M` mega (10**6)
2560 # * `G` giga (10**9)
2561 # * `T` tera (10**12)
2562 # * `P` peta (10**15)
2563 # * `E` exa (10**18)
2564 # * `Z` zetta (10**21)
2565 # * `Y` yotta (10**24)
2566 # * `m` milli (10**-3)
2567 # * `u` micro (10**-6)
2568 # * `n` nano (10**-9)
2569 # * `p` pico (10**-12)
2570 # * `f` femto (10**-15)
2571 # * `a` atto (10**-18)
2572 # * `z` zepto (10**-21)
2573 # * `y` yocto (10**-24)
2574 # * `Ki` kibi (2**10)
2575 # * `Mi` mebi (2**20)
2576 # * `Gi` gibi (2**30)
2577 # * `Ti` tebi (2**40)
2578 #
2579 # **Grammar**
2580 #
2581 # The grammar includes the dimensionless unit `1`, such as `1/s`.
2582 #
2583 # The grammar also includes these connectors:
2584 #
2585 # * `/` division (as an infix operator, e.g. `1/s`).
2586 # * `.` multiplication (as an infix operator, e.g. `GBy.d`)
2587 #
2588 # The grammar for a unit is as follows:
2589 #
2590 # Expression = Component { "." Component } { "/" Component } ;
2591 #
2592 # Component = [ PREFIX ] UNIT [ Annotation ]
2593 # | Annotation
2594 # | "1"
2595 # ;
2596 #
2597 # Annotation = "{" NAME "}" ;
2598 #
2599 # Notes:
2600 #
2601 # * `Annotation` is just a comment if it follows a `UNIT` and is
2602 # equivalent to `1` if it is used alone. For examples,
2603 # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
2604 # * `NAME` is a sequence of non-blank printable ASCII characters not
2605 # containing '{' or '}'.
Thomas Coffee2f245372017-03-27 10:39:26 -07002606 "name": "A String", # The resource name of the metric descriptor. Depending on the
2607 # implementation, the name typically includes: (1) the parent resource name
2608 # that defines the scope of the metric type or of its data; and (2) the
2609 # metric's URL-encoded type, which also appears in the `type` field of this
2610 # descriptor. For example, following is the resource name of a custom
2611 # metric within the GCP project `my-project-id`:
2612 #
2613 # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002614 },
2615 ],
2616 "enums": [ # A list of all enum types included in this API service. Enums
2617 # referenced directly or indirectly by the `apis` are automatically
2618 # included. Enums which are not referenced but shall be included
2619 # should be listed here by name. Example:
2620 #
2621 # enums:
2622 # - name: google.someapi.v1.SomeEnum
2623 { # Enum type definition.
Thomas Coffee2f245372017-03-27 10:39:26 -07002624 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002625 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
2626 # protobuf element, like the file in which it is defined.
2627 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
2628 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2629 },
Thomas Coffee2f245372017-03-27 10:39:26 -07002630 "options": [ # Protocol buffer options.
2631 { # A protocol buffer option, which can be attached to a message, field,
2632 # enumeration, etc.
2633 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2634 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2635 # For custom options, it should be the fully-qualified name. For example,
2636 # `"google.api.http"`.
2637 "value": { # The option's value packed in an Any message. If the value is a primitive,
2638 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2639 # should be used. If the value is an enum, it should be stored as an int32
2640 # value using the google.protobuf.Int32Value type.
2641 "a_key": "", # Properties of the object. Contains field @type with type URL.
2642 },
2643 },
2644 ],
2645 "name": "A String", # Enum type name.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07002646 "enumvalue": [ # Enum value definitions.
2647 { # Enum value definition.
2648 "number": 42, # Enum value number.
2649 "name": "A String", # Enum value name.
2650 "options": [ # Protocol buffer options.
2651 { # A protocol buffer option, which can be attached to a message, field,
2652 # enumeration, etc.
2653 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2654 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2655 # For custom options, it should be the fully-qualified name. For example,
2656 # `"google.api.http"`.
2657 "value": { # The option's value packed in an Any message. If the value is a primitive,
2658 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2659 # should be used. If the value is an enum, it should be stored as an int32
2660 # value using the google.protobuf.Int32Value type.
2661 "a_key": "", # Properties of the object. Contains field @type with type URL.
2662 },
2663 },
2664 ],
2665 },
2666 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002667 },
2668 ],
2669 "types": [ # A list of all proto message types included in this API service.
2670 # Types referenced directly or indirectly by the `apis` are
2671 # automatically included. Messages which are not referenced but
2672 # shall be included, such as types used by the `google.protobuf.Any` type,
2673 # should be listed here by name. Example:
2674 #
2675 # types:
2676 # - name: google.protobuf.Int32
2677 { # A protocol buffer message type.
2678 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
2679 "A String",
2680 ],
2681 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002682 "fields": [ # The list of fields.
2683 { # A single field of a message type.
2684 "kind": "A String", # The field type.
2685 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
2686 # types. The first type has index 1; zero means the type is not in the list.
2687 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
2688 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
2689 "name": "A String", # The field name.
2690 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
2691 "jsonName": "A String", # The field JSON name.
2692 "number": 42, # The field number.
2693 "cardinality": "A String", # The field cardinality.
2694 "options": [ # The protocol buffer options.
2695 { # A protocol buffer option, which can be attached to a message, field,
2696 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002697 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2698 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2699 # For custom options, it should be the fully-qualified name. For example,
2700 # `"google.api.http"`.
2701 "value": { # The option's value packed in an Any message. If the value is a primitive,
2702 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2703 # should be used. If the value is an enum, it should be stored as an int32
2704 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002705 "a_key": "", # Properties of the object. Contains field @type with type URL.
2706 },
2707 },
2708 ],
2709 "packed": True or False, # Whether to use alternative packed wire representation.
2710 },
2711 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002712 "syntax": "A String", # The source syntax.
2713 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
2714 # protobuf element, like the file in which it is defined.
2715 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
2716 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2717 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002718 "options": [ # The protocol buffer options.
2719 { # A protocol buffer option, which can be attached to a message, field,
2720 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002721 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2722 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2723 # For custom options, it should be the fully-qualified name. For example,
2724 # `"google.api.http"`.
2725 "value": { # The option's value packed in an Any message. If the value is a primitive,
2726 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2727 # should be used. If the value is an enum, it should be stored as an int32
2728 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002729 "a_key": "", # Properties of the object. Contains field @type with type URL.
2730 },
2731 },
2732 ],
2733 },
2734 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07002735 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002736 #
2737 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002738 # producer and consumer projects. In the example, the `activity_history`
2739 # log is sent to both the producer and consumer projects, whereas the
2740 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002741 #
2742 # monitored_resources:
2743 # - type: library.googleapis.com/branch
2744 # labels:
2745 # - key: /city
2746 # description: The city where the library branch is located in.
2747 # - key: /name
2748 # description: The name of the branch.
2749 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002750 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002751 # labels:
2752 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002753 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002754 # logging:
2755 # producer_destinations:
2756 # - monitored_resource: library.googleapis.com/branch
2757 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002758 # - activity_history
2759 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002760 # consumer_destinations:
2761 # - monitored_resource: library.googleapis.com/branch
2762 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002763 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002764 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
2765 # There can be multiple producer destinations, each one must have a
2766 # different monitored resource type. A log can be used in at most
2767 # one producer destination.
2768 { # Configuration of a specific logging destination (the producer project
2769 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002770 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002771 # Service.monitored_resources section.
2772 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002773 # be defined in the Service.logs section. If the log name is
2774 # not a domain scoped name, it will be automatically prefixed with
2775 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002776 "A String",
2777 ],
2778 },
2779 ],
2780 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
2781 # There can be multiple consumer destinations, each one must have a
2782 # different monitored resource type. A log can be used in at most
2783 # one consumer destination.
2784 { # Configuration of a specific logging destination (the producer project
2785 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002786 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002787 # Service.monitored_resources section.
2788 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07002789 # be defined in the Service.logs section. If the log name is
2790 # not a domain scoped name, it will be automatically prefixed with
2791 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002792 "A String",
2793 ],
2794 },
2795 ],
2796 },
2797 "name": "A String", # The DNS address at which this service is available,
2798 # e.g. `calendar.googleapis.com`.
2799 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
2800 #
2801 # Example:
2802 # <pre><code>documentation:
2803 # summary: >
2804 # The Google Calendar API gives access
2805 # to most calendar features.
2806 # pages:
2807 # - name: Overview
2808 # content: &#40;== include google/foo/overview.md ==&#41;
2809 # - name: Tutorial
2810 # content: &#40;== include google/foo/tutorial.md ==&#41;
2811 # subpages;
2812 # - name: Java
2813 # content: &#40;== include google/foo/tutorial_java.md ==&#41;
2814 # rules:
2815 # - selector: google.calendar.Calendar.Get
2816 # description: >
2817 # ...
2818 # - selector: google.calendar.Calendar.Put
2819 # description: >
2820 # ...
2821 # </code></pre>
2822 # Documentation is provided in markdown syntax. In addition to
2823 # standard markdown features, definition lists, tables and fenced
2824 # code blocks are supported. Section headers can be provided and are
2825 # interpreted relative to the section nesting of the context where
2826 # a documentation fragment is embedded.
2827 #
2828 # Documentation from the IDL is merged with documentation defined
2829 # via the config at normalization time, where documentation provided
2830 # by config rules overrides IDL provided.
2831 #
2832 # A number of constructs specific to the API platform are supported
2833 # in documentation text.
2834 #
2835 # In order to reference a proto element, the following
2836 # notation can be used:
2837 # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
2838 # To override the display text used for the link, this can be used:
2839 # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
2840 # Text can be excluded from doc using the following notation:
2841 # <pre><code>&#40;-- internal comment --&#41;</code></pre>
2842 # Comments can be made conditional using a visibility label. The below
2843 # text will be only rendered if the `BETA` label is available:
2844 # <pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>
2845 # A few directives are available in documentation. Note that
2846 # directives must appear on a single line to be properly
2847 # identified. The `include` directive includes a markdown file from
2848 # an external source:
2849 # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
2850 # The `resource_for` directive marks a message to be the resource of
2851 # a collection in REST view. If it is not specified, tools attempt
2852 # to infer the resource from the operations in a collection:
2853 # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
2854 # The directive `suppress_warning` does not directly affect documentation
2855 # and is documented together with service config validation.
2856 "rules": [ # A list of documentation rules that apply to individual API elements.
2857 #
2858 # **NOTE:** All service configuration rules follow "last one wins" order.
2859 { # A documentation rule provides information about individual API elements.
2860 "description": "A String", # Description of the selected API(s).
2861 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if an
2862 # element is marked as `deprecated`.
2863 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
2864 # qualified name of the element which may end in "*", indicating a wildcard.
2865 # Wildcards are only allowed at the end and for a whole component of the
2866 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To
2867 # specify a default for all applicable elements, the whole pattern "*"
2868 # is used.
2869 },
2870 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002871 "documentationRootUrl": "A String", # The URL to the root of documentation.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07002872 "overview": "A String", # Declares a single overview page. For example:
2873 # <pre><code>documentation:
2874 # summary: ...
2875 # overview: &#40;== include overview.md ==&#41;
2876 # </code></pre>
2877 # This is a shortcut for the following declaration (using pages style):
2878 # <pre><code>documentation:
2879 # summary: ...
2880 # pages:
2881 # - name: Overview
2882 # content: &#40;== include overview.md ==&#41;
2883 # </code></pre>
2884 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002885 "pages": [ # The top level pages for the documentation set.
2886 { # Represents a documentation page. A page can contain subpages to represent
2887 # nested documentation set structure.
2888 "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path} ==&#41;</code>
2889 # to include content from a Markdown file.
2890 "subpages": [ # Subpages of this page. The order of subpages specified here will be
2891 # honored in the generated docset.
2892 # Object with schema name: Page
2893 ],
2894 "name": "A String", # The name of the page. It will be used as an identity of the page to
2895 # generate URI of the page, text of the link to this page in navigation,
2896 # etc. The full page name (start from the root page name to this page
2897 # concatenated with `.`) can be used as reference to the page in your
2898 # documentation. For example:
2899 # <pre><code>pages:
2900 # - name: Tutorial
2901 # content: &#40;== include tutorial.md ==&#41;
2902 # subpages:
2903 # - name: Java
2904 # content: &#40;== include tutorial_java.md ==&#41;
2905 # </code></pre>
2906 # You can reference `Java` page using Markdown reference link syntax:
2907 # `Java`.
2908 },
2909 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07002910 "summary": "A String", # A short summary of what the service does. Can only be provided by
2911 # plain text.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002912 },
2913 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
2914 "sourceFiles": [ # All files used during config generation.
2915 {
2916 "a_key": "", # Properties of the object. Contains field @type with type URL.
2917 },
2918 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002919 },
2920 "systemTypes": [ # A list of all proto message types included in this API service.
2921 # It serves similar purpose as [google.api.Service.types], except that
2922 # these types are not needed by user-defined APIs. Therefore, they will not
2923 # show up in the generated discovery doc. This field should only be used
2924 # to define system APIs in ESF.
2925 { # A protocol buffer message type.
2926 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
2927 "A String",
2928 ],
2929 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002930 "fields": [ # The list of fields.
2931 { # A single field of a message type.
2932 "kind": "A String", # The field type.
2933 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
2934 # types. The first type has index 1; zero means the type is not in the list.
2935 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
2936 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
2937 "name": "A String", # The field name.
2938 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
2939 "jsonName": "A String", # The field JSON name.
2940 "number": 42, # The field number.
2941 "cardinality": "A String", # The field cardinality.
2942 "options": [ # The protocol buffer options.
2943 { # A protocol buffer option, which can be attached to a message, field,
2944 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002945 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2946 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2947 # For custom options, it should be the fully-qualified name. For example,
2948 # `"google.api.http"`.
2949 "value": { # The option's value packed in an Any message. If the value is a primitive,
2950 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2951 # should be used. If the value is an enum, it should be stored as an int32
2952 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002953 "a_key": "", # Properties of the object. Contains field @type with type URL.
2954 },
2955 },
2956 ],
2957 "packed": True or False, # Whether to use alternative packed wire representation.
2958 },
2959 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04002960 "syntax": "A String", # The source syntax.
2961 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
2962 # protobuf element, like the file in which it is defined.
2963 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
2964 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
2965 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002966 "options": [ # The protocol buffer options.
2967 { # A protocol buffer option, which can be attached to a message, field,
2968 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08002969 "name": "A String", # The option's name. For protobuf built-in options (options defined in
2970 # descriptor.proto), this is the short name. For example, `"map_entry"`.
2971 # For custom options, it should be the fully-qualified name. For example,
2972 # `"google.api.http"`.
2973 "value": { # The option's value packed in an Any message. If the value is a primitive,
2974 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
2975 # should be used. If the value is an enum, it should be stored as an int32
2976 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07002977 "a_key": "", # Properties of the object. Contains field @type with type URL.
2978 },
2979 },
2980 ],
2981 },
2982 ],
2983 "context": { # `Context` defines which contexts an API requests. # Context configuration.
2984 #
2985 # Example:
2986 #
2987 # context:
2988 # rules:
2989 # - selector: "*"
2990 # requested:
2991 # - google.rpc.context.ProjectContext
2992 # - google.rpc.context.OriginContext
2993 #
2994 # The above specifies that all methods in the API request
2995 # `google.rpc.context.ProjectContext` and
2996 # `google.rpc.context.OriginContext`.
2997 #
2998 # Available context types are defined in package
2999 # `google.rpc.context`.
3000 "rules": [ # A list of RPC context rules that apply to individual API methods.
3001 #
3002 # **NOTE:** All service configuration rules follow "last one wins" order.
3003 { # A context rule provides information about the context for an individual API
3004 # element.
3005 "provided": [ # A list of full type names of provided contexts.
3006 "A String",
3007 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003008 "requested": [ # A list of full type names of requested contexts.
3009 "A String",
3010 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07003011 "selector": "A String", # Selects the methods to which this rule applies.
3012 #
3013 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003014 },
3015 ],
3016 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003017 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
3018 # with the same name as the service is automatically generated to service all
3019 # defined APIs.
3020 { # `Endpoint` describes a network endpoint that serves a set of APIs.
3021 # A service may expose any number of endpoints, and all endpoints share the
3022 # same service configuration, such as quota configuration and monitoring
3023 # configuration.
3024 #
3025 # Example service configuration:
3026 #
3027 # name: library-example.googleapis.com
3028 # endpoints:
3029 # # Below entry makes 'google.example.library.v1.Library'
3030 # # API be served from endpoint address library-example.googleapis.com.
3031 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
3032 # # it to decide whether the subsequent cross-origin request is
3033 # # allowed to proceed.
3034 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003035 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003036 "allowCors": True or False, # Allowing
3037 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
3038 # cross-domain traffic, would allow the backends served from this endpoint to
3039 # receive and respond to HTTP OPTIONS requests. The response will be used by
3040 # the browser to determine whether the subsequent cross-origin request is
3041 # allowed to proceed.
Thomas Coffee2f245372017-03-27 10:39:26 -07003042 "apis": [ # The list of APIs served by this endpoint.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003043 "A String",
3044 ],
3045 "features": [ # The list of features enabled on this endpoint.
3046 "A String",
3047 ],
3048 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07003049 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
3050 # please specify multiple google.api.Endpoint for each of the intented
3051 # alias.
3052 #
3053 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003054 "A String",
3055 ],
3056 },
3057 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003058 "experimental": { # Experimental service configuration. These configuration options can # Experimental configuration.
3059 # only be used by whitelisted users.
3060 "authorization": { # Configuration of authorization. # Authorization configuration.
3061 #
3062 # This section determines the authorization provider, if unspecified, then no
3063 # authorization check will be done.
3064 #
3065 # Example:
3066 #
3067 # experimental:
3068 # authorization:
3069 # provider: firebaserules.googleapis.com
3070 "provider": "A String", # The name of the authorization provider, such as
3071 # firebaserules.googleapis.com.
3072 },
3073 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003074 }</pre>
3075</div>
3076
3077<div class="method">
Thomas Coffee2f245372017-03-27 10:39:26 -07003078 <code class="details" id="get">get(serviceName, configId, x__xgafv=None, view=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003079 <pre>Gets a service configuration (version) for a managed service.
3080
3081Args:
3082 serviceName: string, The name of the service. See the [overview](/service-management/overview)
3083for naming requirements. For example: `example.googleapis.com`. (required)
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003084 configId: string, The id of the service configuration resource. (required)
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003085 x__xgafv: string, V1 error format.
3086 Allowed values
3087 1 - v1 error format
3088 2 - v2 error format
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003089 view: string, Specifies which parts of the Service Config should be returned in the
3090response.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003091
3092Returns:
3093 An object of the form:
3094
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003095 { # `Service` is the root object of Google service configuration schema. It
3096 # describes basic information about a service, such as the name and the
3097 # title, and delegates other aspects to sub-sections. Each sub-section is
3098 # either a proto message or a repeated proto message that configures a
3099 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003100 #
3101 # Example:
3102 #
3103 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003104 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003105 # name: calendar.googleapis.com
3106 # title: Google Calendar API
3107 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003108 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003109 # authentication:
3110 # providers:
3111 # - id: google_calendar_auth
3112 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
3113 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003114 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003115 # - selector: "*"
3116 # requirements:
3117 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003118 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
3119 # service controller handles features like abuse, quota, billing, logging,
3120 # monitoring, etc.
3121 "environment": "A String", # The service control environment to use. If empty, no control plane
3122 # feature (like quota and billing) will be enabled.
3123 },
3124 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
3125 # by the Service.monitoring and Service.logging configurations.
3126 { # An object that describes the schema of a MonitoredResource object using a
3127 # type name and a set of labels. For example, the monitored resource
3128 # descriptor for Google Compute Engine VM instances has a type of
3129 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
3130 # `"zone"` to identify particular VM instances.
3131 #
3132 # Different APIs can support different monitored resource types. APIs generally
3133 # provide a `list` method that returns the monitored resource descriptors used
3134 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07003135 "type": "A String", # Required. The monitored resource type. For example, the type
3136 # `"cloudsql_database"` represents databases in Google Cloud SQL.
3137 # The maximum length of this value is 256 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003138 "labels": [ # Required. A set of labels used to describe instances of this monitored
3139 # resource type. For example, an individual Google Cloud SQL database is
3140 # identified by values for the labels `"database_id"` and `"zone"`.
3141 { # A description of a label.
3142 "valueType": "A String", # The type of data that can be assigned to the label.
3143 "description": "A String", # A human-readable description for the label.
3144 "key": "A String", # The label key.
3145 },
3146 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07003147 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
3148 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
3149 # without any article or other determiners. For example,
3150 # `"Google Cloud SQL Database"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003151 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
3152 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
3153 # {type} is the value of the `type` field in this object and
3154 # {project_id} is a project ID that provides API-specific context for
3155 # accessing the type. APIs that do not use project information can use the
3156 # resource name format `"monitoredResourceDescriptors/{type}"`.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003157 "description": "A String", # Optional. A detailed description of the monitored resource type that might
3158 # be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003159 },
3160 ],
3161 "logs": [ # Defines the logs used by this service.
3162 { # A description of a log type. Example in YAML format:
3163 #
3164 # - name: library.googleapis.com/activity_history
3165 # description: The history of borrowing and returning library items.
3166 # display_name: Activity
3167 # labels:
3168 # - key: /customer_id
3169 # description: Identifier of a library customer
3170 "labels": [ # The set of labels that are available to describe a specific log entry.
3171 # Runtime requests that contain labels not specified here are
3172 # considered invalid.
3173 { # A description of a label.
3174 "valueType": "A String", # The type of data that can be assigned to the label.
3175 "description": "A String", # A human-readable description for the label.
3176 "key": "A String", # The label key.
3177 },
3178 ],
3179 "displayName": "A String", # The human-readable name for this log. This information appears on
3180 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003181 "name": "A String", # The name of the log. It must be less than 512 characters long and can
3182 # include the following characters: upper- and lower-case alphanumeric
3183 # characters [A-Za-z0-9], and punctuation characters including
3184 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07003185 "description": "A String", # A human-readable description of this log. This information appears in
3186 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003187 },
3188 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07003189 "systemParameters": { # ### System parameter configuration # System parameter configuration.
3190 #
3191 # A system parameter is a special kind of parameter defined by the API
3192 # system, not by an individual API. It is typically mapped to an HTTP header
3193 # and/or a URL query parameter. This configuration specifies which methods
3194 # change the names of the system parameters.
3195 "rules": [ # Define system parameters.
3196 #
3197 # The parameters defined here will override the default parameters
3198 # implemented by the system. If this field is missing from the service
3199 # config, default system parameters will be used. Default system parameters
3200 # and names is implementation-dependent.
3201 #
3202 # Example: define api key for all methods
3203 #
3204 # system_parameters
3205 # rules:
3206 # - selector: "*"
3207 # parameters:
3208 # - name: api_key
3209 # url_query_parameter: api_key
3210 #
3211 #
3212 # Example: define 2 api key names for a specific method.
3213 #
3214 # system_parameters
3215 # rules:
3216 # - selector: "/ListShelves"
3217 # parameters:
3218 # - name: api_key
3219 # http_header: Api-Key1
3220 # - name: api_key
3221 # http_header: Api-Key2
3222 #
3223 # **NOTE:** All service configuration rules follow "last one wins" order.
3224 { # Define a system parameter rule mapping system parameter definitions to
3225 # methods.
3226 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
3227 # For a given method call, only one of them should be used. If multiple
3228 # names are used the behavior is implementation-dependent.
3229 # If none of the specified names are present the behavior is
3230 # parameter-dependent.
3231 { # Define a parameter's name and location. The parameter may be passed as either
3232 # an HTTP header or a URL query parameter, and if both are passed the behavior
3233 # is implementation-dependent.
3234 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
3235 # sensitive.
3236 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
3237 # insensitive.
3238 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
3239 },
3240 ],
3241 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
3242 # methods in all APIs.
3243 #
3244 # Refer to selector for syntax details.
3245 },
3246 ],
3247 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003248 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
3249 "rules": [ # A list of API backend rules that apply to individual API methods.
3250 #
3251 # **NOTE:** All service configuration rules follow "last one wins" order.
3252 { # A backend rule provides configuration for an individual API element.
3253 "selector": "A String", # Selects the methods to which this rule applies.
3254 #
3255 # Refer to selector for syntax details.
3256 "deadline": 3.14, # The number of seconds to wait for a response from a request. The
3257 # default depends on the deployment context.
3258 "address": "A String", # The address of the API backend.
3259 },
3260 ],
3261 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003262 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003263 #
3264 # The example below shows how to configure monitored resources and metrics
3265 # for monitoring. In the example, a monitored resource and two metrics are
3266 # defined. The `library.googleapis.com/book/returned_count` metric is sent
3267 # to both producer and consumer projects, whereas the
3268 # `library.googleapis.com/book/overdue_count` metric is only sent to the
3269 # consumer project.
3270 #
3271 # monitored_resources:
3272 # - type: library.googleapis.com/branch
3273 # labels:
3274 # - key: /city
3275 # description: The city where the library branch is located in.
3276 # - key: /name
3277 # description: The name of the branch.
3278 # metrics:
3279 # - name: library.googleapis.com/book/returned_count
3280 # metric_kind: DELTA
3281 # value_type: INT64
3282 # labels:
3283 # - key: /customer_id
3284 # - name: library.googleapis.com/book/overdue_count
3285 # metric_kind: GAUGE
3286 # value_type: INT64
3287 # labels:
3288 # - key: /customer_id
3289 # monitoring:
3290 # producer_destinations:
3291 # - monitored_resource: library.googleapis.com/branch
3292 # metrics:
3293 # - library.googleapis.com/book/returned_count
3294 # consumer_destinations:
3295 # - monitored_resource: library.googleapis.com/branch
3296 # metrics:
3297 # - library.googleapis.com/book/returned_count
3298 # - library.googleapis.com/book/overdue_count
3299 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
3300 # There can be multiple producer destinations, each one must have a
3301 # different monitored resource type. A metric can be used in at most
3302 # one producer destination.
3303 { # Configuration of a specific monitoring destination (the producer project
3304 # or the consumer project).
3305 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
3306 # Service.monitored_resources section.
3307 "metrics": [ # Names of the metrics to report to this monitoring destination.
3308 # Each name must be defined in Service.metrics section.
3309 "A String",
3310 ],
3311 },
3312 ],
3313 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
3314 # There can be multiple consumer destinations, each one must have a
3315 # different monitored resource type. A metric can be used in at most
3316 # one consumer destination.
3317 { # Configuration of a specific monitoring destination (the producer project
3318 # or the consumer project).
3319 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
3320 # Service.monitored_resources section.
3321 "metrics": [ # Names of the metrics to report to this monitoring destination.
3322 # Each name must be defined in Service.metrics section.
3323 "A String",
3324 ],
3325 },
3326 ],
3327 },
Thomas Coffee2f245372017-03-27 10:39:26 -07003328 "title": "A String", # The product title associated with this service.
3329 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
3330 # by the client for tracking purpose. If empty, the server may choose to
3331 # generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003332 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
3333 #
3334 # Example for an API targeted for external use:
3335 #
3336 # name: calendar.googleapis.com
3337 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003338 # providers:
3339 # - id: google_calendar_auth
3340 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
3341 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003342 # rules:
3343 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003344 # requirements:
3345 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003346 "rules": [ # A list of authentication rules that apply to individual API methods.
3347 #
3348 # **NOTE:** All service configuration rules follow "last one wins" order.
3349 { # Authentication rules for the service.
3350 #
3351 # By default, if a method has any authentication requirements, every request
3352 # must include a valid credential matching one of the requirements.
3353 # It's an error to include more than one kind of credential in a single
3354 # request.
3355 #
3356 # If a method doesn't have any auth requirements, request credentials will be
3357 # ignored.
3358 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
3359 # there are scopes defined for "Read-only access to Google Calendar" and
3360 # "Access to Cloud Platform". Users can consent to a scope for an application,
3361 # giving it permission to access that data on their behalf.
3362 #
3363 # OAuth scope specifications should be fairly coarse grained; a user will need
3364 # to see and understand the text description of what your scope means.
3365 #
3366 # In most cases: use one or at most two OAuth scopes for an entire family of
3367 # products. If your product has multiple APIs, you should probably be sharing
3368 # the OAuth scope across all of those APIs.
3369 #
3370 # When you need finer grained OAuth consent screens: talk with your product
3371 # management about how developers will use them in practice.
3372 #
3373 # Please note that even though each of the canonical scopes is enough for a
3374 # request to be accepted and passed to the backend, a request can still fail
3375 # due to the backend requiring additional scopes or permissions.
3376 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
3377 # OAuth token containing any of these scopes will be accepted.
3378 #
3379 # Example:
3380 #
3381 # canonical_scopes: https://www.googleapis.com/auth/calendar,
3382 # https://www.googleapis.com/auth/calendar.read
3383 },
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003384 "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
3385 # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
3386 #
3387 # For requests without credentials, if the service control environment is
3388 # specified, each incoming request **must** be associated with a service
3389 # consumer. This can be done by passing an API key that belongs to a consumer
3390 # project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003391 "requirements": [ # Requirements for additional authentication providers.
3392 { # User-defined authentication requirements, including support for
3393 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
3394 "providerId": "A String", # id from authentication provider.
3395 #
3396 # Example:
3397 #
3398 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003399 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
3400 # implemented and accepted in all the runtime components.
3401 #
3402 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003403 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
3404 # that are allowed to access. A JWT containing any of these audiences will
3405 # be accepted. When this setting is absent, only JWTs with audience
3406 # "https://Service_name/API_name"
3407 # will be accepted. For example, if no audiences are in the setting,
3408 # LibraryService API will only accept JWTs with the following audience
3409 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
3410 #
3411 # Example:
3412 #
3413 # audiences: bookstore_android.apps.googleusercontent.com,
3414 # bookstore_web.apps.googleusercontent.com
3415 },
3416 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003417 "selector": "A String", # Selects the methods to which this rule applies.
3418 #
3419 # Refer to selector for syntax details.
3420 },
3421 ],
3422 "providers": [ # Defines a set of authentication providers that a service supports.
3423 { # Configuration for an anthentication provider, including support for
3424 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003425 "audiences": "A String", # The list of JWT
3426 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
3427 # that are allowed to access. A JWT containing any of these audiences will
3428 # be accepted. When this setting is absent, only JWTs with audience
3429 # "https://Service_name/API_name"
3430 # will be accepted. For example, if no audiences are in the setting,
3431 # LibraryService API will only accept JWTs with the following audience
3432 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
3433 #
3434 # Example:
3435 #
3436 # audiences: bookstore_android.apps.googleusercontent.com,
3437 # bookstore_web.apps.googleusercontent.com
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003438 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
3439 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
3440 # Optional if the key set document:
3441 # - can be retrieved from
3442 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
3443 # of the issuer.
3444 # - can be inferred from the email domain of the issuer (e.g. a Google service account).
3445 #
3446 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003447 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
3448 # `AuthRequirement.provider_id`.
3449 #
3450 # Example: "bookstore_auth".
3451 "issuer": "A String", # Identifies the principal that issued the JWT. See
3452 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
3453 # Usually a URL or an email address.
3454 #
3455 # Example: https://securetoken.google.com
3456 # Example: 1234567-compute@developer.gserviceaccount.com
3457 },
3458 ],
3459 },
3460 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
3461 "rules": [ # A list of usage rules that apply to individual API methods.
3462 #
3463 # **NOTE:** All service configuration rules follow "last one wins" order.
3464 { # Usage configuration rules for the service.
3465 #
3466 # NOTE: Under development.
3467 #
3468 #
3469 # Use this rule to configure unregistered calls for the service. Unregistered
3470 # calls are calls that do not contain consumer project identity.
3471 # (Example: calls that do not contain an API key).
3472 # By default, API methods do not allow unregistered calls, and each method call
3473 # must be identified by a consumer project identity. Use this rule to
3474 # allow/disallow unregistered calls.
3475 #
3476 # Example of an API that wants to allow unregistered calls for entire service.
3477 #
3478 # usage:
3479 # rules:
3480 # - selector: "*"
3481 # allow_unregistered_calls: true
3482 #
3483 # Example of a method that wants to allow unregistered calls.
3484 #
3485 # usage:
3486 # rules:
3487 # - selector: "google.example.library.v1.LibraryService.CreateBook"
3488 # allow_unregistered_calls: true
3489 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
3490 # methods in all APIs.
3491 #
3492 # Refer to selector for syntax details.
Thomas Coffee2f245372017-03-27 10:39:26 -07003493 "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003494 },
3495 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003496 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
3497 # service producer.
3498 #
3499 # Google Service Management currently only supports
3500 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
3501 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
3502 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
3503 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003504 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
3505 # service. Each requirement is of the form <service.name>/<requirement-id>;
3506 # for example 'serviceusage.googleapis.com/billing-enabled'.
3507 "A String",
3508 ],
3509 },
3510 "configVersion": 42, # The version of the service configuration. The config version may
3511 # influence interpretation of the configuration, for example, to
3512 # determine defaults. This is documented together with applicable
3513 # options. The current default for the config version itself is `3`.
3514 "producerProjectId": "A String", # The id of the Google developer project that owns the service.
3515 # Members of this project can manage the service configuration,
3516 # manage consumption of the service, etc.
3517 "http": { # Defines the HTTP configuration for a service. It contains a list of # HTTP configuration.
3518 # HttpRule, each specifying the mapping of an RPC method
3519 # to one or more HTTP REST API methods.
3520 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
3521 #
3522 # **NOTE:** All service configuration rules follow "last one wins" order.
3523 { # `HttpRule` defines the mapping of an RPC method to one or more HTTP
3524 # REST APIs. The mapping determines what portions of the request
3525 # message are populated from the path, query parameters, or body of
3526 # the HTTP request. The mapping is typically specified as an
3527 # `google.api.http` annotation, see "google/api/annotations.proto"
3528 # for details.
3529 #
3530 # The mapping consists of a field specifying the path template and
3531 # method kind. The path template can refer to fields in the request
3532 # message, as in the example below which describes a REST GET
3533 # operation on a resource collection of messages:
3534 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003535 #
3536 # service Messaging {
3537 # rpc GetMessage(GetMessageRequest) returns (Message) {
3538 # option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
3539 # }
3540 # }
3541 # message GetMessageRequest {
3542 # message SubMessage {
3543 # string subfield = 1;
3544 # }
3545 # string message_id = 1; // mapped to the URL
3546 # SubMessage sub = 2; // `sub.subfield` is url-mapped
3547 # }
3548 # message Message {
3549 # string text = 1; // content of the resource
3550 # }
3551 #
3552 # The same http annotation can alternatively be expressed inside the
3553 # `GRPC API Configuration` YAML file.
3554 #
3555 # http:
3556 # rules:
3557 # - selector: <proto_package_name>.Messaging.GetMessage
3558 # get: /v1/messages/{message_id}/{sub.subfield}
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003559 #
3560 # This definition enables an automatic, bidrectional mapping of HTTP
3561 # JSON to RPC. Example:
3562 #
3563 # HTTP | RPC
3564 # -----|-----
3565 # `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))`
3566 #
3567 # In general, not only fields but also field paths can be referenced
3568 # from a path pattern. Fields mapped to the path pattern cannot be
3569 # repeated and must have a primitive (non-message) type.
3570 #
3571 # Any fields in the request message which are not bound by the path
3572 # pattern automatically become (optional) HTTP query
3573 # parameters. Assume the following definition of the request message:
3574 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003575 #
3576 # message GetMessageRequest {
3577 # message SubMessage {
3578 # string subfield = 1;
3579 # }
3580 # string message_id = 1; // mapped to the URL
3581 # int64 revision = 2; // becomes a parameter
3582 # SubMessage sub = 3; // `sub.subfield` becomes a parameter
3583 # }
3584 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003585 #
3586 # This enables a HTTP JSON to RPC mapping as below:
3587 #
3588 # HTTP | RPC
3589 # -----|-----
3590 # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))`
3591 #
3592 # Note that fields which are mapped to HTTP parameters must have a
3593 # primitive type or a repeated primitive type. Message types are not
3594 # allowed. In the case of a repeated type, the parameter can be
3595 # repeated in the URL, as in `...?param=A&param=B`.
3596 #
3597 # For HTTP method kinds which allow a request body, the `body` field
3598 # specifies the mapping. Consider a REST update method on the
3599 # message resource collection:
3600 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003601 #
3602 # service Messaging {
3603 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
3604 # option (google.api.http) = {
3605 # put: "/v1/messages/{message_id}"
3606 # body: "message"
3607 # };
3608 # }
3609 # }
3610 # message UpdateMessageRequest {
3611 # string message_id = 1; // mapped to the URL
3612 # Message message = 2; // mapped to the body
3613 # }
3614 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003615 #
3616 # The following HTTP JSON to RPC mapping is enabled, where the
3617 # representation of the JSON in the request body is determined by
3618 # protos JSON encoding:
3619 #
3620 # HTTP | RPC
3621 # -----|-----
3622 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
3623 #
3624 # The special name `*` can be used in the body mapping to define that
3625 # every field not bound by the path template should be mapped to the
3626 # request body. This enables the following alternative definition of
3627 # the update method:
3628 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003629 # service Messaging {
3630 # rpc UpdateMessage(Message) returns (Message) {
3631 # option (google.api.http) = {
3632 # put: "/v1/messages/{message_id}"
3633 # body: "*"
3634 # };
3635 # }
3636 # }
3637 # message Message {
3638 # string message_id = 1;
3639 # string text = 2;
3640 # }
3641 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003642 #
3643 # The following HTTP JSON to RPC mapping is enabled:
3644 #
3645 # HTTP | RPC
3646 # -----|-----
3647 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")`
3648 #
3649 # Note that when using `*` in the body mapping, it is not possible to
3650 # have HTTP parameters, as all fields not bound by the path end in
3651 # the body. This makes this option more rarely used in practice of
3652 # defining REST APIs. The common usage of `*` is in custom methods
3653 # which don't use the URL at all for transferring data.
3654 #
3655 # It is possible to define multiple HTTP methods for one RPC by using
3656 # the `additional_bindings` option. Example:
3657 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003658 # service Messaging {
3659 # rpc GetMessage(GetMessageRequest) returns (Message) {
3660 # option (google.api.http) = {
3661 # get: "/v1/messages/{message_id}"
3662 # additional_bindings {
3663 # get: "/v1/users/{user_id}/messages/{message_id}"
3664 # }
3665 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003666 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003667 # }
3668 # message GetMessageRequest {
3669 # string message_id = 1;
3670 # string user_id = 2;
3671 # }
3672 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003673 #
3674 # This enables the following two alternative HTTP JSON to RPC
3675 # mappings:
3676 #
3677 # HTTP | RPC
3678 # -----|-----
3679 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
3680 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")`
3681 #
3682 # # Rules for HTTP mapping
3683 #
3684 # The rules for mapping HTTP path, query parameters, and body fields
3685 # to the request message are as follows:
3686 #
3687 # 1. The `body` field specifies either `*` or a field path, or is
3688 # omitted. If omitted, it assumes there is no HTTP body.
3689 # 2. Leaf fields (recursive expansion of nested messages in the
3690 # request) can be classified into three types:
3691 # (a) Matched in the URL template.
3692 # (b) Covered by body (if body is `*`, everything except (a) fields;
3693 # else everything under the body field)
3694 # (c) All other fields.
3695 # 3. URL query parameters found in the HTTP request are mapped to (c) fields.
3696 # 4. Any body sent with an HTTP request can contain only (b) fields.
3697 #
3698 # The syntax of the path template is as follows:
3699 #
3700 # Template = "/" Segments [ Verb ] ;
3701 # Segments = Segment { "/" Segment } ;
3702 # Segment = "*" | "**" | LITERAL | Variable ;
3703 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
3704 # FieldPath = IDENT { "." IDENT } ;
3705 # Verb = ":" LITERAL ;
3706 #
3707 # The syntax `*` matches a single path segment. It follows the semantics of
3708 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
3709 # Expansion.
3710 #
3711 # The syntax `**` matches zero or more path segments. It follows the semantics
3712 # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003713 # Expansion. NOTE: it must be the last segment in the path except the Verb.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003714 #
3715 # The syntax `LITERAL` matches literal text in the URL path.
3716 #
3717 # The syntax `Variable` matches the entire path as specified by its template;
3718 # this nested template must not contain further variables. If a variable
3719 # matches a single path segment, its template may be omitted, e.g. `{var}`
3720 # is equivalent to `{var=*}`.
3721 #
3722 # NOTE: the field paths in variables and in the `body` must not refer to
3723 # repeated fields or map fields.
3724 #
3725 # Use CustomHttpPattern to specify any HTTP method that is not included in the
3726 # `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for
3727 # a given URL path rule. The wild-card rule is useful for services that provide
3728 # content to Web (HTML) clients.
3729 "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
3730 # `*` for mapping all fields not captured by the path pattern to the HTTP
3731 # body. NOTE: the referred field must not be a repeated field and must be
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003732 # present at the top-level of request message type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003733 "get": "A String", # Used for listing and getting information about resources.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003734 "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
3735 # For media support, add instead [][google.bytestream.RestByteStream] as an
3736 # API to your configuration.
3737 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
3738 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003739 "enabled": True or False, # Whether download is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003740 "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
3741 #
3742 # Specify name of the download service if one is used for download.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003743 },
3744 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
3745 # not contain an `additional_bindings` field themselves (that is,
3746 # the nesting may only be one level deep).
3747 # Object with schema name: HttpRule
3748 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003749 "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
3750 # Bytestream, add instead
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003751 # [][google.bytestream.RestByteStream] as an API to your
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003752 # configuration for Bytestream methods.
3753 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
3754 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003755 "enabled": True or False, # Whether upload is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04003756 "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
3757 #
3758 # Specify name of the upload service if one is used for upload.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003759 },
Thomas Coffee2f245372017-03-27 10:39:26 -07003760 "selector": "A String", # Selects methods to which this rule applies.
3761 #
3762 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003763 "responseBody": "A String", # The name of the response field whose value is mapped to the HTTP body of
3764 # response. Other response fields are ignored. This field is optional. When
3765 # not set, the response message will be used as HTTP body of response.
3766 # NOTE: the referred field must be not a repeated field and must be present
3767 # at the top-level of response message type.
3768 "put": "A String", # Used for updating a resource.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07003769 "patch": "A String", # Used for updating a resource.
Thomas Coffee2f245372017-03-27 10:39:26 -07003770 "post": "A String", # Used for creating a resource.
3771 "custom": { # A custom pattern is used for defining custom HTTP verb. # Custom pattern is used for defining custom verbs.
3772 "path": "A String", # The path matched by this custom verb.
3773 "kind": "A String", # The name of this custom HTTP verb.
3774 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003775 "delete": "A String", # Used for deleting a resource.
3776 },
3777 ],
3778 },
3779 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
3780 # of the google.protobuf.Api needs to be provided by the configuration
3781 # author, as the remaining fields will be derived from the IDL during the
3782 # normalization process. It is an error to specify an API interface here
3783 # which cannot be resolved against the associated IDL files.
3784 { # Api is a light-weight descriptor for a protocol buffer service.
3785 "methods": [ # The methods of this api, in unspecified order.
3786 { # Method represents a method of an api.
3787 "name": "A String", # The simple name of this method.
3788 "requestStreaming": True or False, # If true, the request is streamed.
3789 "responseTypeUrl": "A String", # The URL of the output message type.
3790 "requestTypeUrl": "A String", # A URL of the input message type.
3791 "responseStreaming": True or False, # If true, the response is streamed.
3792 "syntax": "A String", # The source syntax of this method.
3793 "options": [ # Any metadata attached to the method.
3794 { # A protocol buffer option, which can be attached to a message, field,
3795 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003796 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3797 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3798 # For custom options, it should be the fully-qualified name. For example,
3799 # `"google.api.http"`.
3800 "value": { # The option's value packed in an Any message. If the value is a primitive,
3801 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3802 # should be used. If the value is an enum, it should be stored as an int32
3803 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003804 "a_key": "", # Properties of the object. Contains field @type with type URL.
3805 },
3806 },
3807 ],
3808 },
3809 ],
3810 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
3811 # message.
3812 # protobuf element, like the file in which it is defined.
3813 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
3814 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
3815 },
3816 "mixins": [ # Included APIs. See Mixin.
3817 { # Declares an API to be included in this API. The including API must
3818 # redeclare all the methods from the included API, but documentation
3819 # and options are inherited as follows:
3820 #
3821 # - If after comment and whitespace stripping, the documentation
3822 # string of the redeclared method is empty, it will be inherited
3823 # from the original method.
3824 #
3825 # - Each annotation belonging to the service config (http,
3826 # visibility) which is not set in the redeclared method will be
3827 # inherited.
3828 #
3829 # - If an http annotation is inherited, the path pattern will be
3830 # modified as follows. Any version prefix will be replaced by the
3831 # version of the including API plus the root path if specified.
3832 #
3833 # Example of a simple mixin:
3834 #
3835 # package google.acl.v1;
3836 # service AccessControl {
3837 # // Get the underlying ACL object.
3838 # rpc GetAcl(GetAclRequest) returns (Acl) {
3839 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
3840 # }
3841 # }
3842 #
3843 # package google.storage.v2;
3844 # service Storage {
3845 # // rpc GetAcl(GetAclRequest) returns (Acl);
3846 #
3847 # // Get a data record.
3848 # rpc GetData(GetDataRequest) returns (Data) {
3849 # option (google.api.http).get = "/v2/{resource=**}";
3850 # }
3851 # }
3852 #
3853 # Example of a mixin configuration:
3854 #
3855 # apis:
3856 # - name: google.storage.v2.Storage
3857 # mixins:
3858 # - name: google.acl.v1.AccessControl
3859 #
3860 # The mixin construct implies that all methods in `AccessControl` are
3861 # also declared with same name and request/response types in
3862 # `Storage`. A documentation generator or annotation processor will
3863 # see the effective `Storage.GetAcl` method after inherting
3864 # documentation and annotations as follows:
3865 #
3866 # service Storage {
3867 # // Get the underlying ACL object.
3868 # rpc GetAcl(GetAclRequest) returns (Acl) {
3869 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
3870 # }
3871 # ...
3872 # }
3873 #
3874 # Note how the version in the path pattern changed from `v1` to `v2`.
3875 #
3876 # If the `root` field in the mixin is specified, it should be a
3877 # relative path under which inherited HTTP paths are placed. Example:
3878 #
3879 # apis:
3880 # - name: google.storage.v2.Storage
3881 # mixins:
3882 # - name: google.acl.v1.AccessControl
3883 # root: acls
3884 #
3885 # This implies the following inherited HTTP annotation:
3886 #
3887 # service Storage {
3888 # // Get the underlying ACL object.
3889 # rpc GetAcl(GetAclRequest) returns (Acl) {
3890 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
3891 # }
3892 # ...
3893 # }
3894 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
3895 # are rooted.
3896 "name": "A String", # The fully qualified name of the API which is included.
3897 },
3898 ],
3899 "syntax": "A String", # The source syntax of the service.
3900 "version": "A String", # A version string for this api. If specified, must have the form
3901 # `major-version.minor-version`, as in `1.10`. If the minor version
3902 # is omitted, it defaults to zero. If the entire version field is
3903 # empty, the major version is derived from the package name, as
3904 # outlined below. If the field is not empty, the version in the
3905 # package name will be verified to be consistent with what is
3906 # provided here.
3907 #
3908 # The versioning schema uses [semantic
3909 # versioning](http://semver.org) where the major version number
3910 # indicates a breaking change and the minor version an additive,
3911 # non-breaking change. Both version numbers are signals to users
3912 # what to expect from different versions, and should be carefully
3913 # chosen based on the product plan.
3914 #
3915 # The major version is also reflected in the package name of the
3916 # API, which must end in `v<major-version>`, as in
3917 # `google.feature.v1`. For major versions 0 and 1, the suffix can
3918 # be omitted. Zero major versions must only be used for
3919 # experimental, none-GA apis.
3920 "options": [ # Any metadata attached to the API.
3921 { # A protocol buffer option, which can be attached to a message, field,
3922 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08003923 "name": "A String", # The option's name. For protobuf built-in options (options defined in
3924 # descriptor.proto), this is the short name. For example, `"map_entry"`.
3925 # For custom options, it should be the fully-qualified name. For example,
3926 # `"google.api.http"`.
3927 "value": { # The option's value packed in an Any message. If the value is a primitive,
3928 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
3929 # should be used. If the value is an enum, it should be stored as an int32
3930 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003931 "a_key": "", # Properties of the object. Contains field @type with type URL.
3932 },
3933 },
3934 ],
3935 "name": "A String", # The fully qualified name of this api, including package name
3936 # followed by the api's simple name.
3937 },
3938 ],
3939 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
3940 # specific protobuf types that can appear in error detail lists of
3941 # error responses.
3942 #
3943 # Example:
3944 #
3945 # custom_error:
3946 # types:
3947 # - google.foo.v1.CustomError
3948 # - google.foo.v1.AnotherError
3949 "rules": [ # The list of custom error rules that apply to individual API messages.
3950 #
3951 # **NOTE:** All service configuration rules follow "last one wins" order.
3952 { # A custom error rule.
3953 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
3954 # objects of this type will be filtered when they appear in error payload.
3955 "selector": "A String", # Selects messages to which this rule applies.
3956 #
3957 # Refer to selector for syntax details.
3958 },
3959 ],
3960 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
3961 "A String",
3962 ],
3963 },
3964 "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
3965 # elements. Restrictions are specified using visibility labels
3966 # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
3967 #
3968 # Users and projects can have access to more than one visibility label. The
3969 # effective visibility for multiple labels is the union of each label's
3970 # elements, plus any unrestricted elements.
3971 #
3972 # If an element and its parents have no restrictions, visibility is
3973 # unconditionally granted.
3974 #
3975 # Example:
3976 #
3977 # visibility:
3978 # rules:
3979 # - selector: google.calendar.Calendar.EnhancedSearch
3980 # restriction: TRUSTED_TESTER
3981 # - selector: google.calendar.Calendar.Delegate
3982 # restriction: GOOGLE_INTERNAL
3983 #
3984 # Here, all methods are publicly visible except for the restricted methods
3985 # EnhancedSearch and Delegate.
3986 "rules": [ # A list of visibility rules that apply to individual API elements.
3987 #
3988 # **NOTE:** All service configuration rules follow "last one wins" order.
3989 { # A visibility rule provides visibility configuration for an individual API
3990 # element.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07003991 "restriction": "A String", # A comma-separated list of visibility labels that apply to the `selector`.
3992 # Any of the listed labels can be used to grant the visibility.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07003993 #
3994 # If a rule has multiple labels, removing one of the labels but not all of
3995 # them can break clients.
3996 #
3997 # Example:
3998 #
3999 # visibility:
4000 # rules:
4001 # - selector: google.calendar.Calendar.EnhancedSearch
4002 # restriction: GOOGLE_INTERNAL, TRUSTED_TESTER
4003 #
4004 # Removing GOOGLE_INTERNAL from this restriction will break clients that
4005 # rely on this method and only had access to it through GOOGLE_INTERNAL.
4006 "selector": "A String", # Selects methods, messages, fields, enums, etc. to which this rule applies.
4007 #
4008 # Refer to selector for syntax details.
4009 },
4010 ],
4011 },
4012 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004013 { # Defines a metric type and its schema. Once a metric descriptor is created,
4014 # deleting or altering it stops data collection and makes the metric type's
4015 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004016 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
4017 # Use sentence case without an ending period, for example "Request count".
Thomas Coffee2f245372017-03-27 10:39:26 -07004018 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004019 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004020 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004021 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004022 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004023 "labels": [ # The set of labels that can be used to describe a specific
4024 # instance of this metric type. For example, the
4025 # `appengine.googleapis.com/http/server/response_latencies` metric
4026 # type has a label for the HTTP response code, `response_code`, so
4027 # you can look at latencies for successful responses or just
4028 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004029 { # A description of a label.
4030 "valueType": "A String", # The type of data that can be assigned to the label.
4031 "description": "A String", # A human-readable description for the label.
4032 "key": "A String", # The label key.
4033 },
4034 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004035 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004036 # URL-encoded. All user-defined custom metric types have the DNS name
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004037 # `custom.googleapis.com`. Metric types should use a natural hierarchical
4038 # grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004039 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004040 # "custom.googleapis.com/invoice/paid/amount"
4041 # "appengine.googleapis.com/http/server/response_latencies"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004042 "unit": "A String", # The unit in which the metric value is reported. It is only applicable
4043 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
4044 # supported units are a subset of [The Unified Code for Units of
4045 # Measure](http://unitsofmeasure.org/ucum.html) standard:
4046 #
4047 # **Basic units (UNIT)**
4048 #
4049 # * `bit` bit
4050 # * `By` byte
4051 # * `s` second
4052 # * `min` minute
4053 # * `h` hour
4054 # * `d` day
4055 #
4056 # **Prefixes (PREFIX)**
4057 #
4058 # * `k` kilo (10**3)
4059 # * `M` mega (10**6)
4060 # * `G` giga (10**9)
4061 # * `T` tera (10**12)
4062 # * `P` peta (10**15)
4063 # * `E` exa (10**18)
4064 # * `Z` zetta (10**21)
4065 # * `Y` yotta (10**24)
4066 # * `m` milli (10**-3)
4067 # * `u` micro (10**-6)
4068 # * `n` nano (10**-9)
4069 # * `p` pico (10**-12)
4070 # * `f` femto (10**-15)
4071 # * `a` atto (10**-18)
4072 # * `z` zepto (10**-21)
4073 # * `y` yocto (10**-24)
4074 # * `Ki` kibi (2**10)
4075 # * `Mi` mebi (2**20)
4076 # * `Gi` gibi (2**30)
4077 # * `Ti` tebi (2**40)
4078 #
4079 # **Grammar**
4080 #
4081 # The grammar includes the dimensionless unit `1`, such as `1/s`.
4082 #
4083 # The grammar also includes these connectors:
4084 #
4085 # * `/` division (as an infix operator, e.g. `1/s`).
4086 # * `.` multiplication (as an infix operator, e.g. `GBy.d`)
4087 #
4088 # The grammar for a unit is as follows:
4089 #
4090 # Expression = Component { "." Component } { "/" Component } ;
4091 #
4092 # Component = [ PREFIX ] UNIT [ Annotation ]
4093 # | Annotation
4094 # | "1"
4095 # ;
4096 #
4097 # Annotation = "{" NAME "}" ;
4098 #
4099 # Notes:
4100 #
4101 # * `Annotation` is just a comment if it follows a `UNIT` and is
4102 # equivalent to `1` if it is used alone. For examples,
4103 # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
4104 # * `NAME` is a sequence of non-blank printable ASCII characters not
4105 # containing '{' or '}'.
Thomas Coffee2f245372017-03-27 10:39:26 -07004106 "name": "A String", # The resource name of the metric descriptor. Depending on the
4107 # implementation, the name typically includes: (1) the parent resource name
4108 # that defines the scope of the metric type or of its data; and (2) the
4109 # metric's URL-encoded type, which also appears in the `type` field of this
4110 # descriptor. For example, following is the resource name of a custom
4111 # metric within the GCP project `my-project-id`:
4112 #
4113 # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004114 },
4115 ],
4116 "enums": [ # A list of all enum types included in this API service. Enums
4117 # referenced directly or indirectly by the `apis` are automatically
4118 # included. Enums which are not referenced but shall be included
4119 # should be listed here by name. Example:
4120 #
4121 # enums:
4122 # - name: google.someapi.v1.SomeEnum
4123 { # Enum type definition.
Thomas Coffee2f245372017-03-27 10:39:26 -07004124 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004125 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
4126 # protobuf element, like the file in which it is defined.
4127 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
4128 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
4129 },
Thomas Coffee2f245372017-03-27 10:39:26 -07004130 "options": [ # Protocol buffer options.
4131 { # A protocol buffer option, which can be attached to a message, field,
4132 # enumeration, etc.
4133 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4134 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4135 # For custom options, it should be the fully-qualified name. For example,
4136 # `"google.api.http"`.
4137 "value": { # The option's value packed in an Any message. If the value is a primitive,
4138 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4139 # should be used. If the value is an enum, it should be stored as an int32
4140 # value using the google.protobuf.Int32Value type.
4141 "a_key": "", # Properties of the object. Contains field @type with type URL.
4142 },
4143 },
4144 ],
4145 "name": "A String", # Enum type name.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07004146 "enumvalue": [ # Enum value definitions.
4147 { # Enum value definition.
4148 "number": 42, # Enum value number.
4149 "name": "A String", # Enum value name.
4150 "options": [ # Protocol buffer options.
4151 { # A protocol buffer option, which can be attached to a message, field,
4152 # enumeration, etc.
4153 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4154 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4155 # For custom options, it should be the fully-qualified name. For example,
4156 # `"google.api.http"`.
4157 "value": { # The option's value packed in an Any message. If the value is a primitive,
4158 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4159 # should be used. If the value is an enum, it should be stored as an int32
4160 # value using the google.protobuf.Int32Value type.
4161 "a_key": "", # Properties of the object. Contains field @type with type URL.
4162 },
4163 },
4164 ],
4165 },
4166 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004167 },
4168 ],
4169 "types": [ # A list of all proto message types included in this API service.
4170 # Types referenced directly or indirectly by the `apis` are
4171 # automatically included. Messages which are not referenced but
4172 # shall be included, such as types used by the `google.protobuf.Any` type,
4173 # should be listed here by name. Example:
4174 #
4175 # types:
4176 # - name: google.protobuf.Int32
4177 { # A protocol buffer message type.
4178 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
4179 "A String",
4180 ],
4181 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004182 "fields": [ # The list of fields.
4183 { # A single field of a message type.
4184 "kind": "A String", # The field type.
4185 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
4186 # types. The first type has index 1; zero means the type is not in the list.
4187 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
4188 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
4189 "name": "A String", # The field name.
4190 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
4191 "jsonName": "A String", # The field JSON name.
4192 "number": 42, # The field number.
4193 "cardinality": "A String", # The field cardinality.
4194 "options": [ # The protocol buffer options.
4195 { # A protocol buffer option, which can be attached to a message, field,
4196 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004197 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4198 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4199 # For custom options, it should be the fully-qualified name. For example,
4200 # `"google.api.http"`.
4201 "value": { # The option's value packed in an Any message. If the value is a primitive,
4202 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4203 # should be used. If the value is an enum, it should be stored as an int32
4204 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004205 "a_key": "", # Properties of the object. Contains field @type with type URL.
4206 },
4207 },
4208 ],
4209 "packed": True or False, # Whether to use alternative packed wire representation.
4210 },
4211 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004212 "syntax": "A String", # The source syntax.
4213 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
4214 # protobuf element, like the file in which it is defined.
4215 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
4216 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
4217 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004218 "options": [ # The protocol buffer options.
4219 { # A protocol buffer option, which can be attached to a message, field,
4220 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004221 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4222 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4223 # For custom options, it should be the fully-qualified name. For example,
4224 # `"google.api.http"`.
4225 "value": { # The option's value packed in an Any message. If the value is a primitive,
4226 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4227 # should be used. If the value is an enum, it should be stored as an int32
4228 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004229 "a_key": "", # Properties of the object. Contains field @type with type URL.
4230 },
4231 },
4232 ],
4233 },
4234 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004235 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004236 #
4237 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004238 # producer and consumer projects. In the example, the `activity_history`
4239 # log is sent to both the producer and consumer projects, whereas the
4240 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004241 #
4242 # monitored_resources:
4243 # - type: library.googleapis.com/branch
4244 # labels:
4245 # - key: /city
4246 # description: The city where the library branch is located in.
4247 # - key: /name
4248 # description: The name of the branch.
4249 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004250 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004251 # labels:
4252 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004253 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004254 # logging:
4255 # producer_destinations:
4256 # - monitored_resource: library.googleapis.com/branch
4257 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004258 # - activity_history
4259 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004260 # consumer_destinations:
4261 # - monitored_resource: library.googleapis.com/branch
4262 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004263 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004264 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
4265 # There can be multiple producer destinations, each one must have a
4266 # different monitored resource type. A log can be used in at most
4267 # one producer destination.
4268 { # Configuration of a specific logging destination (the producer project
4269 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004270 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004271 # Service.monitored_resources section.
4272 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004273 # be defined in the Service.logs section. If the log name is
4274 # not a domain scoped name, it will be automatically prefixed with
4275 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004276 "A String",
4277 ],
4278 },
4279 ],
4280 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
4281 # There can be multiple consumer destinations, each one must have a
4282 # different monitored resource type. A log can be used in at most
4283 # one consumer destination.
4284 { # Configuration of a specific logging destination (the producer project
4285 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004286 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004287 # Service.monitored_resources section.
4288 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07004289 # be defined in the Service.logs section. If the log name is
4290 # not a domain scoped name, it will be automatically prefixed with
4291 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004292 "A String",
4293 ],
4294 },
4295 ],
4296 },
4297 "name": "A String", # The DNS address at which this service is available,
4298 # e.g. `calendar.googleapis.com`.
4299 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
4300 #
4301 # Example:
4302 # <pre><code>documentation:
4303 # summary: >
4304 # The Google Calendar API gives access
4305 # to most calendar features.
4306 # pages:
4307 # - name: Overview
4308 # content: &#40;== include google/foo/overview.md ==&#41;
4309 # - name: Tutorial
4310 # content: &#40;== include google/foo/tutorial.md ==&#41;
4311 # subpages;
4312 # - name: Java
4313 # content: &#40;== include google/foo/tutorial_java.md ==&#41;
4314 # rules:
4315 # - selector: google.calendar.Calendar.Get
4316 # description: >
4317 # ...
4318 # - selector: google.calendar.Calendar.Put
4319 # description: >
4320 # ...
4321 # </code></pre>
4322 # Documentation is provided in markdown syntax. In addition to
4323 # standard markdown features, definition lists, tables and fenced
4324 # code blocks are supported. Section headers can be provided and are
4325 # interpreted relative to the section nesting of the context where
4326 # a documentation fragment is embedded.
4327 #
4328 # Documentation from the IDL is merged with documentation defined
4329 # via the config at normalization time, where documentation provided
4330 # by config rules overrides IDL provided.
4331 #
4332 # A number of constructs specific to the API platform are supported
4333 # in documentation text.
4334 #
4335 # In order to reference a proto element, the following
4336 # notation can be used:
4337 # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
4338 # To override the display text used for the link, this can be used:
4339 # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
4340 # Text can be excluded from doc using the following notation:
4341 # <pre><code>&#40;-- internal comment --&#41;</code></pre>
4342 # Comments can be made conditional using a visibility label. The below
4343 # text will be only rendered if the `BETA` label is available:
4344 # <pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>
4345 # A few directives are available in documentation. Note that
4346 # directives must appear on a single line to be properly
4347 # identified. The `include` directive includes a markdown file from
4348 # an external source:
4349 # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
4350 # The `resource_for` directive marks a message to be the resource of
4351 # a collection in REST view. If it is not specified, tools attempt
4352 # to infer the resource from the operations in a collection:
4353 # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
4354 # The directive `suppress_warning` does not directly affect documentation
4355 # and is documented together with service config validation.
4356 "rules": [ # A list of documentation rules that apply to individual API elements.
4357 #
4358 # **NOTE:** All service configuration rules follow "last one wins" order.
4359 { # A documentation rule provides information about individual API elements.
4360 "description": "A String", # Description of the selected API(s).
4361 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if an
4362 # element is marked as `deprecated`.
4363 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
4364 # qualified name of the element which may end in "*", indicating a wildcard.
4365 # Wildcards are only allowed at the end and for a whole component of the
4366 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To
4367 # specify a default for all applicable elements, the whole pattern "*"
4368 # is used.
4369 },
4370 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004371 "documentationRootUrl": "A String", # The URL to the root of documentation.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07004372 "overview": "A String", # Declares a single overview page. For example:
4373 # <pre><code>documentation:
4374 # summary: ...
4375 # overview: &#40;== include overview.md ==&#41;
4376 # </code></pre>
4377 # This is a shortcut for the following declaration (using pages style):
4378 # <pre><code>documentation:
4379 # summary: ...
4380 # pages:
4381 # - name: Overview
4382 # content: &#40;== include overview.md ==&#41;
4383 # </code></pre>
4384 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004385 "pages": [ # The top level pages for the documentation set.
4386 { # Represents a documentation page. A page can contain subpages to represent
4387 # nested documentation set structure.
4388 "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path} ==&#41;</code>
4389 # to include content from a Markdown file.
4390 "subpages": [ # Subpages of this page. The order of subpages specified here will be
4391 # honored in the generated docset.
4392 # Object with schema name: Page
4393 ],
4394 "name": "A String", # The name of the page. It will be used as an identity of the page to
4395 # generate URI of the page, text of the link to this page in navigation,
4396 # etc. The full page name (start from the root page name to this page
4397 # concatenated with `.`) can be used as reference to the page in your
4398 # documentation. For example:
4399 # <pre><code>pages:
4400 # - name: Tutorial
4401 # content: &#40;== include tutorial.md ==&#41;
4402 # subpages:
4403 # - name: Java
4404 # content: &#40;== include tutorial_java.md ==&#41;
4405 # </code></pre>
4406 # You can reference `Java` page using Markdown reference link syntax:
4407 # `Java`.
4408 },
4409 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07004410 "summary": "A String", # A short summary of what the service does. Can only be provided by
4411 # plain text.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004412 },
4413 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
4414 "sourceFiles": [ # All files used during config generation.
4415 {
4416 "a_key": "", # Properties of the object. Contains field @type with type URL.
4417 },
4418 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004419 },
4420 "systemTypes": [ # A list of all proto message types included in this API service.
4421 # It serves similar purpose as [google.api.Service.types], except that
4422 # these types are not needed by user-defined APIs. Therefore, they will not
4423 # show up in the generated discovery doc. This field should only be used
4424 # to define system APIs in ESF.
4425 { # A protocol buffer message type.
4426 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
4427 "A String",
4428 ],
4429 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004430 "fields": [ # The list of fields.
4431 { # A single field of a message type.
4432 "kind": "A String", # The field type.
4433 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
4434 # types. The first type has index 1; zero means the type is not in the list.
4435 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
4436 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
4437 "name": "A String", # The field name.
4438 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
4439 "jsonName": "A String", # The field JSON name.
4440 "number": 42, # The field number.
4441 "cardinality": "A String", # The field cardinality.
4442 "options": [ # The protocol buffer options.
4443 { # A protocol buffer option, which can be attached to a message, field,
4444 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004445 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4446 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4447 # For custom options, it should be the fully-qualified name. For example,
4448 # `"google.api.http"`.
4449 "value": { # The option's value packed in an Any message. If the value is a primitive,
4450 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4451 # should be used. If the value is an enum, it should be stored as an int32
4452 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004453 "a_key": "", # Properties of the object. Contains field @type with type URL.
4454 },
4455 },
4456 ],
4457 "packed": True or False, # Whether to use alternative packed wire representation.
4458 },
4459 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004460 "syntax": "A String", # The source syntax.
4461 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
4462 # protobuf element, like the file in which it is defined.
4463 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
4464 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
4465 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004466 "options": [ # The protocol buffer options.
4467 { # A protocol buffer option, which can be attached to a message, field,
4468 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004469 "name": "A String", # The option's name. For protobuf built-in options (options defined in
4470 # descriptor.proto), this is the short name. For example, `"map_entry"`.
4471 # For custom options, it should be the fully-qualified name. For example,
4472 # `"google.api.http"`.
4473 "value": { # The option's value packed in an Any message. If the value is a primitive,
4474 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
4475 # should be used. If the value is an enum, it should be stored as an int32
4476 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004477 "a_key": "", # Properties of the object. Contains field @type with type URL.
4478 },
4479 },
4480 ],
4481 },
4482 ],
4483 "context": { # `Context` defines which contexts an API requests. # Context configuration.
4484 #
4485 # Example:
4486 #
4487 # context:
4488 # rules:
4489 # - selector: "*"
4490 # requested:
4491 # - google.rpc.context.ProjectContext
4492 # - google.rpc.context.OriginContext
4493 #
4494 # The above specifies that all methods in the API request
4495 # `google.rpc.context.ProjectContext` and
4496 # `google.rpc.context.OriginContext`.
4497 #
4498 # Available context types are defined in package
4499 # `google.rpc.context`.
4500 "rules": [ # A list of RPC context rules that apply to individual API methods.
4501 #
4502 # **NOTE:** All service configuration rules follow "last one wins" order.
4503 { # A context rule provides information about the context for an individual API
4504 # element.
4505 "provided": [ # A list of full type names of provided contexts.
4506 "A String",
4507 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07004508 "requested": [ # A list of full type names of requested contexts.
4509 "A String",
4510 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07004511 "selector": "A String", # Selects the methods to which this rule applies.
4512 #
4513 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004514 },
4515 ],
4516 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004517 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
4518 # with the same name as the service is automatically generated to service all
4519 # defined APIs.
4520 { # `Endpoint` describes a network endpoint that serves a set of APIs.
4521 # A service may expose any number of endpoints, and all endpoints share the
4522 # same service configuration, such as quota configuration and monitoring
4523 # configuration.
4524 #
4525 # Example service configuration:
4526 #
4527 # name: library-example.googleapis.com
4528 # endpoints:
4529 # # Below entry makes 'google.example.library.v1.Library'
4530 # # API be served from endpoint address library-example.googleapis.com.
4531 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
4532 # # it to decide whether the subsequent cross-origin request is
4533 # # allowed to proceed.
4534 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004535 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004536 "allowCors": True or False, # Allowing
4537 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
4538 # cross-domain traffic, would allow the backends served from this endpoint to
4539 # receive and respond to HTTP OPTIONS requests. The response will be used by
4540 # the browser to determine whether the subsequent cross-origin request is
4541 # allowed to proceed.
Thomas Coffee2f245372017-03-27 10:39:26 -07004542 "apis": [ # The list of APIs served by this endpoint.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004543 "A String",
4544 ],
4545 "features": [ # The list of features enabled on this endpoint.
4546 "A String",
4547 ],
4548 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07004549 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
4550 # please specify multiple google.api.Endpoint for each of the intented
4551 # alias.
4552 #
4553 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004554 "A String",
4555 ],
4556 },
4557 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004558 "experimental": { # Experimental service configuration. These configuration options can # Experimental configuration.
4559 # only be used by whitelisted users.
4560 "authorization": { # Configuration of authorization. # Authorization configuration.
4561 #
4562 # This section determines the authorization provider, if unspecified, then no
4563 # authorization check will be done.
4564 #
4565 # Example:
4566 #
4567 # experimental:
4568 # authorization:
4569 # provider: firebaserules.googleapis.com
4570 "provider": "A String", # The name of the authorization provider, such as
4571 # firebaserules.googleapis.com.
4572 },
4573 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004574 }</pre>
4575</div>
4576
4577<div class="method">
Thomas Coffee2f245372017-03-27 10:39:26 -07004578 <code class="details" id="list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004579 <pre>Lists the history of the service configuration for a managed service,
4580from the newest to the oldest.
4581
4582Args:
4583 serviceName: string, The name of the service. See the [overview](/service-management/overview)
4584for naming requirements. For example: `example.googleapis.com`. (required)
4585 pageSize: integer, The max number of items to include in the response list.
4586 pageToken: string, The token of the page to retrieve.
4587 x__xgafv: string, V1 error format.
4588 Allowed values
4589 1 - v1 error format
4590 2 - v2 error format
4591
4592Returns:
4593 An object of the form:
4594
4595 { # Response message for ListServiceConfigs method.
4596 "nextPageToken": "A String", # The token of the next page of results.
4597 "serviceConfigs": [ # The list of service configuration resources.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004598 { # `Service` is the root object of Google service configuration schema. It
4599 # describes basic information about a service, such as the name and the
4600 # title, and delegates other aspects to sub-sections. Each sub-section is
4601 # either a proto message or a repeated proto message that configures a
4602 # specific aspect, such as auth. See each proto message definition for details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004603 #
4604 # Example:
4605 #
4606 # type: google.api.Service
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004607 # config_version: 3
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004608 # name: calendar.googleapis.com
4609 # title: Google Calendar API
4610 # apis:
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004611 # - name: google.calendar.v3.Calendar
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004612 # authentication:
4613 # providers:
4614 # - id: google_calendar_auth
4615 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
4616 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004617 # rules:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004618 # - selector: "*"
4619 # requirements:
4620 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004621 "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane.
4622 # service controller handles features like abuse, quota, billing, logging,
4623 # monitoring, etc.
4624 "environment": "A String", # The service control environment to use. If empty, no control plane
4625 # feature (like quota and billing) will be enabled.
4626 },
4627 "monitoredResources": [ # Defines the monitored resources used by this service. This is required
4628 # by the Service.monitoring and Service.logging configurations.
4629 { # An object that describes the schema of a MonitoredResource object using a
4630 # type name and a set of labels. For example, the monitored resource
4631 # descriptor for Google Compute Engine VM instances has a type of
4632 # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
4633 # `"zone"` to identify particular VM instances.
4634 #
4635 # Different APIs can support different monitored resource types. APIs generally
4636 # provide a `list` method that returns the monitored resource descriptors used
4637 # by the API.
Thomas Coffee2f245372017-03-27 10:39:26 -07004638 "type": "A String", # Required. The monitored resource type. For example, the type
4639 # `"cloudsql_database"` represents databases in Google Cloud SQL.
4640 # The maximum length of this value is 256 characters.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004641 "labels": [ # Required. A set of labels used to describe instances of this monitored
4642 # resource type. For example, an individual Google Cloud SQL database is
4643 # identified by values for the labels `"database_id"` and `"zone"`.
4644 { # A description of a label.
4645 "valueType": "A String", # The type of data that can be assigned to the label.
4646 "description": "A String", # A human-readable description for the label.
4647 "key": "A String", # The label key.
4648 },
4649 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07004650 "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
4651 # displayed in user interfaces. It should be a Title Cased Noun Phrase,
4652 # without any article or other determiners. For example,
4653 # `"Google Cloud SQL Database"`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004654 "name": "A String", # Optional. The resource name of the monitored resource descriptor:
4655 # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
4656 # {type} is the value of the `type` field in this object and
4657 # {project_id} is a project ID that provides API-specific context for
4658 # accessing the type. APIs that do not use project information can use the
4659 # resource name format `"monitoredResourceDescriptors/{type}"`.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004660 "description": "A String", # Optional. A detailed description of the monitored resource type that might
4661 # be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004662 },
4663 ],
4664 "logs": [ # Defines the logs used by this service.
4665 { # A description of a log type. Example in YAML format:
4666 #
4667 # - name: library.googleapis.com/activity_history
4668 # description: The history of borrowing and returning library items.
4669 # display_name: Activity
4670 # labels:
4671 # - key: /customer_id
4672 # description: Identifier of a library customer
4673 "labels": [ # The set of labels that are available to describe a specific log entry.
4674 # Runtime requests that contain labels not specified here are
4675 # considered invalid.
4676 { # A description of a label.
4677 "valueType": "A String", # The type of data that can be assigned to the label.
4678 "description": "A String", # A human-readable description for the label.
4679 "key": "A String", # The label key.
4680 },
4681 ],
4682 "displayName": "A String", # The human-readable name for this log. This information appears on
4683 # the user interface and should be concise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004684 "name": "A String", # The name of the log. It must be less than 512 characters long and can
4685 # include the following characters: upper- and lower-case alphanumeric
4686 # characters [A-Za-z0-9], and punctuation characters including
4687 # slash, underscore, hyphen, period [/_-.].
Thomas Coffee2f245372017-03-27 10:39:26 -07004688 "description": "A String", # A human-readable description of this log. This information appears in
4689 # the documentation and can contain details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004690 },
4691 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07004692 "systemParameters": { # ### System parameter configuration # System parameter configuration.
4693 #
4694 # A system parameter is a special kind of parameter defined by the API
4695 # system, not by an individual API. It is typically mapped to an HTTP header
4696 # and/or a URL query parameter. This configuration specifies which methods
4697 # change the names of the system parameters.
4698 "rules": [ # Define system parameters.
4699 #
4700 # The parameters defined here will override the default parameters
4701 # implemented by the system. If this field is missing from the service
4702 # config, default system parameters will be used. Default system parameters
4703 # and names is implementation-dependent.
4704 #
4705 # Example: define api key for all methods
4706 #
4707 # system_parameters
4708 # rules:
4709 # - selector: "*"
4710 # parameters:
4711 # - name: api_key
4712 # url_query_parameter: api_key
4713 #
4714 #
4715 # Example: define 2 api key names for a specific method.
4716 #
4717 # system_parameters
4718 # rules:
4719 # - selector: "/ListShelves"
4720 # parameters:
4721 # - name: api_key
4722 # http_header: Api-Key1
4723 # - name: api_key
4724 # http_header: Api-Key2
4725 #
4726 # **NOTE:** All service configuration rules follow "last one wins" order.
4727 { # Define a system parameter rule mapping system parameter definitions to
4728 # methods.
4729 "parameters": [ # Define parameters. Multiple names may be defined for a parameter.
4730 # For a given method call, only one of them should be used. If multiple
4731 # names are used the behavior is implementation-dependent.
4732 # If none of the specified names are present the behavior is
4733 # parameter-dependent.
4734 { # Define a parameter's name and location. The parameter may be passed as either
4735 # an HTTP header or a URL query parameter, and if both are passed the behavior
4736 # is implementation-dependent.
4737 "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
4738 # sensitive.
4739 "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
4740 # insensitive.
4741 "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
4742 },
4743 ],
4744 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
4745 # methods in all APIs.
4746 #
4747 # Refer to selector for syntax details.
4748 },
4749 ],
4750 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004751 "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration.
4752 "rules": [ # A list of API backend rules that apply to individual API methods.
4753 #
4754 # **NOTE:** All service configuration rules follow "last one wins" order.
4755 { # A backend rule provides configuration for an individual API element.
4756 "selector": "A String", # Selects the methods to which this rule applies.
4757 #
4758 # Refer to selector for syntax details.
4759 "deadline": 3.14, # The number of seconds to wait for a response from a request. The
4760 # default depends on the deployment context.
4761 "address": "A String", # The address of the API backend.
4762 },
4763 ],
4764 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07004765 "monitoring": { # Monitoring configuration of the service. # Monitoring configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004766 #
4767 # The example below shows how to configure monitored resources and metrics
4768 # for monitoring. In the example, a monitored resource and two metrics are
4769 # defined. The `library.googleapis.com/book/returned_count` metric is sent
4770 # to both producer and consumer projects, whereas the
4771 # `library.googleapis.com/book/overdue_count` metric is only sent to the
4772 # consumer project.
4773 #
4774 # monitored_resources:
4775 # - type: library.googleapis.com/branch
4776 # labels:
4777 # - key: /city
4778 # description: The city where the library branch is located in.
4779 # - key: /name
4780 # description: The name of the branch.
4781 # metrics:
4782 # - name: library.googleapis.com/book/returned_count
4783 # metric_kind: DELTA
4784 # value_type: INT64
4785 # labels:
4786 # - key: /customer_id
4787 # - name: library.googleapis.com/book/overdue_count
4788 # metric_kind: GAUGE
4789 # value_type: INT64
4790 # labels:
4791 # - key: /customer_id
4792 # monitoring:
4793 # producer_destinations:
4794 # - monitored_resource: library.googleapis.com/branch
4795 # metrics:
4796 # - library.googleapis.com/book/returned_count
4797 # consumer_destinations:
4798 # - monitored_resource: library.googleapis.com/branch
4799 # metrics:
4800 # - library.googleapis.com/book/returned_count
4801 # - library.googleapis.com/book/overdue_count
4802 "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project.
4803 # There can be multiple producer destinations, each one must have a
4804 # different monitored resource type. A metric can be used in at most
4805 # one producer destination.
4806 { # Configuration of a specific monitoring destination (the producer project
4807 # or the consumer project).
4808 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
4809 # Service.monitored_resources section.
4810 "metrics": [ # Names of the metrics to report to this monitoring destination.
4811 # Each name must be defined in Service.metrics section.
4812 "A String",
4813 ],
4814 },
4815 ],
4816 "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project.
4817 # There can be multiple consumer destinations, each one must have a
4818 # different monitored resource type. A metric can be used in at most
4819 # one consumer destination.
4820 { # Configuration of a specific monitoring destination (the producer project
4821 # or the consumer project).
4822 "monitoredResource": "A String", # The monitored resource type. The type must be defined in
4823 # Service.monitored_resources section.
4824 "metrics": [ # Names of the metrics to report to this monitoring destination.
4825 # Each name must be defined in Service.metrics section.
4826 "A String",
4827 ],
4828 },
4829 ],
4830 },
Thomas Coffee2f245372017-03-27 10:39:26 -07004831 "title": "A String", # The product title associated with this service.
4832 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
4833 # by the client for tracking purpose. If empty, the server may choose to
4834 # generate one instead.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004835 "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
4836 #
4837 # Example for an API targeted for external use:
4838 #
4839 # name: calendar.googleapis.com
4840 # authentication:
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004841 # providers:
4842 # - id: google_calendar_auth
4843 # jwks_uri: https://www.googleapis.com/oauth2/v1/certs
4844 # issuer: https://securetoken.google.com
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004845 # rules:
4846 # - selector: "*"
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004847 # requirements:
4848 # provider_id: google_calendar_auth
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004849 "rules": [ # A list of authentication rules that apply to individual API methods.
4850 #
4851 # **NOTE:** All service configuration rules follow "last one wins" order.
4852 { # Authentication rules for the service.
4853 #
4854 # By default, if a method has any authentication requirements, every request
4855 # must include a valid credential matching one of the requirements.
4856 # It's an error to include more than one kind of credential in a single
4857 # request.
4858 #
4859 # If a method doesn't have any auth requirements, request credentials will be
4860 # ignored.
4861 "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
4862 # there are scopes defined for "Read-only access to Google Calendar" and
4863 # "Access to Cloud Platform". Users can consent to a scope for an application,
4864 # giving it permission to access that data on their behalf.
4865 #
4866 # OAuth scope specifications should be fairly coarse grained; a user will need
4867 # to see and understand the text description of what your scope means.
4868 #
4869 # In most cases: use one or at most two OAuth scopes for an entire family of
4870 # products. If your product has multiple APIs, you should probably be sharing
4871 # the OAuth scope across all of those APIs.
4872 #
4873 # When you need finer grained OAuth consent screens: talk with your product
4874 # management about how developers will use them in practice.
4875 #
4876 # Please note that even though each of the canonical scopes is enough for a
4877 # request to be accepted and passed to the backend, a request can still fail
4878 # due to the backend requiring additional scopes or permissions.
4879 "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
4880 # OAuth token containing any of these scopes will be accepted.
4881 #
4882 # Example:
4883 #
4884 # canonical_scopes: https://www.googleapis.com/auth/calendar,
4885 # https://www.googleapis.com/auth/calendar.read
4886 },
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004887 "allowWithoutCredential": True or False, # Whether to allow requests without a credential. The credential can be
4888 # an OAuth token, Google cookies (first-party auth) or EndUserCreds.
4889 #
4890 # For requests without credentials, if the service control environment is
4891 # specified, each incoming request **must** be associated with a service
4892 # consumer. This can be done by passing an API key that belongs to a consumer
4893 # project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004894 "requirements": [ # Requirements for additional authentication providers.
4895 { # User-defined authentication requirements, including support for
4896 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
4897 "providerId": "A String", # id from authentication provider.
4898 #
4899 # Example:
4900 #
4901 # provider_id: bookstore_auth
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004902 "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
4903 # implemented and accepted in all the runtime components.
4904 #
4905 # The list of JWT
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004906 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
4907 # that are allowed to access. A JWT containing any of these audiences will
4908 # be accepted. When this setting is absent, only JWTs with audience
4909 # "https://Service_name/API_name"
4910 # will be accepted. For example, if no audiences are in the setting,
4911 # LibraryService API will only accept JWTs with the following audience
4912 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
4913 #
4914 # Example:
4915 #
4916 # audiences: bookstore_android.apps.googleusercontent.com,
4917 # bookstore_web.apps.googleusercontent.com
4918 },
4919 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004920 "selector": "A String", # Selects the methods to which this rule applies.
4921 #
4922 # Refer to selector for syntax details.
4923 },
4924 ],
4925 "providers": [ # Defines a set of authentication providers that a service supports.
4926 { # Configuration for an anthentication provider, including support for
4927 # [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004928 "audiences": "A String", # The list of JWT
4929 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
4930 # that are allowed to access. A JWT containing any of these audiences will
4931 # be accepted. When this setting is absent, only JWTs with audience
4932 # "https://Service_name/API_name"
4933 # will be accepted. For example, if no audiences are in the setting,
4934 # LibraryService API will only accept JWTs with the following audience
4935 # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
4936 #
4937 # Example:
4938 #
4939 # audiences: bookstore_android.apps.googleusercontent.com,
4940 # bookstore_web.apps.googleusercontent.com
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04004941 "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
4942 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
4943 # Optional if the key set document:
4944 # - can be retrieved from
4945 # [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
4946 # of the issuer.
4947 # - can be inferred from the email domain of the issuer (e.g. a Google service account).
4948 #
4949 # Example: https://www.googleapis.com/oauth2/v1/certs
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004950 "id": "A String", # The unique identifier of the auth provider. It will be referred to by
4951 # `AuthRequirement.provider_id`.
4952 #
4953 # Example: "bookstore_auth".
4954 "issuer": "A String", # Identifies the principal that issued the JWT. See
4955 # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
4956 # Usually a URL or an email address.
4957 #
4958 # Example: https://securetoken.google.com
4959 # Example: 1234567-compute@developer.gserviceaccount.com
4960 },
4961 ],
4962 },
4963 "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
4964 "rules": [ # A list of usage rules that apply to individual API methods.
4965 #
4966 # **NOTE:** All service configuration rules follow "last one wins" order.
4967 { # Usage configuration rules for the service.
4968 #
4969 # NOTE: Under development.
4970 #
4971 #
4972 # Use this rule to configure unregistered calls for the service. Unregistered
4973 # calls are calls that do not contain consumer project identity.
4974 # (Example: calls that do not contain an API key).
4975 # By default, API methods do not allow unregistered calls, and each method call
4976 # must be identified by a consumer project identity. Use this rule to
4977 # allow/disallow unregistered calls.
4978 #
4979 # Example of an API that wants to allow unregistered calls for entire service.
4980 #
4981 # usage:
4982 # rules:
4983 # - selector: "*"
4984 # allow_unregistered_calls: true
4985 #
4986 # Example of a method that wants to allow unregistered calls.
4987 #
4988 # usage:
4989 # rules:
4990 # - selector: "google.example.library.v1.LibraryService.CreateBook"
4991 # allow_unregistered_calls: true
4992 "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
4993 # methods in all APIs.
4994 #
4995 # Refer to selector for syntax details.
Thomas Coffee2f245372017-03-27 10:39:26 -07004996 "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07004997 },
4998 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08004999 "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
5000 # service producer.
5001 #
5002 # Google Service Management currently only supports
5003 # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
5004 # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
5005 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
5006 # documented in https://cloud.google.com/pubsub/docs/overview.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005007 "requirements": [ # Requirements that must be satisfied before a consumer project can use the
5008 # service. Each requirement is of the form <service.name>/<requirement-id>;
5009 # for example 'serviceusage.googleapis.com/billing-enabled'.
5010 "A String",
5011 ],
5012 },
5013 "configVersion": 42, # The version of the service configuration. The config version may
5014 # influence interpretation of the configuration, for example, to
5015 # determine defaults. This is documented together with applicable
5016 # options. The current default for the config version itself is `3`.
5017 "producerProjectId": "A String", # The id of the Google developer project that owns the service.
5018 # Members of this project can manage the service configuration,
5019 # manage consumption of the service, etc.
5020 "http": { # Defines the HTTP configuration for a service. It contains a list of # HTTP configuration.
5021 # HttpRule, each specifying the mapping of an RPC method
5022 # to one or more HTTP REST API methods.
5023 "rules": [ # A list of HTTP configuration rules that apply to individual API methods.
5024 #
5025 # **NOTE:** All service configuration rules follow "last one wins" order.
5026 { # `HttpRule` defines the mapping of an RPC method to one or more HTTP
5027 # REST APIs. The mapping determines what portions of the request
5028 # message are populated from the path, query parameters, or body of
5029 # the HTTP request. The mapping is typically specified as an
5030 # `google.api.http` annotation, see "google/api/annotations.proto"
5031 # for details.
5032 #
5033 # The mapping consists of a field specifying the path template and
5034 # method kind. The path template can refer to fields in the request
5035 # message, as in the example below which describes a REST GET
5036 # operation on a resource collection of messages:
5037 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005038 #
5039 # service Messaging {
5040 # rpc GetMessage(GetMessageRequest) returns (Message) {
5041 # option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
5042 # }
5043 # }
5044 # message GetMessageRequest {
5045 # message SubMessage {
5046 # string subfield = 1;
5047 # }
5048 # string message_id = 1; // mapped to the URL
5049 # SubMessage sub = 2; // `sub.subfield` is url-mapped
5050 # }
5051 # message Message {
5052 # string text = 1; // content of the resource
5053 # }
5054 #
5055 # The same http annotation can alternatively be expressed inside the
5056 # `GRPC API Configuration` YAML file.
5057 #
5058 # http:
5059 # rules:
5060 # - selector: <proto_package_name>.Messaging.GetMessage
5061 # get: /v1/messages/{message_id}/{sub.subfield}
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005062 #
5063 # This definition enables an automatic, bidrectional mapping of HTTP
5064 # JSON to RPC. Example:
5065 #
5066 # HTTP | RPC
5067 # -----|-----
5068 # `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))`
5069 #
5070 # In general, not only fields but also field paths can be referenced
5071 # from a path pattern. Fields mapped to the path pattern cannot be
5072 # repeated and must have a primitive (non-message) type.
5073 #
5074 # Any fields in the request message which are not bound by the path
5075 # pattern automatically become (optional) HTTP query
5076 # parameters. Assume the following definition of the request message:
5077 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005078 #
5079 # message GetMessageRequest {
5080 # message SubMessage {
5081 # string subfield = 1;
5082 # }
5083 # string message_id = 1; // mapped to the URL
5084 # int64 revision = 2; // becomes a parameter
5085 # SubMessage sub = 3; // `sub.subfield` becomes a parameter
5086 # }
5087 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005088 #
5089 # This enables a HTTP JSON to RPC mapping as below:
5090 #
5091 # HTTP | RPC
5092 # -----|-----
5093 # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))`
5094 #
5095 # Note that fields which are mapped to HTTP parameters must have a
5096 # primitive type or a repeated primitive type. Message types are not
5097 # allowed. In the case of a repeated type, the parameter can be
5098 # repeated in the URL, as in `...?param=A&param=B`.
5099 #
5100 # For HTTP method kinds which allow a request body, the `body` field
5101 # specifies the mapping. Consider a REST update method on the
5102 # message resource collection:
5103 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005104 #
5105 # service Messaging {
5106 # rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
5107 # option (google.api.http) = {
5108 # put: "/v1/messages/{message_id}"
5109 # body: "message"
5110 # };
5111 # }
5112 # }
5113 # message UpdateMessageRequest {
5114 # string message_id = 1; // mapped to the URL
5115 # Message message = 2; // mapped to the body
5116 # }
5117 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005118 #
5119 # The following HTTP JSON to RPC mapping is enabled, where the
5120 # representation of the JSON in the request body is determined by
5121 # protos JSON encoding:
5122 #
5123 # HTTP | RPC
5124 # -----|-----
5125 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
5126 #
5127 # The special name `*` can be used in the body mapping to define that
5128 # every field not bound by the path template should be mapped to the
5129 # request body. This enables the following alternative definition of
5130 # the update method:
5131 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005132 # service Messaging {
5133 # rpc UpdateMessage(Message) returns (Message) {
5134 # option (google.api.http) = {
5135 # put: "/v1/messages/{message_id}"
5136 # body: "*"
5137 # };
5138 # }
5139 # }
5140 # message Message {
5141 # string message_id = 1;
5142 # string text = 2;
5143 # }
5144 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005145 #
5146 # The following HTTP JSON to RPC mapping is enabled:
5147 #
5148 # HTTP | RPC
5149 # -----|-----
5150 # `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")`
5151 #
5152 # Note that when using `*` in the body mapping, it is not possible to
5153 # have HTTP parameters, as all fields not bound by the path end in
5154 # the body. This makes this option more rarely used in practice of
5155 # defining REST APIs. The common usage of `*` is in custom methods
5156 # which don't use the URL at all for transferring data.
5157 #
5158 # It is possible to define multiple HTTP methods for one RPC by using
5159 # the `additional_bindings` option. Example:
5160 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005161 # service Messaging {
5162 # rpc GetMessage(GetMessageRequest) returns (Message) {
5163 # option (google.api.http) = {
5164 # get: "/v1/messages/{message_id}"
5165 # additional_bindings {
5166 # get: "/v1/users/{user_id}/messages/{message_id}"
5167 # }
5168 # };
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005169 # }
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005170 # }
5171 # message GetMessageRequest {
5172 # string message_id = 1;
5173 # string user_id = 2;
5174 # }
5175 #
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005176 #
5177 # This enables the following two alternative HTTP JSON to RPC
5178 # mappings:
5179 #
5180 # HTTP | RPC
5181 # -----|-----
5182 # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
5183 # `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")`
5184 #
5185 # # Rules for HTTP mapping
5186 #
5187 # The rules for mapping HTTP path, query parameters, and body fields
5188 # to the request message are as follows:
5189 #
5190 # 1. The `body` field specifies either `*` or a field path, or is
5191 # omitted. If omitted, it assumes there is no HTTP body.
5192 # 2. Leaf fields (recursive expansion of nested messages in the
5193 # request) can be classified into three types:
5194 # (a) Matched in the URL template.
5195 # (b) Covered by body (if body is `*`, everything except (a) fields;
5196 # else everything under the body field)
5197 # (c) All other fields.
5198 # 3. URL query parameters found in the HTTP request are mapped to (c) fields.
5199 # 4. Any body sent with an HTTP request can contain only (b) fields.
5200 #
5201 # The syntax of the path template is as follows:
5202 #
5203 # Template = "/" Segments [ Verb ] ;
5204 # Segments = Segment { "/" Segment } ;
5205 # Segment = "*" | "**" | LITERAL | Variable ;
5206 # Variable = "{" FieldPath [ "=" Segments ] "}" ;
5207 # FieldPath = IDENT { "." IDENT } ;
5208 # Verb = ":" LITERAL ;
5209 #
5210 # The syntax `*` matches a single path segment. It follows the semantics of
5211 # [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
5212 # Expansion.
5213 #
5214 # The syntax `**` matches zero or more path segments. It follows the semantics
5215 # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005216 # Expansion. NOTE: it must be the last segment in the path except the Verb.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005217 #
5218 # The syntax `LITERAL` matches literal text in the URL path.
5219 #
5220 # The syntax `Variable` matches the entire path as specified by its template;
5221 # this nested template must not contain further variables. If a variable
5222 # matches a single path segment, its template may be omitted, e.g. `{var}`
5223 # is equivalent to `{var=*}`.
5224 #
5225 # NOTE: the field paths in variables and in the `body` must not refer to
5226 # repeated fields or map fields.
5227 #
5228 # Use CustomHttpPattern to specify any HTTP method that is not included in the
5229 # `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for
5230 # a given URL path rule. The wild-card rule is useful for services that provide
5231 # content to Web (HTML) clients.
5232 "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
5233 # `*` for mapping all fields not captured by the path pattern to the HTTP
5234 # body. NOTE: the referred field must not be a repeated field and must be
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005235 # present at the top-level of request message type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005236 "get": "A String", # Used for listing and getting information about resources.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005237 "mediaDownload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for bytestream methods.
5238 # For media support, add instead [][google.bytestream.RestByteStream] as an
5239 # API to your configuration.
5240 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
5241 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005242 "enabled": True or False, # Whether download is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005243 "downloadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
5244 #
5245 # Specify name of the download service if one is used for download.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005246 },
5247 "additionalBindings": [ # Additional HTTP bindings for the selector. Nested bindings must
5248 # not contain an `additional_bindings` field themselves (that is,
5249 # the nesting may only be one level deep).
5250 # Object with schema name: HttpRule
5251 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005252 "mediaUpload": { # Use this only for Scotty Requests. Do not use this for media support using # Use this only for Scotty Requests. Do not use this for media support using
5253 # Bytestream, add instead
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005254 # [][google.bytestream.RestByteStream] as an API to your
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005255 # configuration for Bytestream methods.
5256 # Bytestream, add instead [][google.bytestream.RestByteStream] as an API to
5257 # your configuration for Bytestream methods.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005258 "enabled": True or False, # Whether upload is enabled.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005259 "uploadService": "A String", # DO NOT USE THIS FIELD UNTIL THIS WARNING IS REMOVED.
5260 #
5261 # Specify name of the upload service if one is used for upload.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005262 },
Thomas Coffee2f245372017-03-27 10:39:26 -07005263 "selector": "A String", # Selects methods to which this rule applies.
5264 #
5265 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005266 "responseBody": "A String", # The name of the response field whose value is mapped to the HTTP body of
5267 # response. Other response fields are ignored. This field is optional. When
5268 # not set, the response message will be used as HTTP body of response.
5269 # NOTE: the referred field must be not a repeated field and must be present
5270 # at the top-level of response message type.
5271 "put": "A String", # Used for updating a resource.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005272 "patch": "A String", # Used for updating a resource.
Thomas Coffee2f245372017-03-27 10:39:26 -07005273 "post": "A String", # Used for creating a resource.
5274 "custom": { # A custom pattern is used for defining custom HTTP verb. # Custom pattern is used for defining custom verbs.
5275 "path": "A String", # The path matched by this custom verb.
5276 "kind": "A String", # The name of this custom HTTP verb.
5277 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005278 "delete": "A String", # Used for deleting a resource.
5279 },
5280 ],
5281 },
5282 "apis": [ # A list of API interfaces exported by this service. Only the `name` field
5283 # of the google.protobuf.Api needs to be provided by the configuration
5284 # author, as the remaining fields will be derived from the IDL during the
5285 # normalization process. It is an error to specify an API interface here
5286 # which cannot be resolved against the associated IDL files.
5287 { # Api is a light-weight descriptor for a protocol buffer service.
5288 "methods": [ # The methods of this api, in unspecified order.
5289 { # Method represents a method of an api.
5290 "name": "A String", # The simple name of this method.
5291 "requestStreaming": True or False, # If true, the request is streamed.
5292 "responseTypeUrl": "A String", # The URL of the output message type.
5293 "requestTypeUrl": "A String", # A URL of the input message type.
5294 "responseStreaming": True or False, # If true, the response is streamed.
5295 "syntax": "A String", # The source syntax of this method.
5296 "options": [ # Any metadata attached to the method.
5297 { # A protocol buffer option, which can be attached to a message, field,
5298 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005299 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5300 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5301 # For custom options, it should be the fully-qualified name. For example,
5302 # `"google.api.http"`.
5303 "value": { # The option's value packed in an Any message. If the value is a primitive,
5304 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5305 # should be used. If the value is an enum, it should be stored as an int32
5306 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005307 "a_key": "", # Properties of the object. Contains field @type with type URL.
5308 },
5309 },
5310 ],
5311 },
5312 ],
5313 "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
5314 # message.
5315 # protobuf element, like the file in which it is defined.
5316 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5317 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5318 },
5319 "mixins": [ # Included APIs. See Mixin.
5320 { # Declares an API to be included in this API. The including API must
5321 # redeclare all the methods from the included API, but documentation
5322 # and options are inherited as follows:
5323 #
5324 # - If after comment and whitespace stripping, the documentation
5325 # string of the redeclared method is empty, it will be inherited
5326 # from the original method.
5327 #
5328 # - Each annotation belonging to the service config (http,
5329 # visibility) which is not set in the redeclared method will be
5330 # inherited.
5331 #
5332 # - If an http annotation is inherited, the path pattern will be
5333 # modified as follows. Any version prefix will be replaced by the
5334 # version of the including API plus the root path if specified.
5335 #
5336 # Example of a simple mixin:
5337 #
5338 # package google.acl.v1;
5339 # service AccessControl {
5340 # // Get the underlying ACL object.
5341 # rpc GetAcl(GetAclRequest) returns (Acl) {
5342 # option (google.api.http).get = "/v1/{resource=**}:getAcl";
5343 # }
5344 # }
5345 #
5346 # package google.storage.v2;
5347 # service Storage {
5348 # // rpc GetAcl(GetAclRequest) returns (Acl);
5349 #
5350 # // Get a data record.
5351 # rpc GetData(GetDataRequest) returns (Data) {
5352 # option (google.api.http).get = "/v2/{resource=**}";
5353 # }
5354 # }
5355 #
5356 # Example of a mixin configuration:
5357 #
5358 # apis:
5359 # - name: google.storage.v2.Storage
5360 # mixins:
5361 # - name: google.acl.v1.AccessControl
5362 #
5363 # The mixin construct implies that all methods in `AccessControl` are
5364 # also declared with same name and request/response types in
5365 # `Storage`. A documentation generator or annotation processor will
5366 # see the effective `Storage.GetAcl` method after inherting
5367 # documentation and annotations as follows:
5368 #
5369 # service Storage {
5370 # // Get the underlying ACL object.
5371 # rpc GetAcl(GetAclRequest) returns (Acl) {
5372 # option (google.api.http).get = "/v2/{resource=**}:getAcl";
5373 # }
5374 # ...
5375 # }
5376 #
5377 # Note how the version in the path pattern changed from `v1` to `v2`.
5378 #
5379 # If the `root` field in the mixin is specified, it should be a
5380 # relative path under which inherited HTTP paths are placed. Example:
5381 #
5382 # apis:
5383 # - name: google.storage.v2.Storage
5384 # mixins:
5385 # - name: google.acl.v1.AccessControl
5386 # root: acls
5387 #
5388 # This implies the following inherited HTTP annotation:
5389 #
5390 # service Storage {
5391 # // Get the underlying ACL object.
5392 # rpc GetAcl(GetAclRequest) returns (Acl) {
5393 # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
5394 # }
5395 # ...
5396 # }
5397 "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
5398 # are rooted.
5399 "name": "A String", # The fully qualified name of the API which is included.
5400 },
5401 ],
5402 "syntax": "A String", # The source syntax of the service.
5403 "version": "A String", # A version string for this api. If specified, must have the form
5404 # `major-version.minor-version`, as in `1.10`. If the minor version
5405 # is omitted, it defaults to zero. If the entire version field is
5406 # empty, the major version is derived from the package name, as
5407 # outlined below. If the field is not empty, the version in the
5408 # package name will be verified to be consistent with what is
5409 # provided here.
5410 #
5411 # The versioning schema uses [semantic
5412 # versioning](http://semver.org) where the major version number
5413 # indicates a breaking change and the minor version an additive,
5414 # non-breaking change. Both version numbers are signals to users
5415 # what to expect from different versions, and should be carefully
5416 # chosen based on the product plan.
5417 #
5418 # The major version is also reflected in the package name of the
5419 # API, which must end in `v<major-version>`, as in
5420 # `google.feature.v1`. For major versions 0 and 1, the suffix can
5421 # be omitted. Zero major versions must only be used for
5422 # experimental, none-GA apis.
5423 "options": [ # Any metadata attached to the API.
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 "name": "A String", # The fully qualified name of this api, including package name
5439 # followed by the api's simple name.
5440 },
5441 ],
5442 "customError": { # Customize service error responses. For example, list any service # Custom error configuration.
5443 # specific protobuf types that can appear in error detail lists of
5444 # error responses.
5445 #
5446 # Example:
5447 #
5448 # custom_error:
5449 # types:
5450 # - google.foo.v1.CustomError
5451 # - google.foo.v1.AnotherError
5452 "rules": [ # The list of custom error rules that apply to individual API messages.
5453 #
5454 # **NOTE:** All service configuration rules follow "last one wins" order.
5455 { # A custom error rule.
5456 "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise,
5457 # objects of this type will be filtered when they appear in error payload.
5458 "selector": "A String", # Selects messages to which this rule applies.
5459 #
5460 # Refer to selector for syntax details.
5461 },
5462 ],
5463 "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
5464 "A String",
5465 ],
5466 },
5467 "visibility": { # `Visibility` defines restrictions for the visibility of service # API visibility configuration.
5468 # elements. Restrictions are specified using visibility labels
5469 # (e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.
5470 #
5471 # Users and projects can have access to more than one visibility label. The
5472 # effective visibility for multiple labels is the union of each label's
5473 # elements, plus any unrestricted elements.
5474 #
5475 # If an element and its parents have no restrictions, visibility is
5476 # unconditionally granted.
5477 #
5478 # Example:
5479 #
5480 # visibility:
5481 # rules:
5482 # - selector: google.calendar.Calendar.EnhancedSearch
5483 # restriction: TRUSTED_TESTER
5484 # - selector: google.calendar.Calendar.Delegate
5485 # restriction: GOOGLE_INTERNAL
5486 #
5487 # Here, all methods are publicly visible except for the restricted methods
5488 # EnhancedSearch and Delegate.
5489 "rules": [ # A list of visibility rules that apply to individual API elements.
5490 #
5491 # **NOTE:** All service configuration rules follow "last one wins" order.
5492 { # A visibility rule provides visibility configuration for an individual API
5493 # element.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005494 "restriction": "A String", # A comma-separated list of visibility labels that apply to the `selector`.
5495 # Any of the listed labels can be used to grant the visibility.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005496 #
5497 # If a rule has multiple labels, removing one of the labels but not all of
5498 # them can break clients.
5499 #
5500 # Example:
5501 #
5502 # visibility:
5503 # rules:
5504 # - selector: google.calendar.Calendar.EnhancedSearch
5505 # restriction: GOOGLE_INTERNAL, TRUSTED_TESTER
5506 #
5507 # Removing GOOGLE_INTERNAL from this restriction will break clients that
5508 # rely on this method and only had access to it through GOOGLE_INTERNAL.
5509 "selector": "A String", # Selects methods, messages, fields, enums, etc. to which this rule applies.
5510 #
5511 # Refer to selector for syntax details.
5512 },
5513 ],
5514 },
5515 "metrics": [ # Defines the metrics used by this service.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005516 { # Defines a metric type and its schema. Once a metric descriptor is created,
5517 # deleting or altering it stops data collection and makes the metric type's
5518 # existing data unusable.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005519 "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
5520 # Use sentence case without an ending period, for example "Request count".
Thomas Coffee2f245372017-03-27 10:39:26 -07005521 "description": "A String", # A detailed description of the metric, which can be used in documentation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005522 "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005523 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005524 "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005525 # Some combinations of `metric_kind` and `value_type` might not be supported.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005526 "labels": [ # The set of labels that can be used to describe a specific
5527 # instance of this metric type. For example, the
5528 # `appengine.googleapis.com/http/server/response_latencies` metric
5529 # type has a label for the HTTP response code, `response_code`, so
5530 # you can look at latencies for successful responses or just
5531 # for responses that failed.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005532 { # A description of a label.
5533 "valueType": "A String", # The type of data that can be assigned to the label.
5534 "description": "A String", # A human-readable description for the label.
5535 "key": "A String", # The label key.
5536 },
5537 ],
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005538 "type": "A String", # The metric type, including its DNS name prefix. The type is not
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005539 # URL-encoded. All user-defined custom metric types have the DNS name
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005540 # `custom.googleapis.com`. Metric types should use a natural hierarchical
5541 # grouping. For example:
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005542 #
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005543 # "custom.googleapis.com/invoice/paid/amount"
5544 # "appengine.googleapis.com/http/server/response_latencies"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005545 "unit": "A String", # The unit in which the metric value is reported. It is only applicable
5546 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
5547 # supported units are a subset of [The Unified Code for Units of
5548 # Measure](http://unitsofmeasure.org/ucum.html) standard:
5549 #
5550 # **Basic units (UNIT)**
5551 #
5552 # * `bit` bit
5553 # * `By` byte
5554 # * `s` second
5555 # * `min` minute
5556 # * `h` hour
5557 # * `d` day
5558 #
5559 # **Prefixes (PREFIX)**
5560 #
5561 # * `k` kilo (10**3)
5562 # * `M` mega (10**6)
5563 # * `G` giga (10**9)
5564 # * `T` tera (10**12)
5565 # * `P` peta (10**15)
5566 # * `E` exa (10**18)
5567 # * `Z` zetta (10**21)
5568 # * `Y` yotta (10**24)
5569 # * `m` milli (10**-3)
5570 # * `u` micro (10**-6)
5571 # * `n` nano (10**-9)
5572 # * `p` pico (10**-12)
5573 # * `f` femto (10**-15)
5574 # * `a` atto (10**-18)
5575 # * `z` zepto (10**-21)
5576 # * `y` yocto (10**-24)
5577 # * `Ki` kibi (2**10)
5578 # * `Mi` mebi (2**20)
5579 # * `Gi` gibi (2**30)
5580 # * `Ti` tebi (2**40)
5581 #
5582 # **Grammar**
5583 #
5584 # The grammar includes the dimensionless unit `1`, such as `1/s`.
5585 #
5586 # The grammar also includes these connectors:
5587 #
5588 # * `/` division (as an infix operator, e.g. `1/s`).
5589 # * `.` multiplication (as an infix operator, e.g. `GBy.d`)
5590 #
5591 # The grammar for a unit is as follows:
5592 #
5593 # Expression = Component { "." Component } { "/" Component } ;
5594 #
5595 # Component = [ PREFIX ] UNIT [ Annotation ]
5596 # | Annotation
5597 # | "1"
5598 # ;
5599 #
5600 # Annotation = "{" NAME "}" ;
5601 #
5602 # Notes:
5603 #
5604 # * `Annotation` is just a comment if it follows a `UNIT` and is
5605 # equivalent to `1` if it is used alone. For examples,
5606 # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
5607 # * `NAME` is a sequence of non-blank printable ASCII characters not
5608 # containing '{' or '}'.
Thomas Coffee2f245372017-03-27 10:39:26 -07005609 "name": "A String", # The resource name of the metric descriptor. Depending on the
5610 # implementation, the name typically includes: (1) the parent resource name
5611 # that defines the scope of the metric type or of its data; and (2) the
5612 # metric's URL-encoded type, which also appears in the `type` field of this
5613 # descriptor. For example, following is the resource name of a custom
5614 # metric within the GCP project `my-project-id`:
5615 #
5616 # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005617 },
5618 ],
5619 "enums": [ # A list of all enum types included in this API service. Enums
5620 # referenced directly or indirectly by the `apis` are automatically
5621 # included. Enums which are not referenced but shall be included
5622 # should be listed here by name. Example:
5623 #
5624 # enums:
5625 # - name: google.someapi.v1.SomeEnum
5626 { # Enum type definition.
Thomas Coffee2f245372017-03-27 10:39:26 -07005627 "syntax": "A String", # The source syntax.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005628 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5629 # protobuf element, like the file in which it is defined.
5630 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5631 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5632 },
Thomas Coffee2f245372017-03-27 10:39:26 -07005633 "options": [ # Protocol buffer options.
5634 { # A protocol buffer option, which can be attached to a message, field,
5635 # enumeration, etc.
5636 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5637 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5638 # For custom options, it should be the fully-qualified name. For example,
5639 # `"google.api.http"`.
5640 "value": { # The option's value packed in an Any message. If the value is a primitive,
5641 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5642 # should be used. If the value is an enum, it should be stored as an int32
5643 # value using the google.protobuf.Int32Value type.
5644 "a_key": "", # Properties of the object. Contains field @type with type URL.
5645 },
5646 },
5647 ],
5648 "name": "A String", # Enum type name.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005649 "enumvalue": [ # Enum value definitions.
5650 { # Enum value definition.
5651 "number": 42, # Enum value number.
5652 "name": "A String", # Enum value name.
5653 "options": [ # Protocol buffer options.
5654 { # A protocol buffer option, which can be attached to a message, field,
5655 # enumeration, etc.
5656 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5657 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5658 # For custom options, it should be the fully-qualified name. For example,
5659 # `"google.api.http"`.
5660 "value": { # The option's value packed in an Any message. If the value is a primitive,
5661 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5662 # should be used. If the value is an enum, it should be stored as an int32
5663 # value using the google.protobuf.Int32Value type.
5664 "a_key": "", # Properties of the object. Contains field @type with type URL.
5665 },
5666 },
5667 ],
5668 },
5669 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005670 },
5671 ],
5672 "types": [ # A list of all proto message types included in this API service.
5673 # Types referenced directly or indirectly by the `apis` are
5674 # automatically included. Messages which are not referenced but
5675 # shall be included, such as types used by the `google.protobuf.Any` type,
5676 # should be listed here by name. Example:
5677 #
5678 # types:
5679 # - name: google.protobuf.Int32
5680 { # A protocol buffer message type.
5681 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
5682 "A String",
5683 ],
5684 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005685 "fields": [ # The list of fields.
5686 { # A single field of a message type.
5687 "kind": "A String", # The field type.
5688 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
5689 # types. The first type has index 1; zero means the type is not in the list.
5690 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
5691 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
5692 "name": "A String", # The field name.
5693 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
5694 "jsonName": "A String", # The field JSON name.
5695 "number": 42, # The field number.
5696 "cardinality": "A String", # The field cardinality.
5697 "options": [ # The protocol buffer options.
5698 { # A protocol buffer option, which can be attached to a message, field,
5699 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005700 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5701 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5702 # For custom options, it should be the fully-qualified name. For example,
5703 # `"google.api.http"`.
5704 "value": { # The option's value packed in an Any message. If the value is a primitive,
5705 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5706 # should be used. If the value is an enum, it should be stored as an int32
5707 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005708 "a_key": "", # Properties of the object. Contains field @type with type URL.
5709 },
5710 },
5711 ],
5712 "packed": True or False, # Whether to use alternative packed wire representation.
5713 },
5714 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005715 "syntax": "A String", # The source syntax.
5716 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5717 # protobuf element, like the file in which it is defined.
5718 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5719 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5720 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005721 "options": [ # The protocol buffer options.
5722 { # A protocol buffer option, which can be attached to a message, field,
5723 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005724 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5725 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5726 # For custom options, it should be the fully-qualified name. For example,
5727 # `"google.api.http"`.
5728 "value": { # The option's value packed in an Any message. If the value is a primitive,
5729 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5730 # should be used. If the value is an enum, it should be stored as an int32
5731 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005732 "a_key": "", # Properties of the object. Contains field @type with type URL.
5733 },
5734 },
5735 ],
5736 },
5737 ],
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07005738 "logging": { # Logging configuration of the service. # Logging configuration.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005739 #
5740 # The following example shows how to configure logs to be sent to the
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005741 # producer and consumer projects. In the example, the `activity_history`
5742 # log is sent to both the producer and consumer projects, whereas the
5743 # `purchase_history` log is only sent to the producer project.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005744 #
5745 # monitored_resources:
5746 # - type: library.googleapis.com/branch
5747 # labels:
5748 # - key: /city
5749 # description: The city where the library branch is located in.
5750 # - key: /name
5751 # description: The name of the branch.
5752 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005753 # - name: activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005754 # labels:
5755 # - key: /customer_id
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005756 # - name: purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005757 # logging:
5758 # producer_destinations:
5759 # - monitored_resource: library.googleapis.com/branch
5760 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005761 # - activity_history
5762 # - purchase_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005763 # consumer_destinations:
5764 # - monitored_resource: library.googleapis.com/branch
5765 # logs:
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005766 # - activity_history
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005767 "producerDestinations": [ # Logging configurations for sending logs to the producer project.
5768 # There can be multiple producer destinations, each one must have a
5769 # different monitored resource type. A log can be used in at most
5770 # one producer destination.
5771 { # Configuration of a specific logging destination (the producer project
5772 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005773 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005774 # Service.monitored_resources section.
5775 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005776 # be defined in the Service.logs section. If the log name is
5777 # not a domain scoped name, it will be automatically prefixed with
5778 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005779 "A String",
5780 ],
5781 },
5782 ],
5783 "consumerDestinations": [ # Logging configurations for sending logs to the consumer project.
5784 # There can be multiple consumer destinations, each one must have a
5785 # different monitored resource type. A log can be used in at most
5786 # one consumer destination.
5787 { # Configuration of a specific logging destination (the producer project
5788 # or the consumer project).
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005789 "monitoredResource": "A String", # The monitored resource type. The type must be defined in the
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005790 # Service.monitored_resources section.
5791 "logs": [ # Names of the logs to be sent to this destination. Each name must
Sai Cheemalapatidf613972016-10-21 13:59:49 -07005792 # be defined in the Service.logs section. If the log name is
5793 # not a domain scoped name, it will be automatically prefixed with
5794 # the service name followed by "/".
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005795 "A String",
5796 ],
5797 },
5798 ],
5799 },
5800 "name": "A String", # The DNS address at which this service is available,
5801 # e.g. `calendar.googleapis.com`.
5802 "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation.
5803 #
5804 # Example:
5805 # <pre><code>documentation:
5806 # summary: >
5807 # The Google Calendar API gives access
5808 # to most calendar features.
5809 # pages:
5810 # - name: Overview
5811 # content: &#40;== include google/foo/overview.md ==&#41;
5812 # - name: Tutorial
5813 # content: &#40;== include google/foo/tutorial.md ==&#41;
5814 # subpages;
5815 # - name: Java
5816 # content: &#40;== include google/foo/tutorial_java.md ==&#41;
5817 # rules:
5818 # - selector: google.calendar.Calendar.Get
5819 # description: >
5820 # ...
5821 # - selector: google.calendar.Calendar.Put
5822 # description: >
5823 # ...
5824 # </code></pre>
5825 # Documentation is provided in markdown syntax. In addition to
5826 # standard markdown features, definition lists, tables and fenced
5827 # code blocks are supported. Section headers can be provided and are
5828 # interpreted relative to the section nesting of the context where
5829 # a documentation fragment is embedded.
5830 #
5831 # Documentation from the IDL is merged with documentation defined
5832 # via the config at normalization time, where documentation provided
5833 # by config rules overrides IDL provided.
5834 #
5835 # A number of constructs specific to the API platform are supported
5836 # in documentation text.
5837 #
5838 # In order to reference a proto element, the following
5839 # notation can be used:
5840 # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
5841 # To override the display text used for the link, this can be used:
5842 # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
5843 # Text can be excluded from doc using the following notation:
5844 # <pre><code>&#40;-- internal comment --&#41;</code></pre>
5845 # Comments can be made conditional using a visibility label. The below
5846 # text will be only rendered if the `BETA` label is available:
5847 # <pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre>
5848 # A few directives are available in documentation. Note that
5849 # directives must appear on a single line to be properly
5850 # identified. The `include` directive includes a markdown file from
5851 # an external source:
5852 # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
5853 # The `resource_for` directive marks a message to be the resource of
5854 # a collection in REST view. If it is not specified, tools attempt
5855 # to infer the resource from the operations in a collection:
5856 # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
5857 # The directive `suppress_warning` does not directly affect documentation
5858 # and is documented together with service config validation.
5859 "rules": [ # A list of documentation rules that apply to individual API elements.
5860 #
5861 # **NOTE:** All service configuration rules follow "last one wins" order.
5862 { # A documentation rule provides information about individual API elements.
5863 "description": "A String", # Description of the selected API(s).
5864 "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if an
5865 # element is marked as `deprecated`.
5866 "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
5867 # qualified name of the element which may end in "*", indicating a wildcard.
5868 # Wildcards are only allowed at the end and for a whole component of the
5869 # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To
5870 # specify a default for all applicable elements, the whole pattern "*"
5871 # is used.
5872 },
5873 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005874 "documentationRootUrl": "A String", # The URL to the root of documentation.
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005875 "overview": "A String", # Declares a single overview page. For example:
5876 # <pre><code>documentation:
5877 # summary: ...
5878 # overview: &#40;== include overview.md ==&#41;
5879 # </code></pre>
5880 # This is a shortcut for the following declaration (using pages style):
5881 # <pre><code>documentation:
5882 # summary: ...
5883 # pages:
5884 # - name: Overview
5885 # content: &#40;== include overview.md ==&#41;
5886 # </code></pre>
5887 # Note: you cannot specify both `overview` field and `pages` field.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005888 "pages": [ # The top level pages for the documentation set.
5889 { # Represents a documentation page. A page can contain subpages to represent
5890 # nested documentation set structure.
5891 "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path} ==&#41;</code>
5892 # to include content from a Markdown file.
5893 "subpages": [ # Subpages of this page. The order of subpages specified here will be
5894 # honored in the generated docset.
5895 # Object with schema name: Page
5896 ],
5897 "name": "A String", # The name of the page. It will be used as an identity of the page to
5898 # generate URI of the page, text of the link to this page in navigation,
5899 # etc. The full page name (start from the root page name to this page
5900 # concatenated with `.`) can be used as reference to the page in your
5901 # documentation. For example:
5902 # <pre><code>pages:
5903 # - name: Tutorial
5904 # content: &#40;== include tutorial.md ==&#41;
5905 # subpages:
5906 # - name: Java
5907 # content: &#40;== include tutorial_java.md ==&#41;
5908 # </code></pre>
5909 # You can reference `Java` page using Markdown reference link syntax:
5910 # `Java`.
5911 },
5912 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07005913 "summary": "A String", # A short summary of what the service does. Can only be provided by
5914 # plain text.
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005915 },
5916 "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
5917 "sourceFiles": [ # All files used during config generation.
5918 {
5919 "a_key": "", # Properties of the object. Contains field @type with type URL.
5920 },
5921 ],
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005922 },
5923 "systemTypes": [ # A list of all proto message types included in this API service.
5924 # It serves similar purpose as [google.api.Service.types], except that
5925 # these types are not needed by user-defined APIs. Therefore, they will not
5926 # show up in the generated discovery doc. This field should only be used
5927 # to define system APIs in ESF.
5928 { # A protocol buffer message type.
5929 "oneofs": [ # The list of types appearing in `oneof` definitions in this type.
5930 "A String",
5931 ],
5932 "name": "A String", # The fully qualified message name.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005933 "fields": [ # The list of fields.
5934 { # A single field of a message type.
5935 "kind": "A String", # The field type.
5936 "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration
5937 # types. The first type has index 1; zero means the type is not in the list.
5938 "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration
5939 # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
5940 "name": "A String", # The field name.
5941 "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only.
5942 "jsonName": "A String", # The field JSON name.
5943 "number": 42, # The field number.
5944 "cardinality": "A String", # The field cardinality.
5945 "options": [ # The protocol buffer options.
5946 { # A protocol buffer option, which can be attached to a message, field,
5947 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005948 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5949 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5950 # For custom options, it should be the fully-qualified name. For example,
5951 # `"google.api.http"`.
5952 "value": { # The option's value packed in an Any message. If the value is a primitive,
5953 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5954 # should be used. If the value is an enum, it should be stored as an int32
5955 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005956 "a_key": "", # Properties of the object. Contains field @type with type URL.
5957 },
5958 },
5959 ],
5960 "packed": True or False, # Whether to use alternative packed wire representation.
5961 },
5962 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04005963 "syntax": "A String", # The source syntax.
5964 "sourceContext": { # `SourceContext` represents information about the source of a # The source context.
5965 # protobuf element, like the file in which it is defined.
5966 "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
5967 # protobuf element. For example: `"google/protobuf/source_context.proto"`.
5968 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005969 "options": [ # The protocol buffer options.
5970 { # A protocol buffer option, which can be attached to a message, field,
5971 # enumeration, etc.
Jon Wayne Parrott692617a2017-01-06 09:58:29 -08005972 "name": "A String", # The option's name. For protobuf built-in options (options defined in
5973 # descriptor.proto), this is the short name. For example, `"map_entry"`.
5974 # For custom options, it should be the fully-qualified name. For example,
5975 # `"google.api.http"`.
5976 "value": { # The option's value packed in an Any message. If the value is a primitive,
5977 # the corresponding wrapper type defined in google/protobuf/wrappers.proto
5978 # should be used. If the value is an enum, it should be stored as an int32
5979 # value using the google.protobuf.Int32Value type.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07005980 "a_key": "", # Properties of the object. Contains field @type with type URL.
5981 },
5982 },
5983 ],
5984 },
5985 ],
5986 "context": { # `Context` defines which contexts an API requests. # Context configuration.
5987 #
5988 # Example:
5989 #
5990 # context:
5991 # rules:
5992 # - selector: "*"
5993 # requested:
5994 # - google.rpc.context.ProjectContext
5995 # - google.rpc.context.OriginContext
5996 #
5997 # The above specifies that all methods in the API request
5998 # `google.rpc.context.ProjectContext` and
5999 # `google.rpc.context.OriginContext`.
6000 #
6001 # Available context types are defined in package
6002 # `google.rpc.context`.
6003 "rules": [ # A list of RPC context rules that apply to individual API methods.
6004 #
6005 # **NOTE:** All service configuration rules follow "last one wins" order.
6006 { # A context rule provides information about the context for an individual API
6007 # element.
6008 "provided": [ # A list of full type names of provided contexts.
6009 "A String",
6010 ],
Sai Cheemalapatie833b792017-03-24 15:06:46 -07006011 "requested": [ # A list of full type names of requested contexts.
6012 "A String",
6013 ],
Thomas Coffee2f245372017-03-27 10:39:26 -07006014 "selector": "A String", # Selects the methods to which this rule applies.
6015 #
6016 # Refer to selector for syntax details.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006017 },
6018 ],
6019 },
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006020 "endpoints": [ # Configuration for network endpoints. If this is empty, then an endpoint
6021 # with the same name as the service is automatically generated to service all
6022 # defined APIs.
6023 { # `Endpoint` describes a network endpoint that serves a set of APIs.
6024 # A service may expose any number of endpoints, and all endpoints share the
6025 # same service configuration, such as quota configuration and monitoring
6026 # configuration.
6027 #
6028 # Example service configuration:
6029 #
6030 # name: library-example.googleapis.com
6031 # endpoints:
6032 # # Below entry makes 'google.example.library.v1.Library'
6033 # # API be served from endpoint address library-example.googleapis.com.
6034 # # It also allows HTTP OPTIONS calls to be passed to the backend, for
6035 # # it to decide whether the subsequent cross-origin request is
6036 # # allowed to proceed.
6037 # - name: library-example.googleapis.com
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006038 # allow_cors: true
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006039 "allowCors": True or False, # Allowing
6040 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
6041 # cross-domain traffic, would allow the backends served from this endpoint to
6042 # receive and respond to HTTP OPTIONS requests. The response will be used by
6043 # the browser to determine whether the subsequent cross-origin request is
6044 # allowed to proceed.
Thomas Coffee2f245372017-03-27 10:39:26 -07006045 "apis": [ # The list of APIs served by this endpoint.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006046 "A String",
6047 ],
6048 "features": [ # The list of features enabled on this endpoint.
6049 "A String",
6050 ],
6051 "name": "A String", # The canonical name of this endpoint.
Thomas Coffee2f245372017-03-27 10:39:26 -07006052 "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
6053 # please specify multiple google.api.Endpoint for each of the intented
6054 # alias.
6055 #
6056 # Additional names that this endpoint will be hosted on.
Sai Cheemalapatiea3a5e12016-10-12 14:05:53 -07006057 "A String",
6058 ],
6059 },
6060 ],
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04006061 "experimental": { # Experimental service configuration. These configuration options can # Experimental configuration.
6062 # only be used by whitelisted users.
6063 "authorization": { # Configuration of authorization. # Authorization configuration.
6064 #
6065 # This section determines the authorization provider, if unspecified, then no
6066 # authorization check will be done.
6067 #
6068 # Example:
6069 #
6070 # experimental:
6071 # authorization:
6072 # provider: firebaserules.googleapis.com
6073 "provider": "A String", # The name of the authorization provider, such as
6074 # firebaserules.googleapis.com.
6075 },
6076 },
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006077 },
6078 ],
6079 }</pre>
6080</div>
6081
6082<div class="method">
6083 <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
6084 <pre>Retrieves the next page of results.
6085
6086Args:
6087 previous_request: The request for the previous page. (required)
6088 previous_response: The response from the request for the previous page. (required)
6089
6090Returns:
6091 A request object that you can call 'execute()' on to request the next
6092 page. Returns None if there are no more items in the collection.
6093 </pre>
6094</div>
6095
6096<div class="method">
Thomas Coffee2f245372017-03-27 10:39:26 -07006097 <code class="details" id="submit">submit(serviceName, body, x__xgafv=None)</code>
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006098 <pre>Creates a new service configuration (version) for a managed service based
6099on
6100user-supplied configuration source files (for example: OpenAPI
6101Specification). This method stores the source configurations as well as the
6102generated service configuration. To rollout the service configuration to
6103other services,
6104please call CreateServiceRollout.
6105
6106Operation<response: SubmitConfigSourceResponse>
6107
6108Args:
6109 serviceName: string, The name of the service. See the [overview](/service-management/overview)
6110for naming requirements. For example: `example.googleapis.com`. (required)
6111 body: object, The request body. (required)
6112 The object takes the form of:
6113
6114{ # Request message for SubmitConfigSource method.
6115 "validateOnly": True or False, # Optional. If set, this will result in the generation of a
6116 # `google.api.Service` configuration based on the `ConfigSource` provided,
6117 # but the generated config and the sources will NOT be persisted.
6118 "configSource": { # Represents a source file which is used to generate the service configuration # The source configuration for the service.
6119 # defined by `google.api.Service`.
6120 "files": [ # Set of source configuration files that are used to generate a service
6121 # configuration (`google.api.Service`).
6122 { # Generic specification of a source configuration file
6123 "fileContents": "A String", # The bytes that constitute the file.
6124 "fileType": "A String", # The type of configuration file this represents.
6125 "filePath": "A String", # The file name of the configuration file (full or relative path).
6126 },
6127 ],
6128 "id": "A String", # A unique ID for a specific instance of this message, typically assigned
6129 # by the client for tracking purpose. If empty, the server may choose to
6130 # generate one instead.
6131 },
6132 }
6133
6134 x__xgafv: string, V1 error format.
6135 Allowed values
6136 1 - v1 error format
6137 2 - v2 error format
6138
6139Returns:
6140 An object of the form:
6141
6142 { # This resource represents a long-running operation that is the result of a
6143 # network API call.
6144 "metadata": { # Service-specific metadata associated with the operation. It typically
6145 # contains progress information and common metadata such as create time.
6146 # Some services might not provide such metadata. Any method that returns a
6147 # long-running operation should document the metadata type, if any.
6148 "a_key": "", # Properties of the object. Contains field @type with type URL.
6149 },
Sai Cheemalapatidf613972016-10-21 13:59:49 -07006150 "error": { # The `Status` type defines a logical error model that is suitable for different # The error result of the operation in case of failure or cancellation.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006151 # programming environments, including REST APIs and RPC APIs. It is used by
6152 # [gRPC](https://github.com/grpc). The error model is designed to be:
6153 #
6154 # - Simple to use and understand for most users
6155 # - Flexible enough to meet unexpected needs
6156 #
6157 # # Overview
6158 #
6159 # The `Status` message contains three pieces of data: error code, error message,
6160 # and error details. The error code should be an enum value of
6161 # google.rpc.Code, but it may accept additional error codes if needed. The
6162 # error message should be a developer-facing English message that helps
6163 # developers *understand* and *resolve* the error. If a localized user-facing
6164 # error message is needed, put the localized message in the error details or
6165 # localize it in the client. The optional error details may contain arbitrary
6166 # information about the error. There is a predefined set of error detail types
6167 # in the package `google.rpc` which can be used for common error conditions.
6168 #
6169 # # Language mapping
6170 #
6171 # The `Status` message is the logical representation of the error model, but it
6172 # is not necessarily the actual wire format. When the `Status` message is
6173 # exposed in different client libraries and different wire protocols, it can be
6174 # mapped differently. For example, it will likely be mapped to some exceptions
6175 # in Java, but more likely mapped to some error codes in C.
6176 #
6177 # # Other uses
6178 #
6179 # The error model and the `Status` message can be used in a variety of
6180 # environments, either with or without APIs, to provide a
6181 # consistent developer experience across different environments.
6182 #
6183 # Example uses of this error model include:
6184 #
6185 # - Partial errors. If a service needs to return partial errors to the client,
6186 # it may embed the `Status` in the normal response to indicate the partial
6187 # errors.
6188 #
6189 # - Workflow errors. A typical workflow has multiple steps. Each step may
6190 # have a `Status` message for error reporting purpose.
6191 #
6192 # - Batch operations. If a client uses batch request and batch response, the
6193 # `Status` message should be used directly inside batch response, one for
6194 # each error sub-response.
6195 #
6196 # - Asynchronous operations. If an API call embeds asynchronous operation
6197 # results in its response, the status of those operations should be
6198 # represented directly using the `Status` message.
6199 #
6200 # - Logging. If some API errors are stored in logs, the message `Status` could
6201 # be used directly after any stripping needed for security/privacy reasons.
6202 "message": "A String", # A developer-facing error message, which should be in English. Any
6203 # user-facing error message should be localized and sent in the
6204 # google.rpc.Status.details field, or localized by the client.
6205 "code": 42, # The status code, which should be an enum value of google.rpc.Code.
6206 "details": [ # A list of messages that carry the error details. There will be a
6207 # common set of message types for APIs to use.
6208 {
6209 "a_key": "", # Properties of the object. Contains field @type with type URL.
6210 },
6211 ],
6212 },
Sai Cheemalapatic30d2b52017-03-13 12:12:03 -04006213 "done": True or False, # If the value is `false`, it means the operation is still in progress.
6214 # If true, the operation is completed, and either `error` or `response` is
6215 # available.
6216 "response": { # The normal response of the operation in case of success. If the original
6217 # method returns no data on success, such as `Delete`, the response is
6218 # `google.protobuf.Empty`. If the original method is standard
6219 # `Get`/`Create`/`Update`, the response should be the resource. For other
6220 # methods, the response should have the type `XxxResponse`, where `Xxx`
6221 # is the original method name. For example, if the original method name
6222 # is `TakeSnapshot()`, the inferred response type is
6223 # `TakeSnapshotResponse`.
6224 "a_key": "", # Properties of the object. Contains field @type with type URL.
6225 },
6226 "name": "A String", # The server-assigned name, which is only unique within the same service that
6227 # originally returns it. If you use the default HTTP mapping, the
6228 # `name` should have the format of `operations/some/unique/name`.
Jon Wayne Parrott7d5badb2016-08-16 12:44:29 -07006229 }</pre>
6230</div>
6231
6232</body></html>