chore: regens API reference docs (#889)

diff --git a/docs/dyn/serviceusage_v1.services.html b/docs/dyn/serviceusage_v1.services.html
index 0623184..a4d5065 100644
--- a/docs/dyn/serviceusage_v1.services.html
+++ b/docs/dyn/serviceusage_v1.services.html
@@ -75,10 +75,13 @@
 <h1><a href="serviceusage_v1.html">Service Usage API</a> . <a href="serviceusage_v1.services.html">services</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#batchEnable">batchEnable(parent, body, x__xgafv=None)</a></code></p>
+  <code><a href="#batchEnable">batchEnable(parent, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Enable multiple services on a project. The operation is atomic: if enabling</p>
 <p class="toc_element">
-  <code><a href="#disable">disable(name, body, x__xgafv=None)</a></code></p>
+  <code><a href="#batchGet">batchGet(parent, names=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns the service configurations and enabled states for a given list of</p>
+<p class="toc_element">
+  <code><a href="#disable">disable(name, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Disable a service so that it can no longer be used with a project.</p>
 <p class="toc_element">
   <code><a href="#enable">enable(name, body=None, x__xgafv=None)</a></code></p>
@@ -87,16 +90,17 @@
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns the service configuration and enabled state for a given service.</p>
 <p class="toc_element">
-  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None, filter=None)</a></code></p>
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None, filter=None)</a></code></p>
 <p class="firstline">List all services available to the specified project, and the current</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="batchEnable">batchEnable(parent, body, x__xgafv=None)</code>
+    <code class="details" id="batchEnable">batchEnable(parent, body=None, x__xgafv=None)</code>
   <pre>Enable multiple services on a project. The operation is atomic: if enabling
 any service fails, then the entire batch fails, and no state changes occur.
+To enable a single service, use the `EnableService` method instead.
 
 Args:
   parent: string, Parent to enable services on.
@@ -105,7 +109,7 @@
 `projects/123` where `123` is the project number.
 
 The `BatchEnableServices` method currently only supports projects. (required)
-  body: object, The request body. (required)
+  body: object, The request body.
     The object takes the form of:
 
 { # Request message for the `BatchEnableServices` method.
@@ -117,9 +121,6 @@
         # Enabling services requires that each service is public or is shared with
         # the user enabling the service.
         # 
-        # Two or more services must be specified. To enable a single service,
-        # use the `EnableService` method instead.
-        # 
         # A single request can enable a maximum of 20 services at a time. If more
         # than 20 services are specified, the request will fail, and no state changes
         # will occur.
@@ -137,12 +138,28 @@
 
     { # This resource represents a long-running operation that is the result of a
       # network API call.
+    "response": { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
     "metadata": { # Service-specific metadata associated with the operation.  It typically
         # contains progress information and common metadata such as create time.
         # Some services might not provide such metadata.  Any method that returns a
         # long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
+    "done": True or False, # If the value is `false`, it means the operation is still in progress.
+        # If `true`, the operation is completed, and either `error` or `response` is
+        # available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should be a resource name ending with `operations/{unique_id}`.
     "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
         # different programming environments, including REST APIs and RPC APIs. It is
         # used by [gRPC](https://github.com/grpc). Each `Status` message contains
@@ -161,54 +178,26 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress.
-        # If `true`, the operation is completed, and either `error` or `response` is
-        # available.
-    "response": { # The normal response of the operation in case of success.  If the original
-        # method returns no data on success, such as `Delete`, the response is
-        # `google.protobuf.Empty`.  If the original method is standard
-        # `Get`/`Create`/`Update`, the response should be the resource.  For other
-        # methods, the response should have the type `XxxResponse`, where `Xxx`
-        # is the original method name.  For example, if the original method name
-        # is `TakeSnapshot()`, the inferred response type is
-        # `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
-    "name": "A String", # The server-assigned name, which is only unique within the same service that
-        # originally returns it. If you use the default HTTP mapping, the
-        # `name` should be a resource name ending with `operations/{unique_id}`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="disable">disable(name, body, x__xgafv=None)</code>
-  <pre>Disable a service so that it can no longer be used with a project.
-This prevents unintended usage that may cause unexpected billing
-charges or security leaks.
-
-It is not valid to call the disable method on a service that is not
-currently enabled. Callers will receive a `FAILED_PRECONDITION` status if
-the target service is not currently enabled.
+    <code class="details" id="batchGet">batchGet(parent, names=None, x__xgafv=None)</code>
+  <pre>Returns the service configurations and enabled states for a given list of
+services.
 
 Args:
-  name: string, Name of the consumer and service to disable the service on.
-
-The enable and disable methods currently only support projects.
+  parent: string, Parent to retrieve services from.
+If this is set, the parent of all of the services specified in `names` must
+match this field. An example name would be: `projects/123` where `123` is
+the project number. The `BatchGetServices` method currently only supports
+projects. (required)
+  names: string, Names of the services to retrieve.
 
 An example name would be:
 `projects/123/services/serviceusage.googleapis.com` where `123` is the
-project number. (required)
-  body: object, The request body. (required)
-    The object takes the form of:
-
-{ # Request message for the `DisableService` method.
-    "disableDependentServices": True or False, # Indicates if services that are enabled and which depend on this service
-        # should also be disabled. If not set, an error will be generated if any
-        # enabled services depend on the service to be disabled. When set, the
-        # service, and any enabled services that depend on it, will be disabled
-        # together.
-  }
-
+project number.
+A single request can get a maximum of 20 services at a time. (repeated)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -217,840 +206,8 @@
 Returns:
   An object of the form:
 
-    { # This resource represents a long-running operation that is the result of a
-      # network API call.
-    "metadata": { # Service-specific metadata associated with the operation.  It typically
-        # contains progress information and common metadata such as create time.
-        # Some services might not provide such metadata.  Any method that returns a
-        # long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
-    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
-        # different programming environments, including REST APIs and RPC APIs. It is
-        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
-        # three pieces of data: error code, error message, and error details.
-        #
-        # You can find out more about this error model and how to work with it in the
-        # [API Design Guide](https://cloud.google.com/apis/design/errors).
-      "message": "A String", # A developer-facing error message, which should be in English. Any
-          # user-facing error message should be localized and sent in the
-          # google.rpc.Status.details field, or localized by the client.
-      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
-      "details": [ # A list of messages that carry the error details.  There is a common set of
-          # message types for APIs to use.
-        {
-          "a_key": "", # Properties of the object. Contains field @type with type URL.
-        },
-      ],
-    },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress.
-        # If `true`, the operation is completed, and either `error` or `response` is
-        # available.
-    "response": { # The normal response of the operation in case of success.  If the original
-        # method returns no data on success, such as `Delete`, the response is
-        # `google.protobuf.Empty`.  If the original method is standard
-        # `Get`/`Create`/`Update`, the response should be the resource.  For other
-        # methods, the response should have the type `XxxResponse`, where `Xxx`
-        # is the original method name.  For example, if the original method name
-        # is `TakeSnapshot()`, the inferred response type is
-        # `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
-    "name": "A String", # The server-assigned name, which is only unique within the same service that
-        # originally returns it. If you use the default HTTP mapping, the
-        # `name` should be a resource name ending with `operations/{unique_id}`.
-  }</pre>
-</div>
-
-<div class="method">
-    <code class="details" id="enable">enable(name, body=None, x__xgafv=None)</code>
-  <pre>Enable a service so that it can be used with a project.
-
-Args:
-  name: string, Name of the consumer and service to enable the service on.
-
-The `EnableService` and `DisableService` methods currently only support
-projects.
-
-Enabling a service requires that the service is public or is shared with
-the user enabling the service.
-
-An example name would be:
-`projects/123/services/serviceusage.googleapis.com` where `123` is the
-project number. (required)
-  body: object, The request body.
-    The object takes the form of:
-
-{ # Request message for the `EnableService` method.
-  }
-
-  x__xgafv: string, V1 error format.
-    Allowed values
-      1 - v1 error format
-      2 - v2 error format
-
-Returns:
-  An object of the form:
-
-    { # This resource represents a long-running operation that is the result of a
-      # network API call.
-    "metadata": { # Service-specific metadata associated with the operation.  It typically
-        # contains progress information and common metadata such as create time.
-        # Some services might not provide such metadata.  Any method that returns a
-        # long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
-    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
-        # different programming environments, including REST APIs and RPC APIs. It is
-        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
-        # three pieces of data: error code, error message, and error details.
-        #
-        # You can find out more about this error model and how to work with it in the
-        # [API Design Guide](https://cloud.google.com/apis/design/errors).
-      "message": "A String", # A developer-facing error message, which should be in English. Any
-          # user-facing error message should be localized and sent in the
-          # google.rpc.Status.details field, or localized by the client.
-      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
-      "details": [ # A list of messages that carry the error details.  There is a common set of
-          # message types for APIs to use.
-        {
-          "a_key": "", # Properties of the object. Contains field @type with type URL.
-        },
-      ],
-    },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress.
-        # If `true`, the operation is completed, and either `error` or `response` is
-        # available.
-    "response": { # The normal response of the operation in case of success.  If the original
-        # method returns no data on success, such as `Delete`, the response is
-        # `google.protobuf.Empty`.  If the original method is standard
-        # `Get`/`Create`/`Update`, the response should be the resource.  For other
-        # methods, the response should have the type `XxxResponse`, where `Xxx`
-        # is the original method name.  For example, if the original method name
-        # is `TakeSnapshot()`, the inferred response type is
-        # `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
-    "name": "A String", # The server-assigned name, which is only unique within the same service that
-        # originally returns it. If you use the default HTTP mapping, the
-        # `name` should be a resource name ending with `operations/{unique_id}`.
-  }</pre>
-</div>
-
-<div class="method">
-    <code class="details" id="get">get(name, x__xgafv=None)</code>
-  <pre>Returns the service configuration and enabled state for a given service.
-
-Args:
-  name: string, Name of the consumer and service to get the `ConsumerState` for.
-
-An example name would be:
-`projects/123/services/serviceusage.googleapis.com` where `123` is the
-project number. (required)
-  x__xgafv: string, V1 error format.
-    Allowed values
-      1 - v1 error format
-      2 - v2 error format
-
-Returns:
-  An object of the form:
-
-    { # A service that is available for use by the consumer.
-    "state": "A String", # Whether or not the service has been enabled for use by the consumer.
-    "config": { # The configuration of the service. # The service configuration of the available service.
-        # Some fields may be filtered out of the configuration in responses to
-        # the `ListServices` method. These fields are present only in responses to
-        # the `GetService` method.
-      "name": "A String", # The DNS address at which this service is available.
-          #
-          # An example DNS address would be:
-          # `calendar.googleapis.com`.
-      "title": "A String", # The product title for this service.
-      "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. Contains only the summary and the
-          # documentation URL.
-          #
-          # Example:
-          # <pre><code>documentation:
-          #   summary: >
-          #     The Google Calendar API gives access
-          #     to most calendar features.
-          #   pages:
-          #   - name: Overview
-          #     content: &#40;== include google/foo/overview.md ==&#41;
-          #   - name: Tutorial
-          #     content: &#40;== include google/foo/tutorial.md ==&#41;
-          #     subpages;
-          #     - name: Java
-          #       content: &#40;== include google/foo/tutorial_java.md ==&#41;
-          #   rules:
-          #   - selector: google.calendar.Calendar.Get
-          #     description: >
-          #       ...
-          #   - selector: google.calendar.Calendar.Put
-          #     description: >
-          #       ...
-          # </code></pre>
-          # Documentation is provided in markdown syntax. In addition to
-          # standard markdown features, definition lists, tables and fenced
-          # code blocks are supported. Section headers can be provided and are
-          # interpreted relative to the section nesting of the context where
-          # a documentation fragment is embedded.
-          #
-          # Documentation from the IDL is merged with documentation defined
-          # via the config at normalization time, where documentation provided
-          # by config rules overrides IDL provided.
-          #
-          # A number of constructs specific to the API platform are supported
-          # in documentation text.
-          #
-          # In order to reference a proto element, the following
-          # notation can be used:
-          # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
-          # To override the display text used for the link, this can be used:
-          # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
-          # Text can be excluded from doc using the following notation:
-          # <pre><code>&#40;-- internal comment --&#41;</code></pre>
-          #
-          # A few directives are available in documentation. Note that
-          # directives must appear on a single line to be properly
-          # identified. The `include` directive includes a markdown file from
-          # an external source:
-          # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
-          # The `resource_for` directive marks a message to be the resource of
-          # a collection in REST view. If it is not specified, tools attempt
-          # to infer the resource from the operations in a collection:
-          # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
-          # The directive `suppress_warning` does not directly affect documentation
-          # and is documented together with service config validation.
-        "rules": [ # A list of documentation rules that apply to individual API elements.
-            #
-            # **NOTE:** All service configuration rules follow "last one wins" order.
-          { # A documentation rule provides information about individual API elements.
-            "description": "A String", # Description of the selected API(s).
-            "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
-                # an element is marked as `deprecated`.
-            "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
-                # qualified name of the element which may end in "*", indicating a wildcard.
-                # Wildcards are only allowed at the end and for a whole component of the
-                # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
-                # wildcard will match one or more components. To specify a default for all
-                # applicable elements, the whole pattern "*" is used.
-          },
-        ],
-        "documentationRootUrl": "A String", # The URL to the root of documentation.
-        "summary": "A String", # A short summary of what the service does. Can only be provided by
-            # plain text.
-        "pages": [ # The top level pages for the documentation set.
-          { # Represents a documentation page. A page can contain subpages to represent
-              # nested documentation set structure.
-            "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path}
-                # ==&#41;</code> to include content from a Markdown file.
-            "subpages": [ # Subpages of this page. The order of subpages specified here will be
-                # honored in the generated docset.
-              # Object with schema name: Page
-            ],
-            "name": "A String", # The name of the page. It will be used as an identity of the page to
-                # generate URI of the page, text of the link to this page in navigation,
-                # etc. The full page name (start from the root page name to this page
-                # concatenated with `.`) can be used as reference to the page in your
-                # documentation. For example:
-                # <pre><code>pages:
-                # - name: Tutorial
-                #   content: &#40;== include tutorial.md ==&#41;
-                #   subpages:
-                #   - name: Java
-                #     content: &#40;== include tutorial_java.md ==&#41;
-                # </code></pre>
-                # You can reference `Java` page using Markdown reference link syntax:
-                # `Java`.
-          },
-        ],
-        "overview": "A String", # Declares a single overview page. For example:
-            # <pre><code>documentation:
-            #   summary: ...
-            #   overview: &#40;== include overview.md ==&#41;
-            # </code></pre>
-            # This is a shortcut for the following declaration (using pages style):
-            # <pre><code>documentation:
-            #   summary: ...
-            #   pages:
-            #   - name: Overview
-            #     content: &#40;== include overview.md ==&#41;
-            # </code></pre>
-            # Note: you cannot specify both `overview` field and `pages` field.
-      },
-      "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
-          # usage.
-          #
-          # The metric based quota configuration works this way:
-          # - The service configuration defines a set of metrics.
-          # - For API calls, the quota.metric_rules maps methods to metrics with
-          #   corresponding costs.
-          # - The quota.limits defines limits on the metrics, which will be used for
-          #   quota checks at runtime.
-          #
-          # An example quota configuration in yaml format:
-          #
-          #    quota:
-          #      limits:
-          #
-          #      - name: apiWriteQpsPerProject
-          #        metric: library.googleapis.com/write_calls
-          #        unit: "1/min/{project}"  # rate limit for consumer projects
-          #        values:
-          #          STANDARD: 10000
-          #
-          #
-          #      # The metric rules bind all methods to the read_calls metric,
-          #      # except for the UpdateBook and DeleteBook methods. These two methods
-          #      # are mapped to the write_calls metric, with the UpdateBook method
-          #      # consuming at twice rate as the DeleteBook method.
-          #      metric_rules:
-          #      - selector: "*"
-          #        metric_costs:
-          #          library.googleapis.com/read_calls: 1
-          #      - selector: google.example.library.v1.LibraryService.UpdateBook
-          #        metric_costs:
-          #          library.googleapis.com/write_calls: 2
-          #      - selector: google.example.library.v1.LibraryService.DeleteBook
-          #        metric_costs:
-          #          library.googleapis.com/write_calls: 1
-          #
-          #  Corresponding Metric definition:
-          #
-          #      metrics:
-          #      - name: library.googleapis.com/read_calls
-          #        display_name: Read requests
-          #        metric_kind: DELTA
-          #        value_type: INT64
-          #
-          #      - name: library.googleapis.com/write_calls
-          #        display_name: Write requests
-          #        metric_kind: DELTA
-          #        value_type: INT64
-          #
-        "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
-            # or more metrics.
-          { # Bind API methods to metrics. Binding a method to a metric causes that
-              # metric's configured quota behaviors to apply to the method call.
-            "metricCosts": { # Metrics to update when the selected methods are called, and the associated
-                # cost applied to each metric.
-                #
-                # The key of the map is the metric name, and the values are the amount
-                # increased for the metric against which the quota limits are defined.
-                # The value must not be negative.
-              "a_key": "A String",
-            },
-            "selector": "A String", # Selects the methods to which this rule applies.
-                #
-                # Refer to selector for syntax details.
-          },
-        ],
-        "limits": [ # List of `QuotaLimit` definitions for the service.
-          { # `QuotaLimit` defines a specific limit that applies over a specified duration
-              # for a limit type. There can be at most one limit for a duration and limit
-              # type combination defined within a `QuotaGroup`.
-            "displayName": "A String", # User-visible display name for this limit.
-                # Optional. If not set, the UI will provide a default display name based on
-                # the quota configuration. This field can be used to override the default
-                # display name generated from the configuration.
-            "name": "A String", # Name of the quota limit.
-                #
-                # The name must be provided, and it must be unique within the service. The
-                # name can only include alphanumeric characters as well as '-'.
-                #
-                # The maximum length of the limit name is 64 characters.
-            "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
-                # duration. This is the number of tokens assigned when a client
-                # application developer activates the service for his/her project.
-                #
-                # Specifying a value of 0 will block all requests. This can be used if you
-                # are provisioning quota to selected consumers and blocking others.
-                # Similarly, a value of -1 will indicate an unlimited quota. No other
-                # negative values are allowed.
-                #
-                # Used by group-based quotas only.
-            "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
-                # the same metric will be checked together during runtime. The metric must be
-                # defined within the service config.
-            "values": { # Tiered limit values. You must specify this as a key:value pair, with an
-                # integer value that is the maximum number of requests allowed for the
-                # specified unit. Currently only STANDARD is supported.
-              "a_key": "A String",
-            },
-            "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
-                # duration. Client application developers can override the default limit up
-                # to this maximum. If specified, this value cannot be set to a value less
-                # than the default limit. If not specified, it is set to the default limit.
-                #
-                # To allow clients to apply overrides with no upper bound, set this to -1,
-                # indicating unlimited maximum quota.
-                #
-                # Used by group-based quotas only.
-            "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
-                # For duration longer than a day, only multiple of days is supported. We
-                # support only "100s" and "1d" for now. Additional support will be added in
-                # the future. "0" indicates indefinite duration.
-                #
-                # Used by group-based quotas only.
-            "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
-                # The free tier is the number of tokens that will be subtracted from the
-                # billed amount when billing is enabled.
-                # This field can only be set on a limit with duration "1d", in a billable
-                # group; it is invalid on any other limit. If this field is not set, it
-                # defaults to 0, indicating that there is no free tier for this service.
-                #
-                # Used by group-based quotas only.
-            "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
-                # Metric.unit. The supported unit kinds are determined by the quota
-                # backend system.
-                #
-                # Here are some examples:
-                # * "1/min/{project}" for quota per minute per project.
-                #
-                # Note: the order of unit components is insignificant.
-                # The "1" at the beginning is required to follow the metric unit syntax.
-            "description": "A String", # Optional. User-visible, extended description for this quota limit.
-                # Should be used only when more context is needed to understand this limit
-                # than provided by the limit's display name (see: `display_name`).
-          },
-        ],
-      },
-      "apis": [ # A list of API interfaces exported by this service. Contains only the names,
-          # versions, and method names of the interfaces.
-        { # Api is a light-weight descriptor for an API Interface.
-            #
-            # Interfaces are also described as "protocol buffer services" in some contexts,
-            # such as by the "service" keyword in a .proto file, but they are different
-            # from API Services, which represent a concrete implementation of an interface
-            # as opposed to simply a description of methods and bindings. They are also
-            # sometimes simply referred to as "APIs" in other contexts, such as the name of
-            # this message itself. See https://cloud.google.com/apis/design/glossary for
-            # detailed terminology.
-          "name": "A String", # The fully qualified name of this interface, including package name
-              # followed by the interface's simple name.
-          "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
-              # message.
-              # protobuf element, like the file in which it is defined.
-            "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
-                # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
-          },
-          "mixins": [ # Included interfaces. See Mixin.
-            { # Declares an API Interface to be included in this interface. The including
-                # interface must redeclare all the methods from the included interface, but
-                # documentation and options are inherited as follows:
-                #
-                # - If after comment and whitespace stripping, the documentation
-                #   string of the redeclared method is empty, it will be inherited
-                #   from the original method.
-                #
-                # - Each annotation belonging to the service config (http,
-                #   visibility) which is not set in the redeclared method will be
-                #   inherited.
-                #
-                # - If an http annotation is inherited, the path pattern will be
-                #   modified as follows. Any version prefix will be replaced by the
-                #   version of the including interface plus the root path if
-                #   specified.
-                #
-                # Example of a simple mixin:
-                #
-                #     package google.acl.v1;
-                #     service AccessControl {
-                #       // Get the underlying ACL object.
-                #       rpc GetAcl(GetAclRequest) returns (Acl) {
-                #         option (google.api.http).get = "/v1/{resource=**}:getAcl";
-                #       }
-                #     }
-                #
-                #     package google.storage.v2;
-                #     service Storage {
-                #       //       rpc GetAcl(GetAclRequest) returns (Acl);
-                #
-                #       // Get a data record.
-                #       rpc GetData(GetDataRequest) returns (Data) {
-                #         option (google.api.http).get = "/v2/{resource=**}";
-                #       }
-                #     }
-                #
-                # Example of a mixin configuration:
-                #
-                #     apis:
-                #     - name: google.storage.v2.Storage
-                #       mixins:
-                #       - name: google.acl.v1.AccessControl
-                #
-                # The mixin construct implies that all methods in `AccessControl` are
-                # also declared with same name and request/response types in
-                # `Storage`. A documentation generator or annotation processor will
-                # see the effective `Storage.GetAcl` method after inherting
-                # documentation and annotations as follows:
-                #
-                #     service Storage {
-                #       // Get the underlying ACL object.
-                #       rpc GetAcl(GetAclRequest) returns (Acl) {
-                #         option (google.api.http).get = "/v2/{resource=**}:getAcl";
-                #       }
-                #       ...
-                #     }
-                #
-                # Note how the version in the path pattern changed from `v1` to `v2`.
-                #
-                # If the `root` field in the mixin is specified, it should be a
-                # relative path under which inherited HTTP paths are placed. Example:
-                #
-                #     apis:
-                #     - name: google.storage.v2.Storage
-                #       mixins:
-                #       - name: google.acl.v1.AccessControl
-                #         root: acls
-                #
-                # This implies the following inherited HTTP annotation:
-                #
-                #     service Storage {
-                #       // Get the underlying ACL object.
-                #       rpc GetAcl(GetAclRequest) returns (Acl) {
-                #         option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
-                #       }
-                #       ...
-                #     }
-              "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
-                  # are rooted.
-              "name": "A String", # The fully qualified name of the interface which is included.
-            },
-          ],
-          "syntax": "A String", # The source syntax of the service.
-          "version": "A String", # A version string for this interface. If specified, must have the form
-              # `major-version.minor-version`, as in `1.10`. If the minor version is
-              # omitted, it defaults to zero. If the entire version field is empty, the
-              # major version is derived from the package name, as outlined below. If the
-              # field is not empty, the version in the package name will be verified to be
-              # consistent with what is provided here.
-              #
-              # The versioning schema uses [semantic
-              # versioning](http://semver.org) where the major version number
-              # indicates a breaking change and the minor version an additive,
-              # non-breaking change. Both version numbers are signals to users
-              # what to expect from different versions, and should be carefully
-              # chosen based on the product plan.
-              #
-              # The major version is also reflected in the package name of the
-              # interface, which must end in `v<major-version>`, as in
-              # `google.feature.v1`. For major versions 0 and 1, the suffix can
-              # be omitted. Zero major versions must only be used for
-              # experimental, non-GA interfaces.
-          "options": [ # Any metadata attached to the interface.
-            { # A protocol buffer option, which can be attached to a message, field,
-                # enumeration, etc.
-              "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                  # For custom options, it should be the fully-qualified name. For example,
-                  # `"google.api.http"`.
-              "value": { # The option's value packed in an Any message. If the value is a primitive,
-                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                  # should be used. If the value is an enum, it should be stored as an int32
-                  # value using the google.protobuf.Int32Value type.
-                "a_key": "", # Properties of the object. Contains field @type with type URL.
-              },
-            },
-          ],
-          "methods": [ # The methods of this interface, in unspecified order.
-            { # Method represents a method of an API interface.
-              "name": "A String", # The simple name of this method.
-              "requestStreaming": True or False, # If true, the request is streamed.
-              "responseTypeUrl": "A String", # The URL of the output message type.
-              "requestTypeUrl": "A String", # A URL of the input message type.
-              "responseStreaming": True or False, # If true, the response is streamed.
-              "syntax": "A String", # The source syntax of this method.
-              "options": [ # Any metadata attached to the method.
-                { # A protocol buffer option, which can be attached to a message, field,
-                    # enumeration, etc.
-                  "name": "A String", # The option's name. For protobuf built-in options (options defined in
-                      # descriptor.proto), this is the short name. For example, `"map_entry"`.
-                      # For custom options, it should be the fully-qualified name. For example,
-                      # `"google.api.http"`.
-                  "value": { # The option's value packed in an Any message. If the value is a primitive,
-                      # the corresponding wrapper type defined in google/protobuf/wrappers.proto
-                      # should be used. If the value is an enum, it should be stored as an int32
-                      # value using the google.protobuf.Int32Value type.
-                    "a_key": "", # Properties of the object. Contains field @type with type URL.
-                  },
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. Contains only the OAuth rules.
-          #
-          # Example for an API targeted for external use:
-          #
-          #     name: calendar.googleapis.com
-          #     authentication:
-          #       providers:
-          #       - id: google_calendar_auth
-          #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
-          #         issuer: https://securetoken.google.com
-          #       rules:
-          #       - selector: "*"
-          #         requirements:
-          #           provider_id: google_calendar_auth
-        "rules": [ # A list of authentication rules that apply to individual API methods.
-            #
-            # **NOTE:** All service configuration rules follow "last one wins" order.
-          { # Authentication rules for the service.
-              #
-              # By default, if a method has any authentication requirements, every request
-              # must include a valid credential matching one of the requirements.
-              # It's an error to include more than one kind of credential in a single
-              # request.
-              #
-              # If a method doesn't have any auth requirements, request credentials will be
-              # ignored.
-            "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
-                # there are scopes defined for "Read-only access to Google Calendar" and
-                # "Access to Cloud Platform". Users can consent to a scope for an application,
-                # giving it permission to access that data on their behalf.
-                #
-                # OAuth scope specifications should be fairly coarse grained; a user will need
-                # to see and understand the text description of what your scope means.
-                #
-                # In most cases: use one or at most two OAuth scopes for an entire family of
-                # products. If your product has multiple APIs, you should probably be sharing
-                # the OAuth scope across all of those APIs.
-                #
-                # When you need finer grained OAuth consent screens: talk with your product
-                # management about how developers will use them in practice.
-                #
-                # Please note that even though each of the canonical scopes is enough for a
-                # request to be accepted and passed to the backend, a request can still fail
-                # due to the backend requiring additional scopes or permissions.
-              "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
-                  # OAuth token containing any of these scopes will be accepted.
-                  #
-                  # Example:
-                  #
-                  #      canonical_scopes: https://www.googleapis.com/auth/calendar,
-                  #                        https://www.googleapis.com/auth/calendar.read
-            },
-            "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
-            "requirements": [ # Requirements for additional authentication providers.
-              { # User-defined authentication requirements, including support for
-                  # [JSON Web Token
-                  # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
-                "providerId": "A String", # id from authentication provider.
-                    #
-                    # Example:
-                    #
-                    #     provider_id: bookstore_auth
-                "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
-                    # implemented and accepted in all the runtime components.
-                    #
-                    # The list of JWT
-                    # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
-                    # that are allowed to access. A JWT containing any of these audiences will
-                    # be accepted. When this setting is absent, only JWTs with audience
-                    # "https://Service_name/API_name"
-                    # will be accepted. For example, if no audiences are in the setting,
-                    # LibraryService API will only accept JWTs with the following audience
-                    # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
-                    #
-                    # Example:
-                    #
-                    #     audiences: bookstore_android.apps.googleusercontent.com,
-                    #                bookstore_web.apps.googleusercontent.com
-              },
-            ],
-            "selector": "A String", # Selects the methods to which this rule applies.
-                #
-                # Refer to selector for syntax details.
-          },
-        ],
-        "providers": [ # Defines a set of authentication providers that a service supports.
-          { # Configuration for an authentication provider, including support for
-              # [JSON Web Token
-              # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
-            "audiences": "A String", # The list of JWT
-                # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
-                # that are allowed to access. A JWT containing any of these audiences will
-                # be accepted. When this setting is absent, only JWTs with audience
-                # "https://Service_name/API_name"
-                # will be accepted. For example, if no audiences are in the setting,
-                # LibraryService API will only accept JWTs with the following audience
-                # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
-                #
-                # Example:
-                #
-                #     audiences: bookstore_android.apps.googleusercontent.com,
-                #                bookstore_web.apps.googleusercontent.com
-            "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
-                # [OpenID
-                # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
-                # Optional if the key set document:
-                #  - can be retrieved from
-                #    [OpenID
-                #    Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
-                #    the issuer.
-                #  - can be inferred from the email domain of the issuer (e.g. a Google
-                #  service account).
-                #
-                # Example: https://www.googleapis.com/oauth2/v1/certs
-            "id": "A String", # The unique identifier of the auth provider. It will be referred to by
-                # `AuthRequirement.provider_id`.
-                #
-                # Example: "bookstore_auth".
-            "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
-                # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
-            "issuer": "A String", # Identifies the principal that issued the JWT. See
-                # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
-                # Usually a URL or an email address.
-                #
-                # Example: https://securetoken.google.com
-                # Example: 1234567-compute@developer.gserviceaccount.com
-          },
-        ],
-      },
-      "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
-        "rules": [ # A list of usage rules that apply to individual API methods.
-            #
-            # **NOTE:** All service configuration rules follow "last one wins" order.
-          { # Usage configuration rules for the service.
-              #
-              # NOTE: Under development.
-              #
-              #
-              # Use this rule to configure unregistered calls for the service. Unregistered
-              # calls are calls that do not contain consumer project identity.
-              # (Example: calls that do not contain an API key).
-              # By default, API methods do not allow unregistered calls, and each method call
-              # must be identified by a consumer project identity. Use this rule to
-              # allow/disallow unregistered calls.
-              #
-              # Example of an API that wants to allow unregistered calls for entire service.
-              #
-              #     usage:
-              #       rules:
-              #       - selector: "*"
-              #         allow_unregistered_calls: true
-              #
-              # Example of a method that wants to allow unregistered calls.
-              #
-              #     usage:
-              #       rules:
-              #       - selector: "google.example.library.v1.LibraryService.CreateBook"
-              #         allow_unregistered_calls: true
-            "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
-                # methods in all APIs.
-                #
-                # Refer to selector for syntax details.
-            "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
-                # plane features, such as quota and billing, will not be available.
-                # This flag is used by Google Cloud Endpoints to bypass checks for internal
-                # methods, such as service health check methods.
-            "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
-                # that don't identify any user or application.
-          },
-        ],
-        "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
-            # service producer.
-            #
-            # Google Service Management currently only supports
-            # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
-            # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
-            # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
-            # documented in https://cloud.google.com/pubsub/docs/overview.
-        "requirements": [ # Requirements that must be satisfied before a consumer project can use the
-            # service. Each requirement is of the form <service.name>/<requirement-id>;
-            # for example 'serviceusage.googleapis.com/billing-enabled'.
-          "A String",
-        ],
-      },
-      "endpoints": [ # Configuration for network endpoints. Contains only the names and aliases
-          # of the endpoints.
-        { # `Endpoint` describes a network endpoint that serves a set of APIs.
-            # A service may expose any number of endpoints, and all endpoints share the
-            # same service configuration, such as quota configuration and monitoring
-            # configuration.
-            #
-            # Example service configuration:
-            #
-            #     name: library-example.googleapis.com
-            #     endpoints:
-            #       # Below entry makes 'google.example.library.v1.Library'
-            #       # API be served from endpoint address library-example.googleapis.com.
-            #       # It also allows HTTP OPTIONS calls to be passed to the backend, for
-            #       # it to decide whether the subsequent cross-origin request is
-            #       # allowed to proceed.
-            #     - name: library-example.googleapis.com
-            #       allow_cors: true
-          "allowCors": True or False, # Allowing
-              # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
-              # cross-domain traffic, would allow the backends served from this endpoint to
-              # receive and respond to HTTP OPTIONS requests. The response will be used by
-              # the browser to determine whether the subsequent cross-origin request is
-              # allowed to proceed.
-          "target": "A String", # The specification of an Internet routable address of API frontend that will
-              # handle requests to this [API
-              # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
-              # either a valid IPv4 address or a fully-qualified domain name. For example,
-              # "8.8.8.8" or "myservice.appspot.com".
-          "features": [ # The list of features enabled on this endpoint.
-            "A String",
-          ],
-          "name": "A String", # The canonical name of this endpoint.
-          "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
-              # please specify multiple google.api.Endpoint for each of the intended
-              # aliases.
-              #
-              # Additional names that this endpoint will be hosted on.
-            "A String",
-          ],
-        },
-      ],
-    },
-    "name": "A String", # The resource name of the consumer and service.
-        #
-        # A valid name would be:
-        # - projects/123/services/serviceusage.googleapis.com
-    "parent": "A String", # The resource name of the consumer.
-        #
-        # A valid name would be:
-        # - projects/123
-  }</pre>
-</div>
-
-<div class="method">
-    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None, filter=None)</code>
-  <pre>List all services available to the specified project, and the current
-state of those services with respect to the project. The list includes
-all public services, all services for which the calling user has the
-`servicemanagement.services.bind` permission, and all services that have
-already been enabled on the project. The list can be filtered to
-only include services in a specific state, for example to only include
-services enabled on the project.
-
-Args:
-  parent: string, Parent to search for services on.
-
-An example name would be:
-`projects/123` where `123` is the project number. (required)
-  pageSize: integer, Requested size of the next page of data.
-Requested page size cannot exceed 200.
- If not set, the default page size is 50.
-  pageToken: string, Token identifying which result to start with, which is returned by a
-previous list call.
-  x__xgafv: string, V1 error format.
-    Allowed values
-      1 - v1 error format
-      2 - v2 error format
-  filter: string, Only list services that conform to the given filter.
-The allowed filter strings are `state:ENABLED` and `state:DISABLED`.
-
-Returns:
-  An object of the form:
-
-    { # Response message for the `ListServices` method.
-    "services": [ # The available services for the requested project.
+    { # Response message for the `BatchGetServices` method.
+    "services": [ # The requested Service states.
       { # A service that is available for use by the consumer.
         "state": "A String", # Whether or not the service has been enabled for use by the consumer.
         "config": { # The configuration of the service. # The service configuration of the available service.
@@ -1066,26 +223,26 @@
               # documentation URL.
               #
               # Example:
-              # <pre><code>documentation:
-              #   summary: >
+              # &lt;pre&gt;&lt;code&gt;documentation:
+              #   summary: &gt;
               #     The Google Calendar API gives access
               #     to most calendar features.
               #   pages:
               #   - name: Overview
-              #     content: &#40;== include google/foo/overview.md ==&#41;
+              #     content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
               #   - name: Tutorial
-              #     content: &#40;== include google/foo/tutorial.md ==&#41;
+              #     content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
               #     subpages;
               #     - name: Java
-              #       content: &#40;== include google/foo/tutorial_java.md ==&#41;
+              #       content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
               #   rules:
               #   - selector: google.calendar.Calendar.Get
-              #     description: >
+              #     description: &gt;
               #       ...
               #   - selector: google.calendar.Calendar.Put
-              #     description: >
+              #     description: &gt;
               #       ...
-              # </code></pre>
+              # &lt;/code&gt;&lt;/pre&gt;
               # Documentation is provided in markdown syntax. In addition to
               # standard markdown features, definition lists, tables and fenced
               # code blocks are supported. Section headers can be provided and are
@@ -1101,21 +258,21 @@
               #
               # In order to reference a proto element, the following
               # notation can be used:
-              # <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
+              # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
               # To override the display text used for the link, this can be used:
-              # <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre>
+              # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
               # Text can be excluded from doc using the following notation:
-              # <pre><code>&#40;-- internal comment --&#41;</code></pre>
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
               #
               # A few directives are available in documentation. Note that
               # directives must appear on a single line to be properly
               # identified. The `include` directive includes a markdown file from
               # an external source:
-              # <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
               # The `resource_for` directive marks a message to be the resource of
               # a collection in REST view. If it is not specified, tools attempt
               # to infer the resource from the operations in a collection:
-              # <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre>
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
               # The directive `suppress_warning` does not directly affect documentation
               # and is documented together with service config validation.
             "rules": [ # A list of documentation rules that apply to individual API elements.
@@ -1136,11 +293,28 @@
             "documentationRootUrl": "A String", # The URL to the root of documentation.
             "summary": "A String", # A short summary of what the service does. Can only be provided by
                 # plain text.
+            "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
+                # from the yaml file) is not suitable. This can be seen in any fully
+                # specified service urls as well as sections that show a base that other
+                # urls are relative to.
+            "overview": "A String", # Declares a single overview page. For example:
+                # &lt;pre&gt;&lt;code&gt;documentation:
+                #   summary: ...
+                #   overview: &amp;#40;== include overview.md ==&amp;#41;
+                # &lt;/code&gt;&lt;/pre&gt;
+                # This is a shortcut for the following declaration (using pages style):
+                # &lt;pre&gt;&lt;code&gt;documentation:
+                #   summary: ...
+                #   pages:
+                #   - name: Overview
+                #     content: &amp;#40;== include overview.md ==&amp;#41;
+                # &lt;/code&gt;&lt;/pre&gt;
+                # Note: you cannot specify both `overview` field and `pages` field.
             "pages": [ # The top level pages for the documentation set.
               { # Represents a documentation page. A page can contain subpages to represent
                   # nested documentation set structure.
-                "content": "A String", # The Markdown content of the page. You can use <code>&#40;== include {path}
-                    # ==&#41;</code> to include content from a Markdown file.
+                "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
+                    # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
                 "subpages": [ # Subpages of this page. The order of subpages specified here will be
                     # honored in the generated docset.
                   # Object with schema name: Page
@@ -1150,30 +324,17 @@
                     # etc. The full page name (start from the root page name to this page
                     # concatenated with `.`) can be used as reference to the page in your
                     # documentation. For example:
-                    # <pre><code>pages:
+                    # &lt;pre&gt;&lt;code&gt;pages:
                     # - name: Tutorial
-                    #   content: &#40;== include tutorial.md ==&#41;
+                    #   content: &amp;#40;== include tutorial.md ==&amp;#41;
                     #   subpages:
                     #   - name: Java
-                    #     content: &#40;== include tutorial_java.md ==&#41;
-                    # </code></pre>
+                    #     content: &amp;#40;== include tutorial_java.md ==&amp;#41;
+                    # &lt;/code&gt;&lt;/pre&gt;
                     # You can reference `Java` page using Markdown reference link syntax:
                     # `Java`.
               },
             ],
-            "overview": "A String", # Declares a single overview page. For example:
-                # <pre><code>documentation:
-                #   summary: ...
-                #   overview: &#40;== include overview.md ==&#41;
-                # </code></pre>
-                # This is a shortcut for the following declaration (using pages style):
-                # <pre><code>documentation:
-                #   summary: ...
-                #   pages:
-                #   - name: Overview
-                #     content: &#40;== include overview.md ==&#41;
-                # </code></pre>
-                # Note: you cannot specify both `overview` field and `pages` field.
           },
           "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
               # usage.
@@ -1250,12 +411,9 @@
                     # Optional. If not set, the UI will provide a default display name based on
                     # the quota configuration. This field can be used to override the default
                     # display name generated from the configuration.
-                "name": "A String", # Name of the quota limit.
-                    #
-                    # The name must be provided, and it must be unique within the service. The
-                    # name can only include alphanumeric characters as well as '-'.
-                    #
-                    # The maximum length of the limit name is 64 characters.
+                "description": "A String", # Optional. User-visible, extended description for this quota limit.
+                    # Should be used only when more context is needed to understand this limit
+                    # than provided by the limit's display name (see: `display_name`).
                 "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
                     # duration. This is the number of tokens assigned when a client
                     # application developer activates the service for his/her project.
@@ -1283,10 +441,7 @@
                     # indicating unlimited maximum quota.
                     #
                     # Used by group-based quotas only.
-                "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d".
-                    # For duration longer than a day, only multiple of days is supported. We
-                    # support only "100s" and "1d" for now. Additional support will be added in
-                    # the future. "0" indicates indefinite duration.
+                "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
                     #
                     # Used by group-based quotas only.
                 "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
@@ -1306,9 +461,12 @@
                     #
                     # Note: the order of unit components is insignificant.
                     # The "1" at the beginning is required to follow the metric unit syntax.
-                "description": "A String", # Optional. User-visible, extended description for this quota limit.
-                    # Should be used only when more context is needed to understand this limit
-                    # than provided by the limit's display name (see: `display_name`).
+                "name": "A String", # Name of the quota limit.
+                    #
+                    # The name must be provided, and it must be unique within the service. The
+                    # name can only include alphanumeric characters as well as '-'.
+                    #
+                    # The maximum length of the limit name is 64 characters.
               },
             ],
           },
@@ -1431,7 +589,7 @@
                   # chosen based on the product plan.
                   #
                   # The major version is also reflected in the package name of the
-                  # interface, which must end in `v<major-version>`, as in
+                  # interface, which must end in `v&lt;major-version&gt;`, as in
                   # `google.feature.v1`. For major versions 0 and 1, the suffix can
                   # be omitted. Zero major versions must only be used for
                   # experimental, non-GA interfaces.
@@ -1566,14 +724,48 @@
               { # Configuration for an authentication provider, including support for
                   # [JSON Web Token
                   # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+                "jwtLocations": [ # Defines the locations to extract the JWT.
+                    #
+                    # JWT locations can be either from HTTP headers or URL query parameters.
+                    # The rule is that the first match wins. The checking order is: checking
+                    # all headers first, then URL query parameters.
+                    #
+                    # If not specified,  default to use following 3 locations:
+                    #    1) Authorization: Bearer
+                    #    2) x-goog-iap-jwt-assertion
+                    #    3) access_token query parameter
+                    #
+                    # Default locations can be specified as followings:
+                    #    jwt_locations:
+                    #    - header: Authorization
+                    #      value_prefix: "Bearer "
+                    #    - header: x-goog-iap-jwt-assertion
+                    #    - query: access_token
+                  { # Specifies a location to extract JWT from an API request.
+                    "query": "A String", # Specifies URL query parameter name to extract JWT token.
+                    "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
+                        # Only applies to "in" header type. Must be empty for "in" query type.
+                        # If not empty, the header value has to match (case sensitive) this prefix.
+                        # If not matched, JWT will not be extracted. If matched, JWT will be
+                        # extracted after the prefix is removed.
+                        #
+                        # For example, for "Authorization: Bearer {JWT}",
+                        # value_prefix="Bearer " with a space at the end.
+                    "header": "A String", # Specifies HTTP header name to extract JWT token.
+                  },
+                ],
                 "audiences": "A String", # The list of JWT
                     # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                     # that are allowed to access. A JWT containing any of these audiences will
-                    # be accepted. When this setting is absent, only JWTs with audience
-                    # "https://Service_name/API_name"
-                    # will be accepted. For example, if no audiences are in the setting,
-                    # LibraryService API will only accept JWTs with the following audience
-                    # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+                    # be accepted. When this setting is absent, JWTs with audiences:
+                    #   - "https://[service.name]/[google.protobuf.Api.name]"
+                    #   - "https://[service.name]/"
+                    # will be accepted.
+                    # For example, if no audiences are in the setting, LibraryService API will
+                    # accept JWTs with the following audiences:
+                    #   -
+                    #   https://library-example.googleapis.com/google.example.library.v1.LibraryService
+                    #   - https://library-example.googleapis.com/
                     #
                     # Example:
                     #
@@ -1647,6 +839,26 @@
                     # that don't identify any user or application.
               },
             ],
+            "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
+                #
+                #
+                # Use this field to configure per-product per-project service identity.
+                # Example of a service identity configuration.
+                #
+                #     usage:
+                #       service_identity:
+                #       - service_account_parent: "projects/123456789"
+                #         display_name: "Cloud XXX Service Agent"
+                #         description: "Used as the identity of Cloud XXX to access resources"
+              "displayName": "A String", # Optional. A user-specified name for the service account.
+                  # Must be less than or equal to 100 UTF-8 bytes.
+              "description": "A String", # Optional. A user-specified opaque description of the service account.
+                  # Must be less than or equal to 256 UTF-8 bytes.
+              "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
+                  #
+                  # An example name would be:
+                  # `projects/123456789`
+            },
             "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
                 # service producer.
                 #
@@ -1656,7 +868,1654 @@
                 # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
                 # documented in https://cloud.google.com/pubsub/docs/overview.
             "requirements": [ # Requirements that must be satisfied before a consumer project can use the
-                # service. Each requirement is of the form <service.name>/<requirement-id>;
+                # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
+                # for example 'serviceusage.googleapis.com/billing-enabled'.
+              "A String",
+            ],
+          },
+          "endpoints": [ # Configuration for network endpoints. Contains only the names and aliases
+              # of the endpoints.
+            { # `Endpoint` describes a network endpoint that serves a set of APIs.
+                # A service may expose any number of endpoints, and all endpoints share the
+                # same service configuration, such as quota configuration and monitoring
+                # configuration.
+                #
+                # Example service configuration:
+                #
+                #     name: library-example.googleapis.com
+                #     endpoints:
+                #       # Below entry makes 'google.example.library.v1.Library'
+                #       # API be served from endpoint address library-example.googleapis.com.
+                #       # It also allows HTTP OPTIONS calls to be passed to the backend, for
+                #       # it to decide whether the subsequent cross-origin request is
+                #       # allowed to proceed.
+                #     - name: library-example.googleapis.com
+                #       allow_cors: true
+              "allowCors": True or False, # Allowing
+                  # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
+                  # cross-domain traffic, would allow the backends served from this endpoint to
+                  # receive and respond to HTTP OPTIONS requests. The response will be used by
+                  # the browser to determine whether the subsequent cross-origin request is
+                  # allowed to proceed.
+              "target": "A String", # The specification of an Internet routable address of API frontend that will
+                  # handle requests to this [API
+                  # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
+                  # either a valid IPv4 address or a fully-qualified domain name. For example,
+                  # "8.8.8.8" or "myservice.appspot.com".
+              "features": [ # The list of features enabled on this endpoint.
+                "A String",
+              ],
+              "name": "A String", # The canonical name of this endpoint.
+              "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
+                  # please specify multiple google.api.Endpoint for each of the intended
+                  # aliases.
+                  #
+                  # Additional names that this endpoint will be hosted on.
+                "A String",
+              ],
+            },
+          ],
+        },
+        "name": "A String", # The resource name of the consumer and service.
+            #
+            # A valid name would be:
+            # - projects/123/services/serviceusage.googleapis.com
+        "parent": "A String", # The resource name of the consumer.
+            #
+            # A valid name would be:
+            # - projects/123
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="disable">disable(name, body=None, x__xgafv=None)</code>
+  <pre>Disable a service so that it can no longer be used with a project.
+This prevents unintended usage that may cause unexpected billing
+charges or security leaks.
+
+It is not valid to call the disable method on a service that is not
+currently enabled. Callers will receive a `FAILED_PRECONDITION` status if
+the target service is not currently enabled.
+
+Args:
+  name: string, Name of the consumer and service to disable the service on.
+
+The enable and disable methods currently only support projects.
+
+An example name would be:
+`projects/123/services/serviceusage.googleapis.com` where `123` is the
+project number. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the `DisableService` method.
+    "disableDependentServices": True or False, # Indicates if services that are enabled and which depend on this service
+        # should also be disabled. If not set, an error will be generated if any
+        # enabled services depend on the service to be disabled. When set, the
+        # service, and any enabled services that depend on it, will be disabled
+        # together.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a
+      # network API call.
+    "response": { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "metadata": { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "done": True or False, # If the value is `false`, it means the operation is still in progress.
+        # If `true`, the operation is completed, and either `error` or `response` is
+        # available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should be a resource name ending with `operations/{unique_id}`.
+    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
+        # different programming environments, including REST APIs and RPC APIs. It is
+        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
+        # three pieces of data: error code, error message, and error details.
+        #
+        # You can find out more about this error model and how to work with it in the
+        # [API Design Guide](https://cloud.google.com/apis/design/errors).
+      "message": "A String", # A developer-facing error message, which should be in English. Any
+          # user-facing error message should be localized and sent in the
+          # google.rpc.Status.details field, or localized by the client.
+      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
+      "details": [ # A list of messages that carry the error details.  There is a common set of
+          # message types for APIs to use.
+        {
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+      ],
+    },
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="enable">enable(name, body=None, x__xgafv=None)</code>
+  <pre>Enable a service so that it can be used with a project.
+
+Args:
+  name: string, Name of the consumer and service to enable the service on.
+
+The `EnableService` and `DisableService` methods currently only support
+projects.
+
+Enabling a service requires that the service is public or is shared with
+the user enabling the service.
+
+An example name would be:
+`projects/123/services/serviceusage.googleapis.com` where `123` is the
+project number. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the `EnableService` method.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a
+      # network API call.
+    "response": { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "metadata": { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "done": True or False, # If the value is `false`, it means the operation is still in progress.
+        # If `true`, the operation is completed, and either `error` or `response` is
+        # available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should be a resource name ending with `operations/{unique_id}`.
+    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
+        # different programming environments, including REST APIs and RPC APIs. It is
+        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
+        # three pieces of data: error code, error message, and error details.
+        #
+        # You can find out more about this error model and how to work with it in the
+        # [API Design Guide](https://cloud.google.com/apis/design/errors).
+      "message": "A String", # A developer-facing error message, which should be in English. Any
+          # user-facing error message should be localized and sent in the
+          # google.rpc.Status.details field, or localized by the client.
+      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
+      "details": [ # A list of messages that carry the error details.  There is a common set of
+          # message types for APIs to use.
+        {
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+      ],
+    },
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(name, x__xgafv=None)</code>
+  <pre>Returns the service configuration and enabled state for a given service.
+
+Args:
+  name: string, Name of the consumer and service to get the `ConsumerState` for.
+
+An example name would be:
+`projects/123/services/serviceusage.googleapis.com` where `123` is the
+project number. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A service that is available for use by the consumer.
+    "state": "A String", # Whether or not the service has been enabled for use by the consumer.
+    "config": { # The configuration of the service. # The service configuration of the available service.
+        # Some fields may be filtered out of the configuration in responses to
+        # the `ListServices` method. These fields are present only in responses to
+        # the `GetService` method.
+      "name": "A String", # The DNS address at which this service is available.
+          #
+          # An example DNS address would be:
+          # `calendar.googleapis.com`.
+      "title": "A String", # The product title for this service.
+      "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. Contains only the summary and the
+          # documentation URL.
+          #
+          # Example:
+          # &lt;pre&gt;&lt;code&gt;documentation:
+          #   summary: &gt;
+          #     The Google Calendar API gives access
+          #     to most calendar features.
+          #   pages:
+          #   - name: Overview
+          #     content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
+          #   - name: Tutorial
+          #     content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
+          #     subpages;
+          #     - name: Java
+          #       content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
+          #   rules:
+          #   - selector: google.calendar.Calendar.Get
+          #     description: &gt;
+          #       ...
+          #   - selector: google.calendar.Calendar.Put
+          #     description: &gt;
+          #       ...
+          # &lt;/code&gt;&lt;/pre&gt;
+          # Documentation is provided in markdown syntax. In addition to
+          # standard markdown features, definition lists, tables and fenced
+          # code blocks are supported. Section headers can be provided and are
+          # interpreted relative to the section nesting of the context where
+          # a documentation fragment is embedded.
+          #
+          # Documentation from the IDL is merged with documentation defined
+          # via the config at normalization time, where documentation provided
+          # by config rules overrides IDL provided.
+          #
+          # A number of constructs specific to the API platform are supported
+          # in documentation text.
+          #
+          # In order to reference a proto element, the following
+          # notation can be used:
+          # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
+          # To override the display text used for the link, this can be used:
+          # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
+          # Text can be excluded from doc using the following notation:
+          # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+          #
+          # A few directives are available in documentation. Note that
+          # directives must appear on a single line to be properly
+          # identified. The `include` directive includes a markdown file from
+          # an external source:
+          # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+          # The `resource_for` directive marks a message to be the resource of
+          # a collection in REST view. If it is not specified, tools attempt
+          # to infer the resource from the operations in a collection:
+          # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+          # The directive `suppress_warning` does not directly affect documentation
+          # and is documented together with service config validation.
+        "rules": [ # A list of documentation rules that apply to individual API elements.
+            #
+            # **NOTE:** All service configuration rules follow "last one wins" order.
+          { # A documentation rule provides information about individual API elements.
+            "description": "A String", # Description of the selected API(s).
+            "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
+                # an element is marked as `deprecated`.
+            "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
+                # qualified name of the element which may end in "*", indicating a wildcard.
+                # Wildcards are only allowed at the end and for a whole component of the
+                # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
+                # wildcard will match one or more components. To specify a default for all
+                # applicable elements, the whole pattern "*" is used.
+          },
+        ],
+        "documentationRootUrl": "A String", # The URL to the root of documentation.
+        "summary": "A String", # A short summary of what the service does. Can only be provided by
+            # plain text.
+        "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
+            # from the yaml file) is not suitable. This can be seen in any fully
+            # specified service urls as well as sections that show a base that other
+            # urls are relative to.
+        "overview": "A String", # Declares a single overview page. For example:
+            # &lt;pre&gt;&lt;code&gt;documentation:
+            #   summary: ...
+            #   overview: &amp;#40;== include overview.md ==&amp;#41;
+            # &lt;/code&gt;&lt;/pre&gt;
+            # This is a shortcut for the following declaration (using pages style):
+            # &lt;pre&gt;&lt;code&gt;documentation:
+            #   summary: ...
+            #   pages:
+            #   - name: Overview
+            #     content: &amp;#40;== include overview.md ==&amp;#41;
+            # &lt;/code&gt;&lt;/pre&gt;
+            # Note: you cannot specify both `overview` field and `pages` field.
+        "pages": [ # The top level pages for the documentation set.
+          { # Represents a documentation page. A page can contain subpages to represent
+              # nested documentation set structure.
+            "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
+                # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
+            "subpages": [ # Subpages of this page. The order of subpages specified here will be
+                # honored in the generated docset.
+              # Object with schema name: Page
+            ],
+            "name": "A String", # The name of the page. It will be used as an identity of the page to
+                # generate URI of the page, text of the link to this page in navigation,
+                # etc. The full page name (start from the root page name to this page
+                # concatenated with `.`) can be used as reference to the page in your
+                # documentation. For example:
+                # &lt;pre&gt;&lt;code&gt;pages:
+                # - name: Tutorial
+                #   content: &amp;#40;== include tutorial.md ==&amp;#41;
+                #   subpages:
+                #   - name: Java
+                #     content: &amp;#40;== include tutorial_java.md ==&amp;#41;
+                # &lt;/code&gt;&lt;/pre&gt;
+                # You can reference `Java` page using Markdown reference link syntax:
+                # `Java`.
+          },
+        ],
+      },
+      "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+          # usage.
+          #
+          # The metric based quota configuration works this way:
+          # - The service configuration defines a set of metrics.
+          # - For API calls, the quota.metric_rules maps methods to metrics with
+          #   corresponding costs.
+          # - The quota.limits defines limits on the metrics, which will be used for
+          #   quota checks at runtime.
+          #
+          # An example quota configuration in yaml format:
+          #
+          #    quota:
+          #      limits:
+          #
+          #      - name: apiWriteQpsPerProject
+          #        metric: library.googleapis.com/write_calls
+          #        unit: "1/min/{project}"  # rate limit for consumer projects
+          #        values:
+          #          STANDARD: 10000
+          #
+          #
+          #      # The metric rules bind all methods to the read_calls metric,
+          #      # except for the UpdateBook and DeleteBook methods. These two methods
+          #      # are mapped to the write_calls metric, with the UpdateBook method
+          #      # consuming at twice rate as the DeleteBook method.
+          #      metric_rules:
+          #      - selector: "*"
+          #        metric_costs:
+          #          library.googleapis.com/read_calls: 1
+          #      - selector: google.example.library.v1.LibraryService.UpdateBook
+          #        metric_costs:
+          #          library.googleapis.com/write_calls: 2
+          #      - selector: google.example.library.v1.LibraryService.DeleteBook
+          #        metric_costs:
+          #          library.googleapis.com/write_calls: 1
+          #
+          #  Corresponding Metric definition:
+          #
+          #      metrics:
+          #      - name: library.googleapis.com/read_calls
+          #        display_name: Read requests
+          #        metric_kind: DELTA
+          #        value_type: INT64
+          #
+          #      - name: library.googleapis.com/write_calls
+          #        display_name: Write requests
+          #        metric_kind: DELTA
+          #        value_type: INT64
+          #
+        "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+            # or more metrics.
+          { # Bind API methods to metrics. Binding a method to a metric causes that
+              # metric's configured quota behaviors to apply to the method call.
+            "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+                # cost applied to each metric.
+                #
+                # The key of the map is the metric name, and the values are the amount
+                # increased for the metric against which the quota limits are defined.
+                # The value must not be negative.
+              "a_key": "A String",
+            },
+            "selector": "A String", # Selects the methods to which this rule applies.
+                #
+                # Refer to selector for syntax details.
+          },
+        ],
+        "limits": [ # List of `QuotaLimit` definitions for the service.
+          { # `QuotaLimit` defines a specific limit that applies over a specified duration
+              # for a limit type. There can be at most one limit for a duration and limit
+              # type combination defined within a `QuotaGroup`.
+            "displayName": "A String", # User-visible display name for this limit.
+                # Optional. If not set, the UI will provide a default display name based on
+                # the quota configuration. This field can be used to override the default
+                # display name generated from the configuration.
+            "description": "A String", # Optional. User-visible, extended description for this quota limit.
+                # Should be used only when more context is needed to understand this limit
+                # than provided by the limit's display name (see: `display_name`).
+            "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+                # duration. This is the number of tokens assigned when a client
+                # application developer activates the service for his/her project.
+                #
+                # Specifying a value of 0 will block all requests. This can be used if you
+                # are provisioning quota to selected consumers and blocking others.
+                # Similarly, a value of -1 will indicate an unlimited quota. No other
+                # negative values are allowed.
+                #
+                # Used by group-based quotas only.
+            "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+                # the same metric will be checked together during runtime. The metric must be
+                # defined within the service config.
+            "values": { # Tiered limit values. You must specify this as a key:value pair, with an
+                # integer value that is the maximum number of requests allowed for the
+                # specified unit. Currently only STANDARD is supported.
+              "a_key": "A String",
+            },
+            "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+                # duration. Client application developers can override the default limit up
+                # to this maximum. If specified, this value cannot be set to a value less
+                # than the default limit. If not specified, it is set to the default limit.
+                #
+                # To allow clients to apply overrides with no upper bound, set this to -1,
+                # indicating unlimited maximum quota.
+                #
+                # Used by group-based quotas only.
+            "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
+                #
+                # Used by group-based quotas only.
+            "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+                # The free tier is the number of tokens that will be subtracted from the
+                # billed amount when billing is enabled.
+                # This field can only be set on a limit with duration "1d", in a billable
+                # group; it is invalid on any other limit. If this field is not set, it
+                # defaults to 0, indicating that there is no free tier for this service.
+                #
+                # Used by group-based quotas only.
+            "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+                # Metric.unit. The supported unit kinds are determined by the quota
+                # backend system.
+                #
+                # Here are some examples:
+                # * "1/min/{project}" for quota per minute per project.
+                #
+                # Note: the order of unit components is insignificant.
+                # The "1" at the beginning is required to follow the metric unit syntax.
+            "name": "A String", # Name of the quota limit.
+                #
+                # The name must be provided, and it must be unique within the service. The
+                # name can only include alphanumeric characters as well as '-'.
+                #
+                # The maximum length of the limit name is 64 characters.
+          },
+        ],
+      },
+      "apis": [ # A list of API interfaces exported by this service. Contains only the names,
+          # versions, and method names of the interfaces.
+        { # Api is a light-weight descriptor for an API Interface.
+            #
+            # Interfaces are also described as "protocol buffer services" in some contexts,
+            # such as by the "service" keyword in a .proto file, but they are different
+            # from API Services, which represent a concrete implementation of an interface
+            # as opposed to simply a description of methods and bindings. They are also
+            # sometimes simply referred to as "APIs" in other contexts, such as the name of
+            # this message itself. See https://cloud.google.com/apis/design/glossary for
+            # detailed terminology.
+          "name": "A String", # The fully qualified name of this interface, including package name
+              # followed by the interface's simple name.
+          "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
+              # message.
+              # protobuf element, like the file in which it is defined.
+            "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
+                # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
+          },
+          "mixins": [ # Included interfaces. See Mixin.
+            { # Declares an API Interface to be included in this interface. The including
+                # interface must redeclare all the methods from the included interface, but
+                # documentation and options are inherited as follows:
+                #
+                # - If after comment and whitespace stripping, the documentation
+                #   string of the redeclared method is empty, it will be inherited
+                #   from the original method.
+                #
+                # - Each annotation belonging to the service config (http,
+                #   visibility) which is not set in the redeclared method will be
+                #   inherited.
+                #
+                # - If an http annotation is inherited, the path pattern will be
+                #   modified as follows. Any version prefix will be replaced by the
+                #   version of the including interface plus the root path if
+                #   specified.
+                #
+                # Example of a simple mixin:
+                #
+                #     package google.acl.v1;
+                #     service AccessControl {
+                #       // Get the underlying ACL object.
+                #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                #         option (google.api.http).get = "/v1/{resource=**}:getAcl";
+                #       }
+                #     }
+                #
+                #     package google.storage.v2;
+                #     service Storage {
+                #       //       rpc GetAcl(GetAclRequest) returns (Acl);
+                #
+                #       // Get a data record.
+                #       rpc GetData(GetDataRequest) returns (Data) {
+                #         option (google.api.http).get = "/v2/{resource=**}";
+                #       }
+                #     }
+                #
+                # Example of a mixin configuration:
+                #
+                #     apis:
+                #     - name: google.storage.v2.Storage
+                #       mixins:
+                #       - name: google.acl.v1.AccessControl
+                #
+                # The mixin construct implies that all methods in `AccessControl` are
+                # also declared with same name and request/response types in
+                # `Storage`. A documentation generator or annotation processor will
+                # see the effective `Storage.GetAcl` method after inherting
+                # documentation and annotations as follows:
+                #
+                #     service Storage {
+                #       // Get the underlying ACL object.
+                #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                #         option (google.api.http).get = "/v2/{resource=**}:getAcl";
+                #       }
+                #       ...
+                #     }
+                #
+                # Note how the version in the path pattern changed from `v1` to `v2`.
+                #
+                # If the `root` field in the mixin is specified, it should be a
+                # relative path under which inherited HTTP paths are placed. Example:
+                #
+                #     apis:
+                #     - name: google.storage.v2.Storage
+                #       mixins:
+                #       - name: google.acl.v1.AccessControl
+                #         root: acls
+                #
+                # This implies the following inherited HTTP annotation:
+                #
+                #     service Storage {
+                #       // Get the underlying ACL object.
+                #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                #         option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
+                #       }
+                #       ...
+                #     }
+              "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
+                  # are rooted.
+              "name": "A String", # The fully qualified name of the interface which is included.
+            },
+          ],
+          "syntax": "A String", # The source syntax of the service.
+          "version": "A String", # A version string for this interface. If specified, must have the form
+              # `major-version.minor-version`, as in `1.10`. If the minor version is
+              # omitted, it defaults to zero. If the entire version field is empty, the
+              # major version is derived from the package name, as outlined below. If the
+              # field is not empty, the version in the package name will be verified to be
+              # consistent with what is provided here.
+              #
+              # The versioning schema uses [semantic
+              # versioning](http://semver.org) where the major version number
+              # indicates a breaking change and the minor version an additive,
+              # non-breaking change. Both version numbers are signals to users
+              # what to expect from different versions, and should be carefully
+              # chosen based on the product plan.
+              #
+              # The major version is also reflected in the package name of the
+              # interface, which must end in `v&lt;major-version&gt;`, as in
+              # `google.feature.v1`. For major versions 0 and 1, the suffix can
+              # be omitted. Zero major versions must only be used for
+              # experimental, non-GA interfaces.
+          "options": [ # Any metadata attached to the interface.
+            { # A protocol buffer option, which can be attached to a message, field,
+                # enumeration, etc.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
+                "a_key": "", # Properties of the object. Contains field @type with type URL.
+              },
+            },
+          ],
+          "methods": [ # The methods of this interface, in unspecified order.
+            { # Method represents a method of an API interface.
+              "name": "A String", # The simple name of this method.
+              "requestStreaming": True or False, # If true, the request is streamed.
+              "responseTypeUrl": "A String", # The URL of the output message type.
+              "requestTypeUrl": "A String", # A URL of the input message type.
+              "responseStreaming": True or False, # If true, the response is streamed.
+              "syntax": "A String", # The source syntax of this method.
+              "options": [ # Any metadata attached to the method.
+                { # A protocol buffer option, which can be attached to a message, field,
+                    # enumeration, etc.
+                  "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                      # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                      # For custom options, it should be the fully-qualified name. For example,
+                      # `"google.api.http"`.
+                  "value": { # The option's value packed in an Any message. If the value is a primitive,
+                      # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                      # should be used. If the value is an enum, it should be stored as an int32
+                      # value using the google.protobuf.Int32Value type.
+                    "a_key": "", # Properties of the object. Contains field @type with type URL.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      ],
+      "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. Contains only the OAuth rules.
+          #
+          # Example for an API targeted for external use:
+          #
+          #     name: calendar.googleapis.com
+          #     authentication:
+          #       providers:
+          #       - id: google_calendar_auth
+          #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+          #         issuer: https://securetoken.google.com
+          #       rules:
+          #       - selector: "*"
+          #         requirements:
+          #           provider_id: google_calendar_auth
+        "rules": [ # A list of authentication rules that apply to individual API methods.
+            #
+            # **NOTE:** All service configuration rules follow "last one wins" order.
+          { # Authentication rules for the service.
+              #
+              # By default, if a method has any authentication requirements, every request
+              # must include a valid credential matching one of the requirements.
+              # It's an error to include more than one kind of credential in a single
+              # request.
+              #
+              # If a method doesn't have any auth requirements, request credentials will be
+              # ignored.
+            "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
+                # there are scopes defined for "Read-only access to Google Calendar" and
+                # "Access to Cloud Platform". Users can consent to a scope for an application,
+                # giving it permission to access that data on their behalf.
+                #
+                # OAuth scope specifications should be fairly coarse grained; a user will need
+                # to see and understand the text description of what your scope means.
+                #
+                # In most cases: use one or at most two OAuth scopes for an entire family of
+                # products. If your product has multiple APIs, you should probably be sharing
+                # the OAuth scope across all of those APIs.
+                #
+                # When you need finer grained OAuth consent screens: talk with your product
+                # management about how developers will use them in practice.
+                #
+                # Please note that even though each of the canonical scopes is enough for a
+                # request to be accepted and passed to the backend, a request can still fail
+                # due to the backend requiring additional scopes or permissions.
+              "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
+                  # OAuth token containing any of these scopes will be accepted.
+                  #
+                  # Example:
+                  #
+                  #      canonical_scopes: https://www.googleapis.com/auth/calendar,
+                  #                        https://www.googleapis.com/auth/calendar.read
+            },
+            "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
+            "requirements": [ # Requirements for additional authentication providers.
+              { # User-defined authentication requirements, including support for
+                  # [JSON Web Token
+                  # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+                "providerId": "A String", # id from authentication provider.
+                    #
+                    # Example:
+                    #
+                    #     provider_id: bookstore_auth
+                "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                    # implemented and accepted in all the runtime components.
+                    #
+                    # The list of JWT
+                    # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+                    # that are allowed to access. A JWT containing any of these audiences will
+                    # be accepted. When this setting is absent, only JWTs with audience
+                    # "https://Service_name/API_name"
+                    # will be accepted. For example, if no audiences are in the setting,
+                    # LibraryService API will only accept JWTs with the following audience
+                    # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+                    #
+                    # Example:
+                    #
+                    #     audiences: bookstore_android.apps.googleusercontent.com,
+                    #                bookstore_web.apps.googleusercontent.com
+              },
+            ],
+            "selector": "A String", # Selects the methods to which this rule applies.
+                #
+                # Refer to selector for syntax details.
+          },
+        ],
+        "providers": [ # Defines a set of authentication providers that a service supports.
+          { # Configuration for an authentication provider, including support for
+              # [JSON Web Token
+              # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+            "jwtLocations": [ # Defines the locations to extract the JWT.
+                #
+                # JWT locations can be either from HTTP headers or URL query parameters.
+                # The rule is that the first match wins. The checking order is: checking
+                # all headers first, then URL query parameters.
+                #
+                # If not specified,  default to use following 3 locations:
+                #    1) Authorization: Bearer
+                #    2) x-goog-iap-jwt-assertion
+                #    3) access_token query parameter
+                #
+                # Default locations can be specified as followings:
+                #    jwt_locations:
+                #    - header: Authorization
+                #      value_prefix: "Bearer "
+                #    - header: x-goog-iap-jwt-assertion
+                #    - query: access_token
+              { # Specifies a location to extract JWT from an API request.
+                "query": "A String", # Specifies URL query parameter name to extract JWT token.
+                "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
+                    # Only applies to "in" header type. Must be empty for "in" query type.
+                    # If not empty, the header value has to match (case sensitive) this prefix.
+                    # If not matched, JWT will not be extracted. If matched, JWT will be
+                    # extracted after the prefix is removed.
+                    #
+                    # For example, for "Authorization: Bearer {JWT}",
+                    # value_prefix="Bearer " with a space at the end.
+                "header": "A String", # Specifies HTTP header name to extract JWT token.
+              },
+            ],
+            "audiences": "A String", # The list of JWT
+                # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+                # that are allowed to access. A JWT containing any of these audiences will
+                # be accepted. When this setting is absent, JWTs with audiences:
+                #   - "https://[service.name]/[google.protobuf.Api.name]"
+                #   - "https://[service.name]/"
+                # will be accepted.
+                # For example, if no audiences are in the setting, LibraryService API will
+                # accept JWTs with the following audiences:
+                #   -
+                #   https://library-example.googleapis.com/google.example.library.v1.LibraryService
+                #   - https://library-example.googleapis.com/
+                #
+                # Example:
+                #
+                #     audiences: bookstore_android.apps.googleusercontent.com,
+                #                bookstore_web.apps.googleusercontent.com
+            "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
+                # [OpenID
+                # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
+                # Optional if the key set document:
+                #  - can be retrieved from
+                #    [OpenID
+                #    Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
+                #    the issuer.
+                #  - can be inferred from the email domain of the issuer (e.g. a Google
+                #  service account).
+                #
+                # Example: https://www.googleapis.com/oauth2/v1/certs
+            "id": "A String", # The unique identifier of the auth provider. It will be referred to by
+                # `AuthRequirement.provider_id`.
+                #
+                # Example: "bookstore_auth".
+            "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
+                # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
+            "issuer": "A String", # Identifies the principal that issued the JWT. See
+                # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
+                # Usually a URL or an email address.
+                #
+                # Example: https://securetoken.google.com
+                # Example: 1234567-compute@developer.gserviceaccount.com
+          },
+        ],
+      },
+      "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
+        "rules": [ # A list of usage rules that apply to individual API methods.
+            #
+            # **NOTE:** All service configuration rules follow "last one wins" order.
+          { # Usage configuration rules for the service.
+              #
+              # NOTE: Under development.
+              #
+              #
+              # Use this rule to configure unregistered calls for the service. Unregistered
+              # calls are calls that do not contain consumer project identity.
+              # (Example: calls that do not contain an API key).
+              # By default, API methods do not allow unregistered calls, and each method call
+              # must be identified by a consumer project identity. Use this rule to
+              # allow/disallow unregistered calls.
+              #
+              # Example of an API that wants to allow unregistered calls for entire service.
+              #
+              #     usage:
+              #       rules:
+              #       - selector: "*"
+              #         allow_unregistered_calls: true
+              #
+              # Example of a method that wants to allow unregistered calls.
+              #
+              #     usage:
+              #       rules:
+              #       - selector: "google.example.library.v1.LibraryService.CreateBook"
+              #         allow_unregistered_calls: true
+            "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
+                # methods in all APIs.
+                #
+                # Refer to selector for syntax details.
+            "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
+                # plane features, such as quota and billing, will not be available.
+                # This flag is used by Google Cloud Endpoints to bypass checks for internal
+                # methods, such as service health check methods.
+            "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
+                # that don't identify any user or application.
+          },
+        ],
+        "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
+            #
+            #
+            # Use this field to configure per-product per-project service identity.
+            # Example of a service identity configuration.
+            #
+            #     usage:
+            #       service_identity:
+            #       - service_account_parent: "projects/123456789"
+            #         display_name: "Cloud XXX Service Agent"
+            #         description: "Used as the identity of Cloud XXX to access resources"
+          "displayName": "A String", # Optional. A user-specified name for the service account.
+              # Must be less than or equal to 100 UTF-8 bytes.
+          "description": "A String", # Optional. A user-specified opaque description of the service account.
+              # Must be less than or equal to 256 UTF-8 bytes.
+          "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
+              #
+              # An example name would be:
+              # `projects/123456789`
+        },
+        "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+            # service producer.
+            #
+            # Google Service Management currently only supports
+            # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+            # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+            # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+            # documented in https://cloud.google.com/pubsub/docs/overview.
+        "requirements": [ # Requirements that must be satisfied before a consumer project can use the
+            # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
+            # for example 'serviceusage.googleapis.com/billing-enabled'.
+          "A String",
+        ],
+      },
+      "endpoints": [ # Configuration for network endpoints. Contains only the names and aliases
+          # of the endpoints.
+        { # `Endpoint` describes a network endpoint that serves a set of APIs.
+            # A service may expose any number of endpoints, and all endpoints share the
+            # same service configuration, such as quota configuration and monitoring
+            # configuration.
+            #
+            # Example service configuration:
+            #
+            #     name: library-example.googleapis.com
+            #     endpoints:
+            #       # Below entry makes 'google.example.library.v1.Library'
+            #       # API be served from endpoint address library-example.googleapis.com.
+            #       # It also allows HTTP OPTIONS calls to be passed to the backend, for
+            #       # it to decide whether the subsequent cross-origin request is
+            #       # allowed to proceed.
+            #     - name: library-example.googleapis.com
+            #       allow_cors: true
+          "allowCors": True or False, # Allowing
+              # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
+              # cross-domain traffic, would allow the backends served from this endpoint to
+              # receive and respond to HTTP OPTIONS requests. The response will be used by
+              # the browser to determine whether the subsequent cross-origin request is
+              # allowed to proceed.
+          "target": "A String", # The specification of an Internet routable address of API frontend that will
+              # handle requests to this [API
+              # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
+              # either a valid IPv4 address or a fully-qualified domain name. For example,
+              # "8.8.8.8" or "myservice.appspot.com".
+          "features": [ # The list of features enabled on this endpoint.
+            "A String",
+          ],
+          "name": "A String", # The canonical name of this endpoint.
+          "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases,
+              # please specify multiple google.api.Endpoint for each of the intended
+              # aliases.
+              #
+              # Additional names that this endpoint will be hosted on.
+            "A String",
+          ],
+        },
+      ],
+    },
+    "name": "A String", # The resource name of the consumer and service.
+        #
+        # A valid name would be:
+        # - projects/123/services/serviceusage.googleapis.com
+    "parent": "A String", # The resource name of the consumer.
+        #
+        # A valid name would be:
+        # - projects/123
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None, filter=None)</code>
+  <pre>List all services available to the specified project, and the current
+state of those services with respect to the project. The list includes
+all public services, all services for which the calling user has the
+`servicemanagement.services.bind` permission, and all services that have
+already been enabled on the project. The list can be filtered to
+only include services in a specific state, for example to only include
+services enabled on the project.
+
+Args:
+  parent: string, Parent to search for services on.
+
+An example name would be:
+`projects/123` where `123` is the project number. (required)
+  pageToken: string, Token identifying which result to start with, which is returned by a
+previous list call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Requested size of the next page of data.
+Requested page size cannot exceed 200.
+ If not set, the default page size is 50.
+  filter: string, Only list services that conform to the given filter.
+The allowed filter strings are `state:ENABLED` and `state:DISABLED`.
+
+Returns:
+  An object of the form:
+
+    { # Response message for the `ListServices` method.
+    "services": [ # The available services for the requested project.
+      { # A service that is available for use by the consumer.
+        "state": "A String", # Whether or not the service has been enabled for use by the consumer.
+        "config": { # The configuration of the service. # The service configuration of the available service.
+            # Some fields may be filtered out of the configuration in responses to
+            # the `ListServices` method. These fields are present only in responses to
+            # the `GetService` method.
+          "name": "A String", # The DNS address at which this service is available.
+              #
+              # An example DNS address would be:
+              # `calendar.googleapis.com`.
+          "title": "A String", # The product title for this service.
+          "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. Contains only the summary and the
+              # documentation URL.
+              #
+              # Example:
+              # &lt;pre&gt;&lt;code&gt;documentation:
+              #   summary: &gt;
+              #     The Google Calendar API gives access
+              #     to most calendar features.
+              #   pages:
+              #   - name: Overview
+              #     content: &amp;#40;== include google/foo/overview.md ==&amp;#41;
+              #   - name: Tutorial
+              #     content: &amp;#40;== include google/foo/tutorial.md ==&amp;#41;
+              #     subpages;
+              #     - name: Java
+              #       content: &amp;#40;== include google/foo/tutorial_java.md ==&amp;#41;
+              #   rules:
+              #   - selector: google.calendar.Calendar.Get
+              #     description: &gt;
+              #       ...
+              #   - selector: google.calendar.Calendar.Put
+              #     description: &gt;
+              #       ...
+              # &lt;/code&gt;&lt;/pre&gt;
+              # Documentation is provided in markdown syntax. In addition to
+              # standard markdown features, definition lists, tables and fenced
+              # code blocks are supported. Section headers can be provided and are
+              # interpreted relative to the section nesting of the context where
+              # a documentation fragment is embedded.
+              #
+              # Documentation from the IDL is merged with documentation defined
+              # via the config at normalization time, where documentation provided
+              # by config rules overrides IDL provided.
+              #
+              # A number of constructs specific to the API platform are supported
+              # in documentation text.
+              #
+              # In order to reference a proto element, the following
+              # notation can be used:
+              # &lt;pre&gt;&lt;code&gt;&amp;#91;fully.qualified.proto.name]&amp;#91;]&lt;/code&gt;&lt;/pre&gt;
+              # To override the display text used for the link, this can be used:
+              # &lt;pre&gt;&lt;code&gt;&amp;#91;display text]&amp;#91;fully.qualified.proto.name]&lt;/code&gt;&lt;/pre&gt;
+              # Text can be excluded from doc using the following notation:
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;-- internal comment --&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+              #
+              # A few directives are available in documentation. Note that
+              # directives must appear on a single line to be properly
+              # identified. The `include` directive includes a markdown file from
+              # an external source:
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;== include path/to/file ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+              # The `resource_for` directive marks a message to be the resource of
+              # a collection in REST view. If it is not specified, tools attempt
+              # to infer the resource from the operations in a collection:
+              # &lt;pre&gt;&lt;code&gt;&amp;#40;== resource_for v1.shelves.books ==&amp;#41;&lt;/code&gt;&lt;/pre&gt;
+              # The directive `suppress_warning` does not directly affect documentation
+              # and is documented together with service config validation.
+            "rules": [ # A list of documentation rules that apply to individual API elements.
+                #
+                # **NOTE:** All service configuration rules follow "last one wins" order.
+              { # A documentation rule provides information about individual API elements.
+                "description": "A String", # Description of the selected API(s).
+                "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if
+                    # an element is marked as `deprecated`.
+                "selector": "A String", # The selector is a comma-separated list of patterns. Each pattern is a
+                    # qualified name of the element which may end in "*", indicating a wildcard.
+                    # Wildcards are only allowed at the end and for a whole component of the
+                    # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
+                    # wildcard will match one or more components. To specify a default for all
+                    # applicable elements, the whole pattern "*" is used.
+              },
+            ],
+            "documentationRootUrl": "A String", # The URL to the root of documentation.
+            "summary": "A String", # A short summary of what the service does. Can only be provided by
+                # plain text.
+            "serviceRootUrl": "A String", # Specifies the service root url if the default one (the service name
+                # from the yaml file) is not suitable. This can be seen in any fully
+                # specified service urls as well as sections that show a base that other
+                # urls are relative to.
+            "overview": "A String", # Declares a single overview page. For example:
+                # &lt;pre&gt;&lt;code&gt;documentation:
+                #   summary: ...
+                #   overview: &amp;#40;== include overview.md ==&amp;#41;
+                # &lt;/code&gt;&lt;/pre&gt;
+                # This is a shortcut for the following declaration (using pages style):
+                # &lt;pre&gt;&lt;code&gt;documentation:
+                #   summary: ...
+                #   pages:
+                #   - name: Overview
+                #     content: &amp;#40;== include overview.md ==&amp;#41;
+                # &lt;/code&gt;&lt;/pre&gt;
+                # Note: you cannot specify both `overview` field and `pages` field.
+            "pages": [ # The top level pages for the documentation set.
+              { # Represents a documentation page. A page can contain subpages to represent
+                  # nested documentation set structure.
+                "content": "A String", # The Markdown content of the page. You can use &lt;code&gt;&amp;#40;== include {path}
+                    # ==&amp;#41;&lt;/code&gt; to include content from a Markdown file.
+                "subpages": [ # Subpages of this page. The order of subpages specified here will be
+                    # honored in the generated docset.
+                  # Object with schema name: Page
+                ],
+                "name": "A String", # The name of the page. It will be used as an identity of the page to
+                    # generate URI of the page, text of the link to this page in navigation,
+                    # etc. The full page name (start from the root page name to this page
+                    # concatenated with `.`) can be used as reference to the page in your
+                    # documentation. For example:
+                    # &lt;pre&gt;&lt;code&gt;pages:
+                    # - name: Tutorial
+                    #   content: &amp;#40;== include tutorial.md ==&amp;#41;
+                    #   subpages:
+                    #   - name: Java
+                    #     content: &amp;#40;== include tutorial_java.md ==&amp;#41;
+                    # &lt;/code&gt;&lt;/pre&gt;
+                    # You can reference `Java` page using Markdown reference link syntax:
+                    # `Java`.
+              },
+            ],
+          },
+          "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
+              # usage.
+              #
+              # The metric based quota configuration works this way:
+              # - The service configuration defines a set of metrics.
+              # - For API calls, the quota.metric_rules maps methods to metrics with
+              #   corresponding costs.
+              # - The quota.limits defines limits on the metrics, which will be used for
+              #   quota checks at runtime.
+              #
+              # An example quota configuration in yaml format:
+              #
+              #    quota:
+              #      limits:
+              #
+              #      - name: apiWriteQpsPerProject
+              #        metric: library.googleapis.com/write_calls
+              #        unit: "1/min/{project}"  # rate limit for consumer projects
+              #        values:
+              #          STANDARD: 10000
+              #
+              #
+              #      # The metric rules bind all methods to the read_calls metric,
+              #      # except for the UpdateBook and DeleteBook methods. These two methods
+              #      # are mapped to the write_calls metric, with the UpdateBook method
+              #      # consuming at twice rate as the DeleteBook method.
+              #      metric_rules:
+              #      - selector: "*"
+              #        metric_costs:
+              #          library.googleapis.com/read_calls: 1
+              #      - selector: google.example.library.v1.LibraryService.UpdateBook
+              #        metric_costs:
+              #          library.googleapis.com/write_calls: 2
+              #      - selector: google.example.library.v1.LibraryService.DeleteBook
+              #        metric_costs:
+              #          library.googleapis.com/write_calls: 1
+              #
+              #  Corresponding Metric definition:
+              #
+              #      metrics:
+              #      - name: library.googleapis.com/read_calls
+              #        display_name: Read requests
+              #        metric_kind: DELTA
+              #        value_type: INT64
+              #
+              #      - name: library.googleapis.com/write_calls
+              #        display_name: Write requests
+              #        metric_kind: DELTA
+              #        value_type: INT64
+              #
+            "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one
+                # or more metrics.
+              { # Bind API methods to metrics. Binding a method to a metric causes that
+                  # metric's configured quota behaviors to apply to the method call.
+                "metricCosts": { # Metrics to update when the selected methods are called, and the associated
+                    # cost applied to each metric.
+                    #
+                    # The key of the map is the metric name, and the values are the amount
+                    # increased for the metric against which the quota limits are defined.
+                    # The value must not be negative.
+                  "a_key": "A String",
+                },
+                "selector": "A String", # Selects the methods to which this rule applies.
+                    #
+                    # Refer to selector for syntax details.
+              },
+            ],
+            "limits": [ # List of `QuotaLimit` definitions for the service.
+              { # `QuotaLimit` defines a specific limit that applies over a specified duration
+                  # for a limit type. There can be at most one limit for a duration and limit
+                  # type combination defined within a `QuotaGroup`.
+                "displayName": "A String", # User-visible display name for this limit.
+                    # Optional. If not set, the UI will provide a default display name based on
+                    # the quota configuration. This field can be used to override the default
+                    # display name generated from the configuration.
+                "description": "A String", # Optional. User-visible, extended description for this quota limit.
+                    # Should be used only when more context is needed to understand this limit
+                    # than provided by the limit's display name (see: `display_name`).
+                "defaultLimit": "A String", # Default number of tokens that can be consumed during the specified
+                    # duration. This is the number of tokens assigned when a client
+                    # application developer activates the service for his/her project.
+                    #
+                    # Specifying a value of 0 will block all requests. This can be used if you
+                    # are provisioning quota to selected consumers and blocking others.
+                    # Similarly, a value of -1 will indicate an unlimited quota. No other
+                    # negative values are allowed.
+                    #
+                    # Used by group-based quotas only.
+                "metric": "A String", # The name of the metric this quota limit applies to. The quota limits with
+                    # the same metric will be checked together during runtime. The metric must be
+                    # defined within the service config.
+                "values": { # Tiered limit values. You must specify this as a key:value pair, with an
+                    # integer value that is the maximum number of requests allowed for the
+                    # specified unit. Currently only STANDARD is supported.
+                  "a_key": "A String",
+                },
+                "maxLimit": "A String", # Maximum number of tokens that can be consumed during the specified
+                    # duration. Client application developers can override the default limit up
+                    # to this maximum. If specified, this value cannot be set to a value less
+                    # than the default limit. If not specified, it is set to the default limit.
+                    #
+                    # To allow clients to apply overrides with no upper bound, set this to -1,
+                    # indicating unlimited maximum quota.
+                    #
+                    # Used by group-based quotas only.
+                "duration": "A String", # Duration of this limit in textual notation. Must be "100s" or "1d".
+                    #
+                    # Used by group-based quotas only.
+                "freeTier": "A String", # Free tier value displayed in the Developers Console for this limit.
+                    # The free tier is the number of tokens that will be subtracted from the
+                    # billed amount when billing is enabled.
+                    # This field can only be set on a limit with duration "1d", in a billable
+                    # group; it is invalid on any other limit. If this field is not set, it
+                    # defaults to 0, indicating that there is no free tier for this service.
+                    #
+                    # Used by group-based quotas only.
+                "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as
+                    # Metric.unit. The supported unit kinds are determined by the quota
+                    # backend system.
+                    #
+                    # Here are some examples:
+                    # * "1/min/{project}" for quota per minute per project.
+                    #
+                    # Note: the order of unit components is insignificant.
+                    # The "1" at the beginning is required to follow the metric unit syntax.
+                "name": "A String", # Name of the quota limit.
+                    #
+                    # The name must be provided, and it must be unique within the service. The
+                    # name can only include alphanumeric characters as well as '-'.
+                    #
+                    # The maximum length of the limit name is 64 characters.
+              },
+            ],
+          },
+          "apis": [ # A list of API interfaces exported by this service. Contains only the names,
+              # versions, and method names of the interfaces.
+            { # Api is a light-weight descriptor for an API Interface.
+                #
+                # Interfaces are also described as "protocol buffer services" in some contexts,
+                # such as by the "service" keyword in a .proto file, but they are different
+                # from API Services, which represent a concrete implementation of an interface
+                # as opposed to simply a description of methods and bindings. They are also
+                # sometimes simply referred to as "APIs" in other contexts, such as the name of
+                # this message itself. See https://cloud.google.com/apis/design/glossary for
+                # detailed terminology.
+              "name": "A String", # The fully qualified name of this interface, including package name
+                  # followed by the interface's simple name.
+              "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this
+                  # message.
+                  # protobuf element, like the file in which it is defined.
+                "fileName": "A String", # The path-qualified name of the .proto file that contained the associated
+                    # protobuf element.  For example: `"google/protobuf/source_context.proto"`.
+              },
+              "mixins": [ # Included interfaces. See Mixin.
+                { # Declares an API Interface to be included in this interface. The including
+                    # interface must redeclare all the methods from the included interface, but
+                    # documentation and options are inherited as follows:
+                    #
+                    # - If after comment and whitespace stripping, the documentation
+                    #   string of the redeclared method is empty, it will be inherited
+                    #   from the original method.
+                    #
+                    # - Each annotation belonging to the service config (http,
+                    #   visibility) which is not set in the redeclared method will be
+                    #   inherited.
+                    #
+                    # - If an http annotation is inherited, the path pattern will be
+                    #   modified as follows. Any version prefix will be replaced by the
+                    #   version of the including interface plus the root path if
+                    #   specified.
+                    #
+                    # Example of a simple mixin:
+                    #
+                    #     package google.acl.v1;
+                    #     service AccessControl {
+                    #       // Get the underlying ACL object.
+                    #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                    #         option (google.api.http).get = "/v1/{resource=**}:getAcl";
+                    #       }
+                    #     }
+                    #
+                    #     package google.storage.v2;
+                    #     service Storage {
+                    #       //       rpc GetAcl(GetAclRequest) returns (Acl);
+                    #
+                    #       // Get a data record.
+                    #       rpc GetData(GetDataRequest) returns (Data) {
+                    #         option (google.api.http).get = "/v2/{resource=**}";
+                    #       }
+                    #     }
+                    #
+                    # Example of a mixin configuration:
+                    #
+                    #     apis:
+                    #     - name: google.storage.v2.Storage
+                    #       mixins:
+                    #       - name: google.acl.v1.AccessControl
+                    #
+                    # The mixin construct implies that all methods in `AccessControl` are
+                    # also declared with same name and request/response types in
+                    # `Storage`. A documentation generator or annotation processor will
+                    # see the effective `Storage.GetAcl` method after inherting
+                    # documentation and annotations as follows:
+                    #
+                    #     service Storage {
+                    #       // Get the underlying ACL object.
+                    #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                    #         option (google.api.http).get = "/v2/{resource=**}:getAcl";
+                    #       }
+                    #       ...
+                    #     }
+                    #
+                    # Note how the version in the path pattern changed from `v1` to `v2`.
+                    #
+                    # If the `root` field in the mixin is specified, it should be a
+                    # relative path under which inherited HTTP paths are placed. Example:
+                    #
+                    #     apis:
+                    #     - name: google.storage.v2.Storage
+                    #       mixins:
+                    #       - name: google.acl.v1.AccessControl
+                    #         root: acls
+                    #
+                    # This implies the following inherited HTTP annotation:
+                    #
+                    #     service Storage {
+                    #       // Get the underlying ACL object.
+                    #       rpc GetAcl(GetAclRequest) returns (Acl) {
+                    #         option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
+                    #       }
+                    #       ...
+                    #     }
+                  "root": "A String", # If non-empty specifies a path under which inherited HTTP paths
+                      # are rooted.
+                  "name": "A String", # The fully qualified name of the interface which is included.
+                },
+              ],
+              "syntax": "A String", # The source syntax of the service.
+              "version": "A String", # A version string for this interface. If specified, must have the form
+                  # `major-version.minor-version`, as in `1.10`. If the minor version is
+                  # omitted, it defaults to zero. If the entire version field is empty, the
+                  # major version is derived from the package name, as outlined below. If the
+                  # field is not empty, the version in the package name will be verified to be
+                  # consistent with what is provided here.
+                  #
+                  # The versioning schema uses [semantic
+                  # versioning](http://semver.org) where the major version number
+                  # indicates a breaking change and the minor version an additive,
+                  # non-breaking change. Both version numbers are signals to users
+                  # what to expect from different versions, and should be carefully
+                  # chosen based on the product plan.
+                  #
+                  # The major version is also reflected in the package name of the
+                  # interface, which must end in `v&lt;major-version&gt;`, as in
+                  # `google.feature.v1`. For major versions 0 and 1, the suffix can
+                  # be omitted. Zero major versions must only be used for
+                  # experimental, non-GA interfaces.
+              "options": [ # Any metadata attached to the interface.
+                { # A protocol buffer option, which can be attached to a message, field,
+                    # enumeration, etc.
+                  "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                      # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                      # For custom options, it should be the fully-qualified name. For example,
+                      # `"google.api.http"`.
+                  "value": { # The option's value packed in an Any message. If the value is a primitive,
+                      # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                      # should be used. If the value is an enum, it should be stored as an int32
+                      # value using the google.protobuf.Int32Value type.
+                    "a_key": "", # Properties of the object. Contains field @type with type URL.
+                  },
+                },
+              ],
+              "methods": [ # The methods of this interface, in unspecified order.
+                { # Method represents a method of an API interface.
+                  "name": "A String", # The simple name of this method.
+                  "requestStreaming": True or False, # If true, the request is streamed.
+                  "responseTypeUrl": "A String", # The URL of the output message type.
+                  "requestTypeUrl": "A String", # A URL of the input message type.
+                  "responseStreaming": True or False, # If true, the response is streamed.
+                  "syntax": "A String", # The source syntax of this method.
+                  "options": [ # Any metadata attached to the method.
+                    { # A protocol buffer option, which can be attached to a message, field,
+                        # enumeration, etc.
+                      "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                          # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                          # For custom options, it should be the fully-qualified name. For example,
+                          # `"google.api.http"`.
+                      "value": { # The option's value packed in an Any message. If the value is a primitive,
+                          # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                          # should be used. If the value is an enum, it should be stored as an int32
+                          # value using the google.protobuf.Int32Value type.
+                        "a_key": "", # Properties of the object. Contains field @type with type URL.
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+          "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. Contains only the OAuth rules.
+              #
+              # Example for an API targeted for external use:
+              #
+              #     name: calendar.googleapis.com
+              #     authentication:
+              #       providers:
+              #       - id: google_calendar_auth
+              #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+              #         issuer: https://securetoken.google.com
+              #       rules:
+              #       - selector: "*"
+              #         requirements:
+              #           provider_id: google_calendar_auth
+            "rules": [ # A list of authentication rules that apply to individual API methods.
+                #
+                # **NOTE:** All service configuration rules follow "last one wins" order.
+              { # Authentication rules for the service.
+                  #
+                  # By default, if a method has any authentication requirements, every request
+                  # must include a valid credential matching one of the requirements.
+                  # It's an error to include more than one kind of credential in a single
+                  # request.
+                  #
+                  # If a method doesn't have any auth requirements, request credentials will be
+                  # ignored.
+                "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
+                    # there are scopes defined for "Read-only access to Google Calendar" and
+                    # "Access to Cloud Platform". Users can consent to a scope for an application,
+                    # giving it permission to access that data on their behalf.
+                    #
+                    # OAuth scope specifications should be fairly coarse grained; a user will need
+                    # to see and understand the text description of what your scope means.
+                    #
+                    # In most cases: use one or at most two OAuth scopes for an entire family of
+                    # products. If your product has multiple APIs, you should probably be sharing
+                    # the OAuth scope across all of those APIs.
+                    #
+                    # When you need finer grained OAuth consent screens: talk with your product
+                    # management about how developers will use them in practice.
+                    #
+                    # Please note that even though each of the canonical scopes is enough for a
+                    # request to be accepted and passed to the backend, a request can still fail
+                    # due to the backend requiring additional scopes or permissions.
+                  "canonicalScopes": "A String", # The list of publicly documented OAuth scopes that are allowed access. An
+                      # OAuth token containing any of these scopes will be accepted.
+                      #
+                      # Example:
+                      #
+                      #      canonical_scopes: https://www.googleapis.com/auth/calendar,
+                      #                        https://www.googleapis.com/auth/calendar.read
+                },
+                "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential.
+                "requirements": [ # Requirements for additional authentication providers.
+                  { # User-defined authentication requirements, including support for
+                      # [JSON Web Token
+                      # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+                    "providerId": "A String", # id from authentication provider.
+                        #
+                        # Example:
+                        #
+                        #     provider_id: bookstore_auth
+                    "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                        # implemented and accepted in all the runtime components.
+                        #
+                        # The list of JWT
+                        # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+                        # that are allowed to access. A JWT containing any of these audiences will
+                        # be accepted. When this setting is absent, only JWTs with audience
+                        # "https://Service_name/API_name"
+                        # will be accepted. For example, if no audiences are in the setting,
+                        # LibraryService API will only accept JWTs with the following audience
+                        # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+                        #
+                        # Example:
+                        #
+                        #     audiences: bookstore_android.apps.googleusercontent.com,
+                        #                bookstore_web.apps.googleusercontent.com
+                  },
+                ],
+                "selector": "A String", # Selects the methods to which this rule applies.
+                    #
+                    # Refer to selector for syntax details.
+              },
+            ],
+            "providers": [ # Defines a set of authentication providers that a service supports.
+              { # Configuration for an authentication provider, including support for
+                  # [JSON Web Token
+                  # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
+                "jwtLocations": [ # Defines the locations to extract the JWT.
+                    #
+                    # JWT locations can be either from HTTP headers or URL query parameters.
+                    # The rule is that the first match wins. The checking order is: checking
+                    # all headers first, then URL query parameters.
+                    #
+                    # If not specified,  default to use following 3 locations:
+                    #    1) Authorization: Bearer
+                    #    2) x-goog-iap-jwt-assertion
+                    #    3) access_token query parameter
+                    #
+                    # Default locations can be specified as followings:
+                    #    jwt_locations:
+                    #    - header: Authorization
+                    #      value_prefix: "Bearer "
+                    #    - header: x-goog-iap-jwt-assertion
+                    #    - query: access_token
+                  { # Specifies a location to extract JWT from an API request.
+                    "query": "A String", # Specifies URL query parameter name to extract JWT token.
+                    "valuePrefix": "A String", # The value prefix. The value format is "value_prefix{token}"
+                        # Only applies to "in" header type. Must be empty for "in" query type.
+                        # If not empty, the header value has to match (case sensitive) this prefix.
+                        # If not matched, JWT will not be extracted. If matched, JWT will be
+                        # extracted after the prefix is removed.
+                        #
+                        # For example, for "Authorization: Bearer {JWT}",
+                        # value_prefix="Bearer " with a space at the end.
+                    "header": "A String", # Specifies HTTP header name to extract JWT token.
+                  },
+                ],
+                "audiences": "A String", # The list of JWT
+                    # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+                    # that are allowed to access. A JWT containing any of these audiences will
+                    # be accepted. When this setting is absent, JWTs with audiences:
+                    #   - "https://[service.name]/[google.protobuf.Api.name]"
+                    #   - "https://[service.name]/"
+                    # will be accepted.
+                    # For example, if no audiences are in the setting, LibraryService API will
+                    # accept JWTs with the following audiences:
+                    #   -
+                    #   https://library-example.googleapis.com/google.example.library.v1.LibraryService
+                    #   - https://library-example.googleapis.com/
+                    #
+                    # Example:
+                    #
+                    #     audiences: bookstore_android.apps.googleusercontent.com,
+                    #                bookstore_web.apps.googleusercontent.com
+                "jwksUri": "A String", # URL of the provider's public key set to validate signature of the JWT. See
+                    # [OpenID
+                    # Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
+                    # Optional if the key set document:
+                    #  - can be retrieved from
+                    #    [OpenID
+                    #    Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of
+                    #    the issuer.
+                    #  - can be inferred from the email domain of the issuer (e.g. a Google
+                    #  service account).
+                    #
+                    # Example: https://www.googleapis.com/oauth2/v1/certs
+                "id": "A String", # The unique identifier of the auth provider. It will be referred to by
+                    # `AuthRequirement.provider_id`.
+                    #
+                    # Example: "bookstore_auth".
+                "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired.
+                    # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
+                "issuer": "A String", # Identifies the principal that issued the JWT. See
+                    # https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
+                    # Usually a URL or an email address.
+                    #
+                    # Example: https://securetoken.google.com
+                    # Example: 1234567-compute@developer.gserviceaccount.com
+              },
+            ],
+          },
+          "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
+            "rules": [ # A list of usage rules that apply to individual API methods.
+                #
+                # **NOTE:** All service configuration rules follow "last one wins" order.
+              { # Usage configuration rules for the service.
+                  #
+                  # NOTE: Under development.
+                  #
+                  #
+                  # Use this rule to configure unregistered calls for the service. Unregistered
+                  # calls are calls that do not contain consumer project identity.
+                  # (Example: calls that do not contain an API key).
+                  # By default, API methods do not allow unregistered calls, and each method call
+                  # must be identified by a consumer project identity. Use this rule to
+                  # allow/disallow unregistered calls.
+                  #
+                  # Example of an API that wants to allow unregistered calls for entire service.
+                  #
+                  #     usage:
+                  #       rules:
+                  #       - selector: "*"
+                  #         allow_unregistered_calls: true
+                  #
+                  # Example of a method that wants to allow unregistered calls.
+                  #
+                  #     usage:
+                  #       rules:
+                  #       - selector: "google.example.library.v1.LibraryService.CreateBook"
+                  #         allow_unregistered_calls: true
+                "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all
+                    # methods in all APIs.
+                    #
+                    # Refer to selector for syntax details.
+                "skipServiceControl": True or False, # If true, the selected method should skip service control and the control
+                    # plane features, such as quota and billing, will not be available.
+                    # This flag is used by Google Cloud Endpoints to bypass checks for internal
+                    # methods, such as service health check methods.
+                "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls
+                    # that don't identify any user or application.
+              },
+            ],
+            "serviceIdentity": { # The per-product per-project service identity for a service. # The configuration of a per-product per-project service identity.
+                #
+                #
+                # Use this field to configure per-product per-project service identity.
+                # Example of a service identity configuration.
+                #
+                #     usage:
+                #       service_identity:
+                #       - service_account_parent: "projects/123456789"
+                #         display_name: "Cloud XXX Service Agent"
+                #         description: "Used as the identity of Cloud XXX to access resources"
+              "displayName": "A String", # Optional. A user-specified name for the service account.
+                  # Must be less than or equal to 100 UTF-8 bytes.
+              "description": "A String", # Optional. A user-specified opaque description of the service account.
+                  # Must be less than or equal to 256 UTF-8 bytes.
+              "serviceAccountParent": "A String", # A service account project that hosts the service accounts.
+                  #
+                  # An example name would be:
+                  # `projects/123456789`
+            },
+            "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+                # service producer.
+                #
+                # Google Service Management currently only supports
+                # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+                # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+                # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+                # documented in https://cloud.google.com/pubsub/docs/overview.
+            "requirements": [ # Requirements that must be satisfied before a consumer project can use the
+                # service. Each requirement is of the form &lt;service.name&gt;/&lt;requirement-id&gt;;
                 # for example 'serviceusage.googleapis.com/billing-enabled'.
               "A String",
             ],