docs: update generated docs (#981)

diff --git a/docs/dyn/servicemanagement_v1.services.html b/docs/dyn/servicemanagement_v1.services.html
index 2a30eca..4dcc1c6 100644
--- a/docs/dyn/servicemanagement_v1.services.html
+++ b/docs/dyn/servicemanagement_v1.services.html
@@ -108,13 +108,13 @@
   <code><a href="#get">get(serviceName, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a managed service. Authentication is required unless the service is</p>
 <p class="toc_element">
-  <code><a href="#getConfig">getConfig(serviceName, configId=None, view=None, x__xgafv=None)</a></code></p>
+  <code><a href="#getConfig">getConfig(serviceName, view=None, configId=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a service configuration (version) for a managed service.</p>
 <p class="toc_element">
   <code><a href="#getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
-  <code><a href="#list">list(producerProjectId=None, pageSize=None, consumerId=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(pageToken=None, consumerId=None, producerProjectId=None, pageSize=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists managed services.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -171,20 +171,17 @@
         #
         # 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).
-      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
-      &quot;message&quot;: &quot;A String&quot;, # 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.
       &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
           # message types for APIs to use.
         {
           &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # 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.
     },
-    &quot;name&quot;: &quot;A String&quot;, # 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}`.
     &quot;metadata&quot;: { # 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
@@ -204,6 +201,9 @@
         # `TakeSnapshotResponse`.
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
+    &quot;name&quot;: &quot;A String&quot;, # 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>
 
@@ -236,20 +236,17 @@
         #
         # 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).
-      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
-      &quot;message&quot;: &quot;A String&quot;, # 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.
       &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
           # message types for APIs to use.
         {
           &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # 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.
     },
-    &quot;name&quot;: &quot;A String&quot;, # 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}`.
     &quot;metadata&quot;: { # 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
@@ -269,6 +266,9 @@
         # `TakeSnapshotResponse`.
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
+    &quot;name&quot;: &quot;A String&quot;, # 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>
 
@@ -315,20 +315,17 @@
         #
         # 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).
-      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
-      &quot;message&quot;: &quot;A String&quot;, # 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.
       &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
           # message types for APIs to use.
         {
           &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # 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.
     },
-    &quot;name&quot;: &quot;A String&quot;, # 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}`.
     &quot;metadata&quot;: { # 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
@@ -348,6 +345,9 @@
         # `TakeSnapshotResponse`.
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
+    &quot;name&quot;: &quot;A String&quot;, # 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>
 
@@ -395,20 +395,17 @@
         #
         # 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).
-      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
-      &quot;message&quot;: &quot;A String&quot;, # 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.
       &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
           # message types for APIs to use.
         {
           &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # 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.
     },
-    &quot;name&quot;: &quot;A String&quot;, # 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}`.
     &quot;metadata&quot;: { # 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
@@ -428,6 +425,9 @@
         # `TakeSnapshotResponse`.
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
+    &quot;name&quot;: &quot;A String&quot;, # 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>
 
@@ -450,14 +450,14 @@
     The object takes the form of:
 
 { # Request message for GenerateConfigReport method.
-    &quot;oldConfig&quot;: { # Optional. Service configuration against which the comparison will be done.
+    &quot;newConfig&quot;: { # Required. Service configuration for which we want to generate the report.
         # For this version of API, the supported types are
         # google.api.servicemanagement.v1.ConfigRef,
         # google.api.servicemanagement.v1.ConfigSource,
         # and google.api.Service
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
-    &quot;newConfig&quot;: { # Required. Service configuration for which we want to generate the report.
+    &quot;oldConfig&quot;: { # Optional. Service configuration against which the comparison will be done.
         # For this version of API, the supported types are
         # google.api.servicemanagement.v1.ConfigRef,
         # google.api.servicemanagement.v1.ConfigSource,
@@ -492,9 +492,6 @@
               # Includes detailed information about a field that have changed with
               # applicable advice about potential consequences for the change, such as
               # backwards-incompatibility.
-            &quot;changeType&quot;: &quot;A String&quot;, # The type for this change, either ADDED, REMOVED, or MODIFIED.
-            &quot;newValue&quot;: &quot;A String&quot;, # Value of the changed object in the new Service configuration,
-                # in JSON format. This field will not be populated if ChangeType == REMOVED.
             &quot;advices&quot;: [ # Collection of advice provided for this change, useful for determining the
                 # possible impact of this change.
               { # Generated advice about this change, used for providing more
@@ -505,6 +502,9 @@
             ],
             &quot;oldValue&quot;: &quot;A String&quot;, # Value of the changed object in the old Service configuration,
                 # in JSON format. This field will not be populated if ChangeType == ADDED.
+            &quot;newValue&quot;: &quot;A String&quot;, # Value of the changed object in the new Service configuration,
+                # in JSON format. This field will not be populated if ChangeType == REMOVED.
+            &quot;changeType&quot;: &quot;A String&quot;, # The type for this change, either ADDED, REMOVED, or MODIFIED.
             &quot;element&quot;: &quot;A String&quot;, # Object hierarchy path to the change, with levels separated by a &#x27;.&#x27;
                 # character. For repeated fields, an applicable unique identifier field is
                 # used for the index (usually selector, name, or id). For maps, the term
@@ -523,9 +523,9 @@
         # report
         # belongs to.
       { # Represents a diagnostic message (error or warning)
-        &quot;message&quot;: &quot;A String&quot;, # Message describing the error or warning.
-        &quot;location&quot;: &quot;A String&quot;, # File name and line number of the error or warning.
         &quot;kind&quot;: &quot;A String&quot;, # The kind of diagnostic information provided.
+        &quot;location&quot;: &quot;A String&quot;, # File name and line number of the error or warning.
+        &quot;message&quot;: &quot;A String&quot;, # Message describing the error or warning.
       },
     ],
     &quot;id&quot;: &quot;A String&quot;, # ID of the service configuration this report belongs to.
@@ -557,18 +557,18 @@
 </div>
 
 <div class="method">
-    <code class="details" id="getConfig">getConfig(serviceName, configId=None, view=None, x__xgafv=None)</code>
+    <code class="details" id="getConfig">getConfig(serviceName, view=None, configId=None, x__xgafv=None)</code>
   <pre>Gets a service configuration (version) for a managed service.
 
 Args:
   serviceName: string, Required. The name of the service.  See the [overview](/service-management/overview)
 for naming requirements.  For example: `example.googleapis.com`. (required)
+  view: string, Specifies which parts of the Service Config should be returned in the
+response.
   configId: string, Required. The id of the service configuration resource.
 
 This field must be specified for the server to return all fields, including
 `SourceInfo`.
-  view: string, Specifies which parts of the Service Config should be returned in the
-response.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -600,273 +600,6 @@
       #       - selector: &quot;*&quot;
       #         requirements:
       #           provider_id: google_calendar_auth
-    &quot;control&quot;: { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
-        # service controller handles features like abuse, quota, billing, logging,
-        # monitoring, etc.
-      &quot;environment&quot;: &quot;A String&quot;, # The service control environment to use. If empty, no control plane
-          # feature (like quota and billing) will be enabled.
-    },
-    &quot;types&quot;: [ # A list of all proto message types included in this API service.
-        # Types referenced directly or indirectly by the `apis` are
-        # automatically included.  Messages which are not referenced but
-        # shall be included, such as types used by the `google.protobuf.Any` type,
-        # should be listed here by name. Example:
-        #
-        #     types:
-        #     - name: google.protobuf.Int32
-      { # A protocol buffer message type.
-        &quot;fields&quot;: [ # The list of fields.
-          { # A single field of a message type.
-            &quot;number&quot;: 42, # The field number.
-            &quot;name&quot;: &quot;A String&quot;, # The field name.
-            &quot;kind&quot;: &quot;A String&quot;, # The field type.
-            &quot;jsonName&quot;: &quot;A String&quot;, # The field JSON name.
-            &quot;cardinality&quot;: &quot;A String&quot;, # The field cardinality.
-            &quot;options&quot;: [ # The protocol buffer options.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `&quot;google.api.http&quot;`.
-                &quot;value&quot;: { # The option&#x27;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.
-                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-            &quot;defaultValue&quot;: &quot;A String&quot;, # The string value of the default value of this field. Proto2 syntax only.
-            &quot;packed&quot;: True or False, # Whether to use alternative packed wire representation.
-            &quot;oneofIndex&quot;: 42, # The index of the field type in `Type.oneofs`, for message or enumeration
-                # types. The first type has index 1; zero means the type is not in the list.
-            &quot;typeUrl&quot;: &quot;A String&quot;, # The field type URL, without the scheme, for message or enumeration
-                # types. Example: `&quot;type.googleapis.com/google.protobuf.Timestamp&quot;`.
-          },
-        ],
-        &quot;oneofs&quot;: [ # The list of types appearing in `oneof` definitions in this type.
-          &quot;A String&quot;,
-        ],
-        &quot;name&quot;: &quot;A String&quot;, # The fully qualified message name.
-        &quot;options&quot;: [ # The protocol buffer options.
-          { # A protocol buffer option, which can be attached to a message, field,
-              # enumeration, etc.
-            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                # For custom options, it should be the fully-qualified name. For example,
-                # `&quot;google.api.http&quot;`.
-            &quot;value&quot;: { # The option&#x27;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.
-              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-            },
-          },
-        ],
-        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
-        &quot;sourceContext&quot;: { # `SourceContext` represents information about the source of a # The source context.
-            # protobuf element, like the file in which it is defined.
-          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
-              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
-        },
-      },
-    ],
-    &quot;sourceInfo&quot;: { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
-      &quot;sourceFiles&quot;: [ # All files used during config generation.
-        {
-          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-        },
-      ],
-    },
-    &quot;name&quot;: &quot;A String&quot;, # The service name, which is a DNS-like logical identifier for the
-        # service, such as `calendar.googleapis.com`. The service name
-        # typically goes through DNS verification to make sure the owner
-        # of the service also owns the DNS name.
-    &quot;title&quot;: &quot;A String&quot;, # The product title for this service.
-    &quot;logs&quot;: [ # Defines the logs used by this service.
-      { # A description of a log type. Example in YAML format:
-          #
-          #     - name: library.googleapis.com/activity_history
-          #       description: The history of borrowing and returning library items.
-          #       display_name: Activity
-          #       labels:
-          #       - key: /customer_id
-          #         description: Identifier of a library customer
-        &quot;labels&quot;: [ # The set of labels that are available to describe a specific log entry.
-            # Runtime requests that contain labels not specified here are
-            # considered invalid.
-          { # A description of a label.
-            &quot;valueType&quot;: &quot;A String&quot;, # The type of data that can be assigned to the label.
-            &quot;key&quot;: &quot;A String&quot;, # The label key.
-            &quot;description&quot;: &quot;A String&quot;, # A human-readable description for the label.
-          },
-        ],
-        &quot;description&quot;: &quot;A String&quot;, # A human-readable description of this log. This information appears in
-            # the documentation and can contain details.
-        &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name for this log. This information appears on
-            # the user interface and should be concise.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the log. It must be less than 512 characters long and can
-            # include the following characters: upper- and lower-case alphanumeric
-            # characters [A-Za-z0-9], and punctuation characters including
-            # slash, underscore, hyphen, period [/_-.].
-      },
-    ],
-    &quot;metrics&quot;: [ # Defines the metrics used by this service.
-      { # Defines a metric type and its schema. Once a metric descriptor is created,
-          # deleting or altering it stops data collection and makes the metric type&#x27;s
-          # existing data unusable.
-        &quot;type&quot;: &quot;A String&quot;, # The metric type, including its DNS name prefix. The type is not
-            # URL-encoded.  All user-defined metric types have the DNS name
-            # `custom.googleapis.com` or `external.googleapis.com`.  Metric types should
-            # use a natural hierarchical grouping. For example:
-            #
-            #     &quot;custom.googleapis.com/invoice/paid/amount&quot;
-            #     &quot;external.googleapis.com/prometheus/up&quot;
-            #     &quot;appengine.googleapis.com/http/server/response_latencies&quot;
-        &quot;labels&quot;: [ # The set of labels that can be used to describe a specific
-            # instance of this metric type. For example, the
-            # `appengine.googleapis.com/http/server/response_latencies` metric
-            # type has a label for the HTTP response code, `response_code`, so
-            # you can look at latencies for successful responses or just
-            # for responses that failed.
-          { # A description of a label.
-            &quot;valueType&quot;: &quot;A String&quot;, # The type of data that can be assigned to the label.
-            &quot;key&quot;: &quot;A String&quot;, # The label key.
-            &quot;description&quot;: &quot;A String&quot;, # A human-readable description for the label.
-          },
-        ],
-        &quot;description&quot;: &quot;A String&quot;, # A detailed description of the metric, which can be used in documentation.
-        &quot;monitoredResourceTypes&quot;: [ # Read-only. If present, then a time
-            # series, which is identified partially by
-            # a metric type and a MonitoredResourceDescriptor, that is associated
-            # with this metric type can only be associated with one of the monitored
-            # resource types listed here.
-          &quot;A String&quot;,
-        ],
-        &quot;displayName&quot;: &quot;A String&quot;, # A concise name for the metric, which can be displayed in user interfaces.
-            # Use sentence case without an ending period, for example &quot;Request count&quot;.
-            # This field is optional but it is recommended to be set for any metrics
-            # associated with user-visible concepts, such as Quota.
-        &quot;metadata&quot;: { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
-          &quot;launchStage&quot;: &quot;A String&quot;, # Deprecated. Must use the MetricDescriptor.launch_stage instead.
-          &quot;ingestDelay&quot;: &quot;A String&quot;, # The delay of data points caused by ingestion. Data points older than this
-              # age are guaranteed to be ingested and available to be read, excluding
-              # data loss due to errors.
-          &quot;samplePeriod&quot;: &quot;A String&quot;, # The sampling period of metric data points. For metrics which are written
-              # periodically, consecutive data points are stored at this time interval,
-              # excluding data loss due to errors. Metrics with a higher granularity have
-              # a smaller sampling period.
-        },
-        &quot;metricKind&quot;: &quot;A String&quot;, # Whether the metric records instantaneous values, changes to a value, etc.
-            # Some combinations of `metric_kind` and `value_type` might not be supported.
-        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable
-            # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
-            # defines the representation of the stored metric values.
-            #
-            # Different systems may scale the values to be more easily displayed (so a
-            # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
-            # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
-            # `KBy`, then the value of the metric is always in thousands of bytes, no
-            # matter how it may be displayed..
-            #
-            # If you want a custom metric to record the exact number of CPU-seconds used
-            # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
-            # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
-            # CPU-seconds, then the value is written as `12005`.
-            #
-            # Alternatively, if you want a custom metric to record data in a more
-            # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
-            # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
-            # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
-            #
-            # The supported units are a subset of [The Unified Code for Units of
-            # Measure](http://unitsofmeasure.org/ucum.html) standard:
-            #
-            # **Basic units (UNIT)**
-            #
-            # * `bit`   bit
-            # * `By`    byte
-            # * `s`     second
-            # * `min`   minute
-            # * `h`     hour
-            # * `d`     day
-            #
-            # **Prefixes (PREFIX)**
-            #
-            # * `k`     kilo    (10^3)
-            # * `M`     mega    (10^6)
-            # * `G`     giga    (10^9)
-            # * `T`     tera    (10^12)
-            # * `P`     peta    (10^15)
-            # * `E`     exa     (10^18)
-            # * `Z`     zetta   (10^21)
-            # * `Y`     yotta   (10^24)
-            #
-            # * `m`     milli   (10^-3)
-            # * `u`     micro   (10^-6)
-            # * `n`     nano    (10^-9)
-            # * `p`     pico    (10^-12)
-            # * `f`     femto   (10^-15)
-            # * `a`     atto    (10^-18)
-            # * `z`     zepto   (10^-21)
-            # * `y`     yocto   (10^-24)
-            #
-            # * `Ki`    kibi    (2^10)
-            # * `Mi`    mebi    (2^20)
-            # * `Gi`    gibi    (2^30)
-            # * `Ti`    tebi    (2^40)
-            # * `Pi`    pebi    (2^50)
-            #
-            # **Grammar**
-            #
-            # The grammar also includes these connectors:
-            #
-            # * `/`    division or ratio (as an infix operator). For examples,
-            #          `kBy/{email}` or `MiBy/10ms` (although you should almost never
-            #          have `/s` in a metric `unit`; rates should always be computed at
-            #          query time from the underlying cumulative or delta value).
-            # * `.`    multiplication or composition (as an infix operator). For
-            #          examples, `GBy.d` or `k{watt}.h`.
-            #
-            # The grammar for a unit is as follows:
-            #
-            #     Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
-            #
-            #     Component = ( [ PREFIX ] UNIT | &quot;%&quot; ) [ Annotation ]
-            #               | Annotation
-            #               | &quot;1&quot;
-            #               ;
-            #
-            #     Annotation = &quot;{&quot; NAME &quot;}&quot; ;
-            #
-            # Notes:
-            #
-            # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
-            #    is used alone, then the unit is equivalent to `1`. For examples,
-            #    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
-            # * `NAME` is a sequence of non-blank printable ASCII characters not
-            #    containing `{` or `}`.
-            # * `1` represents a unitary [dimensionless
-            #    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
-            #    as in `1/s`. It is typically used when none of the basic units are
-            #    appropriate. For example, &quot;new users per day&quot; can be represented as
-            #    `1/d` or `{new-users}/d` (and a metric value `5` would mean &quot;5 new
-            #    users). Alternatively, &quot;thousands of page views per day&quot; would be
-            #    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
-            #    value of `5.3` would mean &quot;5300 page views per day&quot;).
-            # * `%` represents dimensionless value of 1/100, and annotates values giving
-            #    a percentage (so the metric values are typically in the range of 0..100,
-            #    and a metric value `3` means &quot;3 percent&quot;).
-            # * `10^2.%` indicates a metric contains a ratio, typically in the range
-            #    0..1, that will be multiplied by 100 and displayed as a percentage
-            #    (so a metric value `0.03` means &quot;3 percent&quot;).
-        &quot;launchStage&quot;: &quot;A String&quot;, # Optional. The launch stage of the metric definition.
-        &quot;valueType&quot;: &quot;A String&quot;, # Whether the measurement is an integer, a floating-point number, etc.
-            # Some combinations of `metric_kind` and `value_type` might not be supported.
-        &quot;name&quot;: &quot;A String&quot;, # The resource name of the metric descriptor.
-      },
-    ],
     &quot;enums&quot;: [ # A list of all enum types included in this API service.  Enums
         # referenced directly or indirectly by the `apis` are automatically
         # included.  Enums which are not referenced but shall be included
@@ -878,530 +611,414 @@
         &quot;options&quot;: [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                # For custom options, it should be the fully-qualified name. For example,
-                # `&quot;google.api.http&quot;`.
             &quot;value&quot;: { # The option&#x27;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.
               &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
             },
+            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `&quot;google.api.http&quot;`.
           },
         ],
-        &quot;name&quot;: &quot;A String&quot;, # Enum type name.
-        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
+        &quot;enumvalue&quot;: [ # Enum value definitions.
+          { # Enum value definition.
+            &quot;name&quot;: &quot;A String&quot;, # Enum value name.
+            &quot;options&quot;: [ # Protocol buffer options.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                &quot;value&quot;: { # The option&#x27;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.
+                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+                },
+                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `&quot;google.api.http&quot;`.
+              },
+            ],
+            &quot;number&quot;: 42, # Enum value number.
+          },
+        ],
         &quot;sourceContext&quot;: { # `SourceContext` represents information about the source of a # The source context.
             # protobuf element, like the file in which it is defined.
           &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
               # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
         },
-        &quot;enumvalue&quot;: [ # Enum value definitions.
-          { # Enum value definition.
-            &quot;name&quot;: &quot;A String&quot;, # Enum value name.
-            &quot;number&quot;: 42, # Enum value number.
-            &quot;options&quot;: [ # Protocol buffer options.
+        &quot;name&quot;: &quot;A String&quot;, # Enum type name.
+        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
+      },
+    ],
+    &quot;backend&quot;: { # `Backend` defines the backend configuration for a service. # API backend configuration.
+      &quot;rules&quot;: [ # A list of API backend rules that apply to individual API methods.
+          #
+          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
+        { # A backend rule provides configuration for an individual API element.
+          &quot;disableAuth&quot;: True or False, # When disable_auth is true, a JWT ID token won&#x27;t be generated and the
+              # original &quot;Authorization&quot; HTTP header will be preserved. If the header is
+              # used to carry the original token and is expected by the backend, this
+              # field must be set to true to preserve the header.
+          &quot;address&quot;: &quot;A String&quot;, # The address of the API backend.
+              #
+              # The scheme is used to determine the backend protocol and security.
+              # The following schemes are accepted:
+              #
+              #    SCHEME        PROTOCOL    SECURITY
+              #    http://       HTTP        None
+              #    https://      HTTP        TLS
+              #    grpc://       gRPC        None
+              #    grpcs://      gRPC        TLS
+              #
+              # It is recommended to explicitly include a scheme. Leaving out the scheme
+              # may cause constrasting behaviors across platforms.
+              #
+              # If the port is unspecified, the default is:
+              # - 80 for schemes without TLS
+              # - 443 for schemes with TLS
+              #
+              # For HTTP backends, use protocol
+              # to specify the protocol version.
+          &quot;minDeadline&quot;: 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
+              # value lower than this will be rejected.
+          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
+              #
+              # Refer to selector for syntax details.
+          &quot;protocol&quot;: &quot;A String&quot;, # The protocol used for sending a request to the backend.
+              # The supported values are &quot;http/1.1&quot; and &quot;h2&quot;.
+              #
+              # The default value is inferred from the scheme in the
+              # address field:
+              #
+              #    SCHEME        PROTOCOL
+              #    http://       http/1.1
+              #    https://      http/1.1
+              #    grpc://       h2
+              #    grpcs://      h2
+              #
+              # For secure HTTP backends (https://) that support HTTP/2, set this field
+              # to &quot;h2&quot; for improved performance.
+              #
+              # Configuring this field to non-default values is only supported for secure
+              # HTTP backends. This field will be ignored for all other backends.
+              #
+              # See
+              # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
+              # for more details on the supported values.
+          &quot;operationDeadline&quot;: 3.14, # The number of seconds to wait for the completion of a long running
+              # operation. The default is no deadline.
+          &quot;pathTranslation&quot;: &quot;A String&quot;,
+          &quot;jwtAudience&quot;: &quot;A String&quot;, # The JWT audience is used when generating a JWT ID token for the backend.
+              # This ID token will be added in the HTTP &quot;authorization&quot; header, and sent
+              # to the backend.
+          &quot;deadline&quot;: 3.14, # The number of seconds to wait for a response from a request. The default
+              # varies based on the request protocol and deployment environment.
+        },
+      ],
+    },
+    &quot;systemTypes&quot;: [ # A list of all proto message types included in this API service.
+        # It serves similar purpose as [google.api.Service.types], except that
+        # these types are not needed by user-defined APIs. Therefore, they will not
+        # show up in the generated discovery doc. This field should only be used
+        # to define system APIs in ESF.
+      { # A protocol buffer message type.
+        &quot;sourceContext&quot;: { # `SourceContext` represents information about the source of a # The source context.
+            # protobuf element, like the file in which it is defined.
+          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
+              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
+        },
+        &quot;oneofs&quot;: [ # The list of types appearing in `oneof` definitions in this type.
+          &quot;A String&quot;,
+        ],
+        &quot;fields&quot;: [ # The list of fields.
+          { # A single field of a message type.
+            &quot;oneofIndex&quot;: 42, # The index of the field type in `Type.oneofs`, for message or enumeration
+                # types. The first type has index 1; zero means the type is not in the list.
+            &quot;name&quot;: &quot;A String&quot;, # The field name.
+            &quot;defaultValue&quot;: &quot;A String&quot;, # The string value of the default value of this field. Proto2 syntax only.
+            &quot;packed&quot;: True or False, # Whether to use alternative packed wire representation.
+            &quot;typeUrl&quot;: &quot;A String&quot;, # The field type URL, without the scheme, for message or enumeration
+                # types. Example: `&quot;type.googleapis.com/google.protobuf.Timestamp&quot;`.
+            &quot;cardinality&quot;: &quot;A String&quot;, # The field cardinality.
+            &quot;jsonName&quot;: &quot;A String&quot;, # The field JSON name.
+            &quot;kind&quot;: &quot;A String&quot;, # The field type.
+            &quot;options&quot;: [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `&quot;google.api.http&quot;`.
                 &quot;value&quot;: { # The option&#x27;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.
                   &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                 },
+                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `&quot;google.api.http&quot;`.
               },
             ],
+            &quot;number&quot;: 42, # The field number.
           },
         ],
-      },
-    ],
-    &quot;authentication&quot;: { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
-        #
-        # 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: &quot;*&quot;
-        #         requirements:
-        #           provider_id: google_calendar_auth
-      &quot;rules&quot;: [ # A list of authentication rules that apply to individual API methods.
-          #
-          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; 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&#x27;s an error to include more than one kind of credential in a single
-            # request.
-            #
-            # If a method doesn&#x27;t have any auth requirements, request credentials will be
-            # ignored.
-          &quot;oauth&quot;: { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
-              # there are scopes defined for &quot;Read-only access to Google Calendar&quot; and
-              # &quot;Access to Cloud Platform&quot;. 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.
-            &quot;canonicalScopes&quot;: &quot;A String&quot;, # 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
-          },
-          &quot;requirements&quot;: [ # 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).
-              &quot;audiences&quot;: &quot;A String&quot;, # 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
-                  # &quot;https://Service_name/API_name&quot;
-                  # will be accepted. For example, if no audiences are in the setting,
-                  # LibraryService API will only accept JWTs with the following audience
-                  # &quot;https://library-example.googleapis.com/google.example.library.v1.LibraryService&quot;.
-                  #
-                  # Example:
-                  #
-                  #     audiences: bookstore_android.apps.googleusercontent.com,
-                  #                bookstore_web.apps.googleusercontent.com
-              &quot;providerId&quot;: &quot;A String&quot;, # id from authentication provider.
-                  #
-                  # Example:
-                  #
-                  #     provider_id: bookstore_auth
-            },
-          ],
-          &quot;allowWithoutCredential&quot;: True or False, # If true, the service accepts API keys without any other credential.
-          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
-              #
-              # Refer to selector for syntax details.
-        },
-      ],
-      &quot;providers&quot;: [ # 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).
-          &quot;audiences&quot;: &quot;A String&quot;, # 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:
-              #   - &quot;https://[service.name]/[google.protobuf.Api.name]&quot;
-              #   - &quot;https://[service.name]/&quot;
-              # 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
-          &quot;jwtLocations&quot;: [ # 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: &quot;Bearer &quot;
-              #    - header: x-goog-iap-jwt-assertion
-              #    - query: access_token
-            { # Specifies a location to extract JWT from an API request.
-              &quot;query&quot;: &quot;A String&quot;, # Specifies URL query parameter name to extract JWT token.
-              &quot;header&quot;: &quot;A String&quot;, # Specifies HTTP header name to extract JWT token.
-              &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix{token}&quot;
-                  # Only applies to &quot;in&quot; header type. Must be empty for &quot;in&quot; 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 &quot;Authorization: Bearer {JWT}&quot;,
-                  # value_prefix=&quot;Bearer &quot; with a space at the end.
-            },
-          ],
-          &quot;issuer&quot;: &quot;A String&quot;, # 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
-          &quot;id&quot;: &quot;A String&quot;, # The unique identifier of the auth provider. It will be referred to by
-              # `AuthRequirement.provider_id`.
-              #
-              # Example: &quot;bookstore_auth&quot;.
-          &quot;jwksUri&quot;: &quot;A String&quot;, # URL of the provider&#x27;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
-          &quot;authorizationUrl&quot;: &quot;A String&quot;, # Redirect URL if JWT token is required but not present or is expired.
-              # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
-        },
-      ],
-    },
-    &quot;documentation&quot;: { # `Documentation` provides the information for describing a service. # Additional API documentation.
-        #
-        # 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.
-      &quot;documentationRootUrl&quot;: &quot;A String&quot;, # The URL to the root of documentation.
-      &quot;serviceRootUrl&quot;: &quot;A String&quot;, # 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.
-      &quot;rules&quot;: [ # A list of documentation rules that apply to individual API elements.
-          #
-          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
-        { # A documentation rule provides information about individual API elements.
-          &quot;description&quot;: &quot;A String&quot;, # Description of the selected API(s).
-          &quot;deprecationDescription&quot;: &quot;A String&quot;, # Deprecation description of the selected element(s). It can be provided if
-              # an element is marked as `deprecated`.
-          &quot;selector&quot;: &quot;A String&quot;, # The selector is a comma-separated list of patterns. Each pattern is a
-              # qualified name of the element which may end in &quot;*&quot;, indicating a wildcard.
-              # Wildcards are only allowed at the end and for a whole component of the
-              # qualified name, i.e. &quot;foo.*&quot; is ok, but not &quot;foo.b*&quot; or &quot;foo.*.bar&quot;. A
-              # wildcard will match one or more components. To specify a default for all
-              # applicable elements, the whole pattern &quot;*&quot; is used.
-        },
-      ],
-      &quot;pages&quot;: [ # The top level pages for the documentation set.
-        { # Represents a documentation page. A page can contain subpages to represent
-            # nested documentation set structure.
-          &quot;name&quot;: &quot;A String&quot;, # 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`.
-          &quot;subpages&quot;: [ # Subpages of this page. The order of subpages specified here will be
-              # honored in the generated docset.
-            # Object with schema name: Page
-          ],
-          &quot;content&quot;: &quot;A String&quot;, # 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.
-        },
-      ],
-      &quot;summary&quot;: &quot;A String&quot;, # A short summary of what the service does. Can only be provided by
-          # plain text.
-      &quot;overview&quot;: &quot;A String&quot;, # 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.
-    },
-    &quot;apis&quot;: [ # A list of API interfaces exported by this service. Only the `name` field
-        # of the google.protobuf.Api needs to be provided by the configuration
-        # author, as the remaining fields will be derived from the IDL during the
-        # normalization process. It is an error to specify an API interface here
-        # which cannot be resolved against the associated IDL files.
-      { # Api is a light-weight descriptor for an API Interface.
-          #
-          # Interfaces are also described as &quot;protocol buffer services&quot; in some contexts,
-          # such as by the &quot;service&quot; 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 &quot;APIs&quot; in other contexts, such as the name of
-          # this message itself. See https://cloud.google.com/apis/design/glossary for
-          # detailed terminology.
-        &quot;options&quot;: [ # Any metadata attached to the interface.
+        &quot;options&quot;: [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                # For custom options, it should be the fully-qualified name. For example,
-                # `&quot;google.api.http&quot;`.
             &quot;value&quot;: { # The option&#x27;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.
               &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
             },
+            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `&quot;google.api.http&quot;`.
           },
         ],
-        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax of the service.
-        &quot;sourceContext&quot;: { # `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.
-          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
-              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
-        },
-        &quot;mixins&quot;: [ # 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 = &quot;/v1/{resource=**}:getAcl&quot;;
-              #       }
-              #     }
-              #
-              #     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 = &quot;/v2/{resource=**}&quot;;
-              #       }
-              #     }
-              #
-              # 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 = &quot;/v2/{resource=**}:getAcl&quot;;
-              #       }
-              #       ...
-              #     }
-              #
-              # 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 = &quot;/v2/acls/{resource=**}:getAcl&quot;;
-              #       }
-              #       ...
-              #     }
-            &quot;name&quot;: &quot;A String&quot;, # The fully qualified name of the interface which is included.
-            &quot;root&quot;: &quot;A String&quot;, # If non-empty specifies a path under which inherited HTTP paths
-                # are rooted.
-          },
-        ],
-        &quot;version&quot;: &quot;A String&quot;, # 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.
-        &quot;methods&quot;: [ # The methods of this interface, in unspecified order.
-          { # Method represents a method of an API interface.
-            &quot;requestTypeUrl&quot;: &quot;A String&quot;, # A URL of the input message type.
-            &quot;name&quot;: &quot;A String&quot;, # The simple name of this method.
-            &quot;responseStreaming&quot;: True or False, # If true, the response is streamed.
-            &quot;requestStreaming&quot;: True or False, # If true, the request is streamed.
-            &quot;options&quot;: [ # Any metadata attached to the method.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `&quot;google.api.http&quot;`.
-                &quot;value&quot;: { # The option&#x27;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.
-                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-            &quot;syntax&quot;: &quot;A String&quot;, # The source syntax of this method.
-            &quot;responseTypeUrl&quot;: &quot;A String&quot;, # The URL of the output message type.
-          },
-        ],
-        &quot;name&quot;: &quot;A String&quot;, # The fully qualified name of this interface, including package name
-            # followed by the interface&#x27;s simple name.
+        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
+        &quot;name&quot;: &quot;A String&quot;, # The fully qualified message name.
       },
     ],
-    &quot;customError&quot;: { # Customize service error responses.  For example, list any service # Custom error configuration.
-        # specific protobuf types that can appear in error detail lists of
-        # error responses.
-        #
-        # Example:
-        #
-        #     custom_error:
-        #       types:
-        #       - google.foo.v1.CustomError
-        #       - google.foo.v1.AnotherError
-      &quot;types&quot;: [ # The list of custom error detail types, e.g. &#x27;google.foo.v1.CustomError&#x27;.
-        &quot;A String&quot;,
-      ],
-      &quot;rules&quot;: [ # The list of custom error rules that apply to individual API messages.
-          #
-          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
-        { # A custom error rule.
-          &quot;isErrorType&quot;: True or False, # Mark this message as possible payload in error response.  Otherwise,
-              # objects of this type will be filtered when they appear in error payload.
-          &quot;selector&quot;: &quot;A String&quot;, # Selects messages to which this rule applies.
-              #
-              # Refer to selector for syntax details.
+    &quot;name&quot;: &quot;A String&quot;, # The service name, which is a DNS-like logical identifier for the
+        # service, such as `calendar.googleapis.com`. The service name
+        # typically goes through DNS verification to make sure the owner
+        # of the service also owns the DNS name.
+    &quot;sourceInfo&quot;: { # Source information used to create a Service Config # Output only. The source information for this configuration if available.
+      &quot;sourceFiles&quot;: [ # All files used during config generation.
+        {
+          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
-    &quot;id&quot;: &quot;A String&quot;, # A unique ID for a specific instance of this message, typically assigned
-        # by the client for tracking purpose. Must be no longer than 63 characters
-        # and only lower case letters, digits, &#x27;.&#x27;, &#x27;_&#x27; and &#x27;-&#x27; are allowed. If
-        # empty, the server may choose to generate one instead.
+    &quot;billing&quot;: { # Billing related configuration of the service. # Billing configuration.
+        #
+        # The following example shows how to configure monitored resources and metrics
+        # for billing, `consumer_destinations` is the only supported destination and
+        # the monitored resources need at least one label key
+        # `cloud.googleapis.com/location` to indicate the location of the billing
+        # usage, using different monitored resources between monitoring and billing is
+        # recommended so they can be evolved independently:
+        #
+        #
+        #     monitored_resources:
+        #     - type: library.googleapis.com/billing_branch
+        #       labels:
+        #       - key: cloud.googleapis.com/location
+        #         description: |
+        #           Predefined label to support billing location restriction.
+        #       - key: city
+        #         description: |
+        #           Custom label to define the city where the library branch is located
+        #           in.
+        #       - key: name
+        #         description: Custom label to define the name of the library branch.
+        #     metrics:
+        #     - name: library.googleapis.com/book/borrowed_count
+        #       metric_kind: DELTA
+        #       value_type: INT64
+        #       unit: &quot;1&quot;
+        #     billing:
+        #       consumer_destinations:
+        #       - monitored_resource: library.googleapis.com/billing_branch
+        #         metrics:
+        #         - library.googleapis.com/book/borrowed_count
+      &quot;consumerDestinations&quot;: [ # Billing configurations for sending metrics to the consumer project.
+          # There can be multiple consumer destinations per service, each one must have
+          # a different monitored resource type. A metric can be used in at most
+          # one consumer destination.
+        { # Configuration of a specific billing destination (Currently only support
+            # bill against consumer project).
+          &quot;metrics&quot;: [ # Names of the metrics to report to this billing destination.
+              # Each name must be defined in Service.metrics section.
+            &quot;A String&quot;,
+          ],
+          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
+              # Service.monitored_resources section.
+        },
+      ],
+    },
+    &quot;monitoring&quot;: { # Monitoring configuration of the service. # Monitoring configuration.
+        #
+        # The example below shows how to configure monitored resources and metrics
+        # for monitoring. In the example, a monitored resource and two metrics are
+        # defined. The `library.googleapis.com/book/returned_count` metric is sent
+        # to both producer and consumer projects, whereas the
+        # `library.googleapis.com/book/num_overdue` metric is only sent to the
+        # consumer project.
+        #
+        #     monitored_resources:
+        #     - type: library.googleapis.com/Branch
+        #       display_name: &quot;Library Branch&quot;
+        #       description: &quot;A branch of a library.&quot;
+        #       launch_stage: GA
+        #       labels:
+        #       - key: resource_container
+        #         description: &quot;The Cloud container (ie. project id) for the Branch.&quot;
+        #       - key: location
+        #         description: &quot;The location of the library branch.&quot;
+        #       - key: branch_id
+        #         description: &quot;The id of the branch.&quot;
+        #     metrics:
+        #     - name: library.googleapis.com/book/returned_count
+        #       display_name: &quot;Books Returned&quot;
+        #       description: &quot;The count of books that have been returned.&quot;
+        #       launch_stage: GA
+        #       metric_kind: DELTA
+        #       value_type: INT64
+        #       unit: &quot;1&quot;
+        #       labels:
+        #       - key: customer_id
+        #         description: &quot;The id of the customer.&quot;
+        #     - name: library.googleapis.com/book/num_overdue
+        #       display_name: &quot;Books Overdue&quot;
+        #       description: &quot;The current number of overdue books.&quot;
+        #       launch_stage: GA
+        #       metric_kind: GAUGE
+        #       value_type: INT64
+        #       unit: &quot;1&quot;
+        #       labels:
+        #       - key: customer_id
+        #         description: &quot;The id of the customer.&quot;
+        #     monitoring:
+        #       producer_destinations:
+        #       - monitored_resource: library.googleapis.com/Branch
+        #         metrics:
+        #         - library.googleapis.com/book/returned_count
+        #       consumer_destinations:
+        #       - monitored_resource: library.googleapis.com/Branch
+        #         metrics:
+        #         - library.googleapis.com/book/returned_count
+        #         - library.googleapis.com/book/num_overdue
+      &quot;producerDestinations&quot;: [ # Monitoring configurations for sending metrics to the producer project.
+          # There can be multiple producer destinations. A monitored resource type may
+          # appear in multiple monitoring destinations if different aggregations are
+          # needed for different sets of metrics associated with that monitored
+          # resource type. A monitored resource and metric pair may only be used once
+          # in the Monitoring configuration.
+        { # Configuration of a specific monitoring destination (the producer project
+            # or the consumer project).
+          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
+              # Service.monitored_resources section.
+          &quot;metrics&quot;: [ # Types of the metrics to report to this monitoring destination.
+              # Each type must be defined in Service.metrics section.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;consumerDestinations&quot;: [ # Monitoring configurations for sending metrics to the consumer project.
+          # There can be multiple consumer destinations. A monitored resource type may
+          # appear in multiple monitoring destinations if different aggregations are
+          # needed for different sets of metrics associated with that monitored
+          # resource type. A monitored resource and metric pair may only be used once
+          # in the Monitoring configuration.
+        { # Configuration of a specific monitoring destination (the producer project
+            # or the consumer project).
+          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
+              # Service.monitored_resources section.
+          &quot;metrics&quot;: [ # Types of the metrics to report to this monitoring destination.
+              # Each type must be defined in Service.metrics section.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+    },
+    &quot;logging&quot;: { # Logging configuration of the service. # Logging configuration.
+        #
+        # The following example shows how to configure logs to be sent to the
+        # producer and consumer projects. In the example, the `activity_history`
+        # log is sent to both the producer and consumer projects, whereas the
+        # `purchase_history` log is only sent to the producer project.
+        #
+        #     monitored_resources:
+        #     - type: library.googleapis.com/branch
+        #       labels:
+        #       - key: /city
+        #         description: The city where the library branch is located in.
+        #       - key: /name
+        #         description: The name of the branch.
+        #     logs:
+        #     - name: activity_history
+        #       labels:
+        #       - key: /customer_id
+        #     - name: purchase_history
+        #     logging:
+        #       producer_destinations:
+        #       - monitored_resource: library.googleapis.com/branch
+        #         logs:
+        #         - activity_history
+        #         - purchase_history
+        #       consumer_destinations:
+        #       - monitored_resource: library.googleapis.com/branch
+        #         logs:
+        #         - activity_history
+      &quot;producerDestinations&quot;: [ # Logging configurations for sending logs to the producer project.
+          # There can be multiple producer destinations, each one must have a
+          # different monitored resource type. A log can be used in at most
+          # one producer destination.
+        { # Configuration of a specific logging destination (the producer project
+            # or the consumer project).
+          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in the
+              # Service.monitored_resources section.
+          &quot;logs&quot;: [ # Names of the logs to be sent to this destination. Each name must
+              # be defined in the Service.logs section. If the log name is
+              # not a domain scoped name, it will be automatically prefixed with
+              # the service name followed by &quot;/&quot;.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;consumerDestinations&quot;: [ # Logging configurations for sending logs to the consumer project.
+          # There can be multiple consumer destinations, each one must have a
+          # different monitored resource type. A log can be used in at most
+          # one consumer destination.
+        { # Configuration of a specific logging destination (the producer project
+            # or the consumer project).
+          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in the
+              # Service.monitored_resources section.
+          &quot;logs&quot;: [ # Names of the logs to be sent to this destination. Each name must
+              # be defined in the Service.logs section. If the log name is
+              # not a domain scoped name, it will be automatically prefixed with
+              # the service name followed by &quot;/&quot;.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+    },
+    &quot;control&quot;: { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
+        # service controller handles features like abuse, quota, billing, logging,
+        # monitoring, etc.
+      &quot;environment&quot;: &quot;A String&quot;, # The service control environment to use. If empty, no control plane
+          # feature (like quota and billing) will be enabled.
+    },
     &quot;usage&quot;: { # Configuration controlling usage of a service. # Configuration controlling usage of this service.
       &quot;requirements&quot;: [ # 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 &#x27;serviceusage.googleapis.com/billing-enabled&#x27;.
         &quot;A String&quot;,
       ],
+      &quot;serviceIdentity&quot;: { # 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: &quot;projects/123456789&quot;
+          #         display_name: &quot;Cloud XXX Service Agent&quot;
+          #         description: &quot;Used as the identity of Cloud XXX to access resources&quot;
+        &quot;serviceAccountParent&quot;: &quot;A String&quot;, # A service account project that hosts the service accounts.
+            #
+            # An example name would be:
+            # `projects/123456789`
+        &quot;description&quot;: &quot;A String&quot;, # Optional. A user-specified opaque description of the service account.
+            # Must be less than or equal to 256 UTF-8 bytes.
+        &quot;displayName&quot;: &quot;A String&quot;, # Optional. A user-specified name for the service account.
+            # Must be less than or equal to 100 UTF-8 bytes.
+      },
       &quot;rules&quot;: [ # A list of usage rules that apply to individual API methods.
           #
           # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
@@ -1430,16 +1047,16 @@
             #       rules:
             #       - selector: &quot;google.example.library.v1.LibraryService.CreateBook&quot;
             #         allow_unregistered_calls: true
+          &quot;skipServiceControl&quot;: 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.
           &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies. Use &#x27;*&#x27; to indicate all
               # methods in all APIs.
               #
               # Refer to selector for syntax details.
           &quot;allowUnregisteredCalls&quot;: True or False, # If true, the selected method allows unregistered calls, e.g. calls
               # that don&#x27;t identify any user or application.
-          &quot;skipServiceControl&quot;: 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.
         },
       ],
       &quot;producerNotificationChannel&quot;: &quot;A String&quot;, # The full resource name of a channel used for sending notifications to the
@@ -1450,78 +1067,82 @@
           # 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.
-      &quot;serviceIdentity&quot;: { # 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: &quot;projects/123456789&quot;
-          #         display_name: &quot;Cloud XXX Service Agent&quot;
-          #         description: &quot;Used as the identity of Cloud XXX to access resources&quot;
-        &quot;displayName&quot;: &quot;A String&quot;, # Optional. A user-specified name for the service account.
-            # Must be less than or equal to 100 UTF-8 bytes.
-        &quot;description&quot;: &quot;A String&quot;, # Optional. A user-specified opaque description of the service account.
-            # Must be less than or equal to 256 UTF-8 bytes.
-        &quot;serviceAccountParent&quot;: &quot;A String&quot;, # A service account project that hosts the service accounts.
-            #
-            # An example name would be:
-            # `projects/123456789`
-      },
     },
-    &quot;endpoints&quot;: [ # Configuration for network endpoints.  If this is empty, then an endpoint
-        # with the same name as the service is automatically generated to service all
-        # defined APIs.
-      { # `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 &#x27;google.example.library.v1.Library&#x27;
-          #       # 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
-        &quot;name&quot;: &quot;A String&quot;, # The canonical name of this endpoint.
-        &quot;target&quot;: &quot;A String&quot;, # 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,
-            # &quot;8.8.8.8&quot; or &quot;myservice.appspot.com&quot;.
-        &quot;allowCors&quot;: 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.
-        &quot;features&quot;: [ # The list of features enabled on this endpoint.
+    &quot;types&quot;: [ # A list of all proto message types included in this API service.
+        # Types referenced directly or indirectly by the `apis` are
+        # automatically included.  Messages which are not referenced but
+        # shall be included, such as types used by the `google.protobuf.Any` type,
+        # should be listed here by name. Example:
+        #
+        #     types:
+        #     - name: google.protobuf.Int32
+      { # A protocol buffer message type.
+        &quot;sourceContext&quot;: { # `SourceContext` represents information about the source of a # The source context.
+            # protobuf element, like the file in which it is defined.
+          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
+              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
+        },
+        &quot;oneofs&quot;: [ # The list of types appearing in `oneof` definitions in this type.
           &quot;A String&quot;,
         ],
-        &quot;aliases&quot;: [ # 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.
-          &quot;A String&quot;,
+        &quot;fields&quot;: [ # The list of fields.
+          { # A single field of a message type.
+            &quot;oneofIndex&quot;: 42, # The index of the field type in `Type.oneofs`, for message or enumeration
+                # types. The first type has index 1; zero means the type is not in the list.
+            &quot;name&quot;: &quot;A String&quot;, # The field name.
+            &quot;defaultValue&quot;: &quot;A String&quot;, # The string value of the default value of this field. Proto2 syntax only.
+            &quot;packed&quot;: True or False, # Whether to use alternative packed wire representation.
+            &quot;typeUrl&quot;: &quot;A String&quot;, # The field type URL, without the scheme, for message or enumeration
+                # types. Example: `&quot;type.googleapis.com/google.protobuf.Timestamp&quot;`.
+            &quot;cardinality&quot;: &quot;A String&quot;, # The field cardinality.
+            &quot;jsonName&quot;: &quot;A String&quot;, # The field JSON name.
+            &quot;kind&quot;: &quot;A String&quot;, # The field type.
+            &quot;options&quot;: [ # The protocol buffer options.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                &quot;value&quot;: { # The option&#x27;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.
+                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+                },
+                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `&quot;google.api.http&quot;`.
+              },
+            ],
+            &quot;number&quot;: 42, # The field number.
+          },
         ],
+        &quot;options&quot;: [ # The protocol buffer options.
+          { # A protocol buffer option, which can be attached to a message, field,
+              # enumeration, etc.
+            &quot;value&quot;: { # The option&#x27;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.
+              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+            },
+            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `&quot;google.api.http&quot;`.
+          },
+        ],
+        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
+        &quot;name&quot;: &quot;A String&quot;, # The fully qualified message name.
       },
     ],
-    &quot;configVersion&quot;: 42, # The semantic version of the service configuration. The config version
-        # affects the interpretation of the service configuration. For example,
-        # certain features are enabled by default for certain config versions.
-        #
-        # The latest config version is `3`.
     &quot;http&quot;: { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration.
         # HttpRule, each specifying the mapping of an RPC method
         # to one or more HTTP REST API methods.
+      &quot;fullyDecodeReservedExpansion&quot;: True or False, # When set to true, URL path parameters will be fully URI-decoded except in
+          # cases of single segment matches in reserved expansion, where &quot;%2F&quot; will be
+          # left encoded.
+          #
+          # The default behavior is to not decode RFC 6570 reserved characters in multi
+          # segment matches.
       &quot;rules&quot;: [ # A list of HTTP configuration rules that apply to individual API methods.
           #
           # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
@@ -1794,10 +1415,29 @@
             # If an API needs to use a JSON array for request or response body, it can map
             # the request or response body to a repeated field. However, some gRPC
             # Transcoding implementations may not support this feature.
+          &quot;put&quot;: &quot;A String&quot;, # Maps to HTTP PUT. Used for replacing a resource.
           &quot;selector&quot;: &quot;A String&quot;, # Selects a method to which this rule applies.
               #
               # Refer to selector for syntax details.
-          &quot;put&quot;: &quot;A String&quot;, # Maps to HTTP PUT. Used for replacing a resource.
+          &quot;post&quot;: &quot;A String&quot;, # Maps to HTTP POST. Used for creating a resource or performing an action.
+          &quot;responseBody&quot;: &quot;A String&quot;, # Optional. The name of the response field whose value is mapped to the HTTP
+              # response body. When omitted, the entire response message will be used
+              # as the HTTP response body.
+              #
+              # NOTE: The referred field must be present at the top-level of the response
+              # message type.
+          &quot;body&quot;: &quot;A String&quot;, # The name of the request field whose value is mapped to the HTTP request
+              # body, or `*` for mapping all request fields not captured by the path
+              # pattern to the HTTP body, or omitted for not having any HTTP request body.
+              #
+              # NOTE: the referred field must be present at the top-level of the request
+              # message type.
+          &quot;patch&quot;: &quot;A String&quot;, # Maps to HTTP PATCH. Used for updating a resource.
+          &quot;additionalBindings&quot;: [ # Additional HTTP bindings for the selector. Nested bindings must
+              # not contain an `additional_bindings` field themselves (that is,
+              # the nesting may only be one level deep).
+            # Object with schema name: HttpRule
+          ],
           &quot;custom&quot;: { # A custom pattern is used for defining custom HTTP verb. # The custom pattern is used for specifying an HTTP method that is not
               # included in the `pattern` field, such as HEAD, or &quot;*&quot; to leave the
               # HTTP method unspecified for this rule. The wild-card rule is useful
@@ -1805,378 +1445,354 @@
             &quot;path&quot;: &quot;A String&quot;, # The path matched by this custom verb.
             &quot;kind&quot;: &quot;A String&quot;, # The name of this custom HTTP verb.
           },
-          &quot;responseBody&quot;: &quot;A String&quot;, # Optional. The name of the response field whose value is mapped to the HTTP
-              # response body. When omitted, the entire response message will be used
-              # as the HTTP response body.
-              #
-              # NOTE: The referred field must be present at the top-level of the response
-              # message type.
           &quot;allowHalfDuplex&quot;: True or False, # When this flag is set to true, HTTP requests will be allowed to invoke a
               # half-duplex streaming method.
-          &quot;additionalBindings&quot;: [ # Additional HTTP bindings for the selector. Nested bindings must
-              # not contain an `additional_bindings` field themselves (that is,
-              # the nesting may only be one level deep).
-            # Object with schema name: HttpRule
-          ],
-          &quot;patch&quot;: &quot;A String&quot;, # Maps to HTTP PATCH. Used for updating a resource.
+          &quot;delete&quot;: &quot;A String&quot;, # Maps to HTTP DELETE. Used for deleting a resource.
           &quot;get&quot;: &quot;A String&quot;, # Maps to HTTP GET. Used for listing and getting information about
               # resources.
-          &quot;post&quot;: &quot;A String&quot;, # Maps to HTTP POST. Used for creating a resource or performing an action.
-          &quot;body&quot;: &quot;A String&quot;, # The name of the request field whose value is mapped to the HTTP request
-              # body, or `*` for mapping all request fields not captured by the path
-              # pattern to the HTTP body, or omitted for not having any HTTP request body.
-              #
-              # NOTE: the referred field must be present at the top-level of the request
-              # message type.
-          &quot;delete&quot;: &quot;A String&quot;, # Maps to HTTP DELETE. Used for deleting a resource.
         },
       ],
-      &quot;fullyDecodeReservedExpansion&quot;: True or False, # When set to true, URL path parameters will be fully URI-decoded except in
-          # cases of single segment matches in reserved expansion, where &quot;%2F&quot; will be
-          # left encoded.
+    },
+    &quot;logs&quot;: [ # Defines the logs used by this service.
+      { # A description of a log type. Example in YAML format:
           #
-          # The default behavior is to not decode RFC 6570 reserved characters in multi
-          # segment matches.
-    },
-    &quot;billing&quot;: { # Billing related configuration of the service. # Billing configuration.
-        #
-        # The following example shows how to configure monitored resources and metrics
-        # for billing, `consumer_destinations` is the only supported destination and
-        # the monitored resources need at least one label key
-        # `cloud.googleapis.com/location` to indicate the location of the billing
-        # usage, using different monitored resources between monitoring and billing is
-        # recommended so they can be evolved independently:
-        #
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/billing_branch
-        #       labels:
-        #       - key: cloud.googleapis.com/location
-        #         description: |
-        #           Predefined label to support billing location restriction.
-        #       - key: city
-        #         description: |
-        #           Custom label to define the city where the library branch is located
-        #           in.
-        #       - key: name
-        #         description: Custom label to define the name of the library branch.
-        #     metrics:
-        #     - name: library.googleapis.com/book/borrowed_count
-        #       metric_kind: DELTA
-        #       value_type: INT64
-        #       unit: &quot;1&quot;
-        #     billing:
-        #       consumer_destinations:
-        #       - monitored_resource: library.googleapis.com/billing_branch
-        #         metrics:
-        #         - library.googleapis.com/book/borrowed_count
-      &quot;consumerDestinations&quot;: [ # Billing configurations for sending metrics to the consumer project.
-          # There can be multiple consumer destinations per service, each one must have
-          # a different monitored resource type. A metric can be used in at most
-          # one consumer destination.
-        { # Configuration of a specific billing destination (Currently only support
-            # bill against consumer project).
-          &quot;metrics&quot;: [ # Names of the metrics to report to this billing destination.
-              # Each name must be defined in Service.metrics section.
-            &quot;A String&quot;,
-          ],
-          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
-        },
-      ],
-    },
-    &quot;systemTypes&quot;: [ # A list of all proto message types included in this API service.
-        # It serves similar purpose as [google.api.Service.types], except that
-        # these types are not needed by user-defined APIs. Therefore, they will not
-        # show up in the generated discovery doc. This field should only be used
-        # to define system APIs in ESF.
-      { # A protocol buffer message type.
-        &quot;fields&quot;: [ # The list of fields.
-          { # A single field of a message type.
-            &quot;number&quot;: 42, # The field number.
-            &quot;name&quot;: &quot;A String&quot;, # The field name.
-            &quot;kind&quot;: &quot;A String&quot;, # The field type.
-            &quot;jsonName&quot;: &quot;A String&quot;, # The field JSON name.
-            &quot;cardinality&quot;: &quot;A String&quot;, # The field cardinality.
-            &quot;options&quot;: [ # The protocol buffer options.
-              { # A protocol buffer option, which can be attached to a message, field,
-                  # enumeration, etc.
-                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                    # For custom options, it should be the fully-qualified name. For example,
-                    # `&quot;google.api.http&quot;`.
-                &quot;value&quot;: { # The option&#x27;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.
-                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-                },
-              },
-            ],
-            &quot;defaultValue&quot;: &quot;A String&quot;, # The string value of the default value of this field. Proto2 syntax only.
-            &quot;packed&quot;: True or False, # Whether to use alternative packed wire representation.
-            &quot;oneofIndex&quot;: 42, # The index of the field type in `Type.oneofs`, for message or enumeration
-                # types. The first type has index 1; zero means the type is not in the list.
-            &quot;typeUrl&quot;: &quot;A String&quot;, # The field type URL, without the scheme, for message or enumeration
-                # types. Example: `&quot;type.googleapis.com/google.protobuf.Timestamp&quot;`.
-          },
-        ],
-        &quot;oneofs&quot;: [ # The list of types appearing in `oneof` definitions in this type.
-          &quot;A String&quot;,
-        ],
-        &quot;name&quot;: &quot;A String&quot;, # The fully qualified message name.
-        &quot;options&quot;: [ # The protocol buffer options.
-          { # A protocol buffer option, which can be attached to a message, field,
-              # enumeration, etc.
-            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
-                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
-                # For custom options, it should be the fully-qualified name. For example,
-                # `&quot;google.api.http&quot;`.
-            &quot;value&quot;: { # The option&#x27;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.
-              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
-            },
-          },
-        ],
-        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax.
-        &quot;sourceContext&quot;: { # `SourceContext` represents information about the source of a # The source context.
-            # protobuf element, like the file in which it is defined.
-          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
-              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
-        },
-      },
-    ],
-    &quot;logging&quot;: { # Logging configuration of the service. # Logging configuration.
-        #
-        # The following example shows how to configure logs to be sent to the
-        # producer and consumer projects. In the example, the `activity_history`
-        # log is sent to both the producer and consumer projects, whereas the
-        # `purchase_history` log is only sent to the producer project.
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/branch
-        #       labels:
-        #       - key: /city
-        #         description: The city where the library branch is located in.
-        #       - key: /name
-        #         description: The name of the branch.
-        #     logs:
-        #     - name: activity_history
-        #       labels:
-        #       - key: /customer_id
-        #     - name: purchase_history
-        #     logging:
-        #       producer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         logs:
-        #         - activity_history
-        #         - purchase_history
-        #       consumer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         logs:
-        #         - activity_history
-      &quot;consumerDestinations&quot;: [ # Logging configurations for sending logs to the consumer project.
-          # There can be multiple consumer destinations, each one must have a
-          # different monitored resource type. A log can be used in at most
-          # one consumer destination.
-        { # Configuration of a specific logging destination (the producer project
-            # or the consumer project).
-          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in the
-              # Service.monitored_resources section.
-          &quot;logs&quot;: [ # Names of the logs to be sent to this destination. Each name must
-              # be defined in the Service.logs section. If the log name is
-              # not a domain scoped name, it will be automatically prefixed with
-              # the service name followed by &quot;/&quot;.
-            &quot;A String&quot;,
-          ],
-        },
-      ],
-      &quot;producerDestinations&quot;: [ # Logging configurations for sending logs to the producer project.
-          # There can be multiple producer destinations, each one must have a
-          # different monitored resource type. A log can be used in at most
-          # one producer destination.
-        { # Configuration of a specific logging destination (the producer project
-            # or the consumer project).
-          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in the
-              # Service.monitored_resources section.
-          &quot;logs&quot;: [ # Names of the logs to be sent to this destination. Each name must
-              # be defined in the Service.logs section. If the log name is
-              # not a domain scoped name, it will be automatically prefixed with
-              # the service name followed by &quot;/&quot;.
-            &quot;A String&quot;,
-          ],
-        },
-      ],
-    },
-    &quot;monitoredResources&quot;: [ # Defines the monitored resources used by this service. This is required
-        # by the Service.monitoring and Service.logging configurations.
-      { # An object that describes the schema of a MonitoredResource object using a
-          # type name and a set of labels.  For example, the monitored resource
-          # descriptor for Google Compute Engine VM instances has a type of
-          # `&quot;gce_instance&quot;` and specifies the use of the labels `&quot;instance_id&quot;` and
-          # `&quot;zone&quot;` to identify particular VM instances.
-          #
-          # Different APIs can support different monitored resource types. APIs generally
-          # provide a `list` method that returns the monitored resource descriptors used
-          # by the API.
-        &quot;launchStage&quot;: &quot;A String&quot;, # Optional. The launch stage of the monitored resource definition.
-        &quot;name&quot;: &quot;A String&quot;, # Optional. The resource name of the monitored resource descriptor:
-            # `&quot;projects/{project_id}/monitoredResourceDescriptors/{type}&quot;` where
-            # {type} is the value of the `type` field in this object and
-            # {project_id} is a project ID that provides API-specific context for
-            # accessing the type.  APIs that do not use project information can use the
-            # resource name format `&quot;monitoredResourceDescriptors/{type}&quot;`.
-        &quot;labels&quot;: [ # Required. A set of labels used to describe instances of this monitored
-            # resource type. For example, an individual Google Cloud SQL database is
-            # identified by values for the labels `&quot;database_id&quot;` and `&quot;zone&quot;`.
+          #     - name: library.googleapis.com/activity_history
+          #       description: The history of borrowing and returning library items.
+          #       display_name: Activity
+          #       labels:
+          #       - key: /customer_id
+          #         description: Identifier of a library customer
+        &quot;description&quot;: &quot;A String&quot;, # A human-readable description of this log. This information appears in
+            # the documentation and can contain details.
+        &quot;labels&quot;: [ # The set of labels that are available to describe a specific log entry.
+            # Runtime requests that contain labels not specified here are
+            # considered invalid.
           { # A description of a label.
             &quot;valueType&quot;: &quot;A String&quot;, # The type of data that can be assigned to the label.
-            &quot;key&quot;: &quot;A String&quot;, # The label key.
             &quot;description&quot;: &quot;A String&quot;, # A human-readable description for the label.
+            &quot;key&quot;: &quot;A String&quot;, # The label key.
           },
         ],
-        &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. For example, the type
-            # `&quot;cloudsql_database&quot;` represents databases in Google Cloud SQL.
-            # The maximum length of this value is 256 characters.
-        &quot;description&quot;: &quot;A String&quot;, # Optional. A detailed description of the monitored resource type that might
-            # be used in documentation.
-        &quot;displayName&quot;: &quot;A String&quot;, # Optional. A concise name for the monitored resource type that might be
-            # displayed in user interfaces. It should be a Title Cased Noun Phrase,
-            # without any article or other determiners. For example,
-            # `&quot;Google Cloud SQL Database&quot;`.
+        &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name for this log. This information appears on
+            # the user interface and should be concise.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the log. It must be less than 512 characters long and can
+            # include the following characters: upper- and lower-case alphanumeric
+            # characters [A-Za-z0-9], and punctuation characters including
+            # slash, underscore, hyphen, period [/_-.].
       },
     ],
-    &quot;monitoring&quot;: { # Monitoring configuration of the service. # Monitoring configuration.
-        #
-        # The example below shows how to configure monitored resources and metrics
-        # for monitoring. In the example, a monitored resource and two metrics are
-        # defined. The `library.googleapis.com/book/returned_count` metric is sent
-        # to both producer and consumer projects, whereas the
-        # `library.googleapis.com/book/overdue_count` metric is only sent to the
-        # consumer project.
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/branch
-        #       labels:
-        #       - key: /city
-        #         description: The city where the library branch is located in.
-        #       - key: /name
-        #         description: The name of the branch.
-        #     metrics:
-        #     - name: library.googleapis.com/book/returned_count
-        #       metric_kind: DELTA
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     - name: library.googleapis.com/book/overdue_count
-        #       metric_kind: GAUGE
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     monitoring:
-        #       producer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         metrics:
-        #         - library.googleapis.com/book/returned_count
-        #       consumer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         metrics:
-        #         - library.googleapis.com/book/returned_count
-        #         - library.googleapis.com/book/overdue_count
-      &quot;producerDestinations&quot;: [ # Monitoring configurations for sending metrics to the producer project.
-          # There can be multiple producer destinations. A monitored resouce type may
-          # appear in multiple monitoring destinations if different aggregations are
-          # needed for different sets of metrics associated with that monitored
-          # resource type. A monitored resource and metric pair may only be used once
-          # in the Monitoring configuration.
-        { # Configuration of a specific monitoring destination (the producer project
-            # or the consumer project).
-          &quot;metrics&quot;: [ # Types of the metrics to report to this monitoring destination.
-              # Each type must be defined in Service.metrics section.
-            &quot;A String&quot;,
-          ],
-          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
+    &quot;metrics&quot;: [ # Defines the metrics used by this service.
+      { # Defines a metric type and its schema. Once a metric descriptor is created,
+          # deleting or altering it stops data collection and makes the metric type&#x27;s
+          # existing data unusable.
+          #
+          # The following are specific rules for service defined Monitoring metric
+          # descriptors:
+          #
+          # * `type`, `metric_kind`, `value_type`, `description`, and `display_name`
+          #   fields are all required. The `unit` field must be specified
+          #   if the `value_type` is any of DOUBLE, INT64, DISTRIBUTION.
+          # * Maximum of default 500 metric descriptors per service is allowed.
+          # * Maximum of default 10 labels per metric descriptor is allowed.
+          #
+          # The default maximum limit can be overridden. Please follow
+          # https://cloud.google.com/monitoring/quotas
+        &quot;unit&quot;: &quot;A String&quot;, # The units in which the metric value is reported. It is only applicable
+            # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
+            # defines the representation of the stored metric values.
+            #
+            # Different systems may scale the values to be more easily displayed (so a
+            # value of `0.02KBy` _might_ be displayed as `20By`, and a value of
+            # `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
+            # `KBy`, then the value of the metric is always in thousands of bytes, no
+            # matter how it may be displayed..
+            #
+            # If you want a custom metric to record the exact number of CPU-seconds used
+            # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
+            # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
+            # CPU-seconds, then the value is written as `12005`.
+            #
+            # Alternatively, if you want a custom metric to record data in a more
+            # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
+            # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
+            # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
+            #
+            # The supported units are a subset of [The Unified Code for Units of
+            # Measure](http://unitsofmeasure.org/ucum.html) standard:
+            #
+            # **Basic units (UNIT)**
+            #
+            # * `bit`   bit
+            # * `By`    byte
+            # * `s`     second
+            # * `min`   minute
+            # * `h`     hour
+            # * `d`     day
+            # * `1`     dimensionless
+            #
+            # **Prefixes (PREFIX)**
+            #
+            # * `k`     kilo    (10^3)
+            # * `M`     mega    (10^6)
+            # * `G`     giga    (10^9)
+            # * `T`     tera    (10^12)
+            # * `P`     peta    (10^15)
+            # * `E`     exa     (10^18)
+            # * `Z`     zetta   (10^21)
+            # * `Y`     yotta   (10^24)
+            #
+            # * `m`     milli   (10^-3)
+            # * `u`     micro   (10^-6)
+            # * `n`     nano    (10^-9)
+            # * `p`     pico    (10^-12)
+            # * `f`     femto   (10^-15)
+            # * `a`     atto    (10^-18)
+            # * `z`     zepto   (10^-21)
+            # * `y`     yocto   (10^-24)
+            #
+            # * `Ki`    kibi    (2^10)
+            # * `Mi`    mebi    (2^20)
+            # * `Gi`    gibi    (2^30)
+            # * `Ti`    tebi    (2^40)
+            # * `Pi`    pebi    (2^50)
+            #
+            # **Grammar**
+            #
+            # The grammar also includes these connectors:
+            #
+            # * `/`    division or ratio (as an infix operator). For examples,
+            #          `kBy/{email}` or `MiBy/10ms` (although you should almost never
+            #          have `/s` in a metric `unit`; rates should always be computed at
+            #          query time from the underlying cumulative or delta value).
+            # * `.`    multiplication or composition (as an infix operator). For
+            #          examples, `GBy.d` or `k{watt}.h`.
+            #
+            # The grammar for a unit is as follows:
+            #
+            #     Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
+            #
+            #     Component = ( [ PREFIX ] UNIT | &quot;%&quot; ) [ Annotation ]
+            #               | Annotation
+            #               | &quot;1&quot;
+            #               ;
+            #
+            #     Annotation = &quot;{&quot; NAME &quot;}&quot; ;
+            #
+            # Notes:
+            #
+            # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
+            #    is used alone, then the unit is equivalent to `1`. For examples,
+            #    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
+            # * `NAME` is a sequence of non-blank printable ASCII characters not
+            #    containing `{` or `}`.
+            # * `1` represents a unitary [dimensionless
+            #    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
+            #    as in `1/s`. It is typically used when none of the basic units are
+            #    appropriate. For example, &quot;new users per day&quot; can be represented as
+            #    `1/d` or `{new-users}/d` (and a metric value `5` would mean &quot;5 new
+            #    users). Alternatively, &quot;thousands of page views per day&quot; would be
+            #    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
+            #    value of `5.3` would mean &quot;5300 page views per day&quot;).
+            # * `%` represents dimensionless value of 1/100, and annotates values giving
+            #    a percentage (so the metric values are typically in the range of 0..100,
+            #    and a metric value `3` means &quot;3 percent&quot;).
+            # * `10^2.%` indicates a metric contains a ratio, typically in the range
+            #    0..1, that will be multiplied by 100 and displayed as a percentage
+            #    (so a metric value `0.03` means &quot;3 percent&quot;).
+        &quot;displayName&quot;: &quot;A String&quot;, # A concise name for the metric, which can be displayed in user interfaces.
+            # Use sentence case without an ending period, for example &quot;Request count&quot;.
+            # This field is optional but it is recommended to be set for any metrics
+            # associated with user-visible concepts, such as Quota.
+        &quot;monitoredResourceTypes&quot;: [ # Read-only. If present, then a time
+            # series, which is identified partially by
+            # a metric type and a MonitoredResourceDescriptor, that is associated
+            # with this metric type can only be associated with one of the monitored
+            # resource types listed here.
+          &quot;A String&quot;,
+        ],
+        &quot;metadata&quot;: { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric.
+          &quot;samplePeriod&quot;: &quot;A String&quot;, # The sampling period of metric data points. For metrics which are written
+              # periodically, consecutive data points are stored at this time interval,
+              # excluding data loss due to errors. Metrics with a higher granularity have
+              # a smaller sampling period.
+          &quot;ingestDelay&quot;: &quot;A String&quot;, # The delay of data points caused by ingestion. Data points older than this
+              # age are guaranteed to be ingested and available to be read, excluding
+              # data loss due to errors.
+          &quot;launchStage&quot;: &quot;A String&quot;, # Deprecated. Must use the MetricDescriptor.launch_stage instead.
         },
-      ],
-      &quot;consumerDestinations&quot;: [ # Monitoring configurations for sending metrics to the consumer project.
-          # There can be multiple consumer destinations. A monitored resouce type may
-          # appear in multiple monitoring destinations if different aggregations are
-          # needed for different sets of metrics associated with that monitored
-          # resource type. A monitored resource and metric pair may only be used once
-          # in the Monitoring configuration.
-        { # Configuration of a specific monitoring destination (the producer project
-            # or the consumer project).
-          &quot;metrics&quot;: [ # Types of the metrics to report to this monitoring destination.
-              # Each type must be defined in Service.metrics section.
-            &quot;A String&quot;,
-          ],
-          &quot;monitoredResource&quot;: &quot;A String&quot;, # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
-        },
-      ],
-    },
-    &quot;systemParameters&quot;: { # ### System parameter configuration # System parameter configuration.
+        &quot;name&quot;: &quot;A String&quot;, # The resource name of the metric descriptor.
+        &quot;valueType&quot;: &quot;A String&quot;, # Whether the measurement is an integer, a floating-point number, etc.
+            # Some combinations of `metric_kind` and `value_type` might not be supported.
+        &quot;launchStage&quot;: &quot;A String&quot;, # Optional. The launch stage of the metric definition.
+        &quot;type&quot;: &quot;A String&quot;, # The metric type, including its DNS name prefix. The type is not
+            # URL-encoded.
+            #
+            # All service defined metrics must be prefixed with the service name, in the
+            # format of `{service name}/{relative metric name}`, such as
+            # `cloudsql.googleapis.com/database/cpu/utilization`. The relative metric
+            # name must follow:
+            #
+            # * Only upper and lower-case letters, digits, &#x27;/&#x27; and underscores &#x27;_&#x27; are
+            #   allowed.
+            # * The maximum number of characters allowed for the relative_metric_name is
+            #   100.
+            #
+            # All user-defined metric types have the DNS name
+            # `custom.googleapis.com`, `external.googleapis.com`, or
+            # `logging.googleapis.com/user/`.
+            #
+            # Metric types should use a natural hierarchical grouping. For example:
+            #
+            #     &quot;custom.googleapis.com/invoice/paid/amount&quot;
+            #     &quot;external.googleapis.com/prometheus/up&quot;
+            #     &quot;appengine.googleapis.com/http/server/response_latencies&quot;
+        &quot;description&quot;: &quot;A String&quot;, # A detailed description of the metric, which can be used in documentation.
+        &quot;labels&quot;: [ # The set of labels that can be used to describe a specific
+            # instance of this metric type.
+            #
+            # The label key name must follow:
+            #
+            # * Only upper and lower-case letters, digits and underscores (_) are
+            #   allowed.
+            # * Label name must start with a letter or digit.
+            # * The maximum length of a label name is 100 characters.
+            #
+            # For example, the
+            # `appengine.googleapis.com/http/server/response_latencies` metric
+            # type has a label for the HTTP response code, `response_code`, so
+            # you can look at latencies for successful responses or just
+            # for responses that failed.
+          { # A description of a label.
+            &quot;valueType&quot;: &quot;A String&quot;, # The type of data that can be assigned to the label.
+            &quot;description&quot;: &quot;A String&quot;, # A human-readable description for the label.
+            &quot;key&quot;: &quot;A String&quot;, # The label key.
+          },
+        ],
+        &quot;metricKind&quot;: &quot;A String&quot;, # Whether the metric records instantaneous values, changes to a value, etc.
+            # Some combinations of `metric_kind` and `value_type` might not be supported.
+      },
+    ],
+    &quot;documentation&quot;: { # `Documentation` provides the information for describing a service. # Additional API documentation.
         #
-        # A system parameter is a special kind of parameter defined by the API
-        # system, not by an individual API. It is typically mapped to an HTTP header
-        # and/or a URL query parameter. This configuration specifies which methods
-        # change the names of the system parameters.
-      &quot;rules&quot;: [ # Define system parameters.
-          #
-          # The parameters defined here will override the default parameters
-          # implemented by the system. If this field is missing from the service
-          # config, default system parameters will be used. Default system parameters
-          # and names is implementation-dependent.
-          #
-          # Example: define api key for all methods
-          #
-          #     system_parameters
-          #       rules:
-          #         - selector: &quot;*&quot;
-          #           parameters:
-          #             - name: api_key
-          #               url_query_parameter: api_key
-          #
-          #
-          # Example: define 2 api key names for a specific method.
-          #
-          #     system_parameters
-          #       rules:
-          #         - selector: &quot;/ListShelves&quot;
-          #           parameters:
-          #             - name: api_key
-          #               http_header: Api-Key1
-          #             - name: api_key
-          #               http_header: Api-Key2
+        # 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.
+      &quot;serviceRootUrl&quot;: &quot;A String&quot;, # 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.
+      &quot;overview&quot;: &quot;A String&quot;, # 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.
+      &quot;documentationRootUrl&quot;: &quot;A String&quot;, # The URL to the root of documentation.
+      &quot;rules&quot;: [ # A list of documentation rules that apply to individual API elements.
           #
           # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
-        { # Define a system parameter rule mapping system parameter definitions to
-            # methods.
-          &quot;parameters&quot;: [ # Define parameters. Multiple names may be defined for a parameter.
-              # For a given method call, only one of them should be used. If multiple
-              # names are used the behavior is implementation-dependent.
-              # If none of the specified names are present the behavior is
-              # parameter-dependent.
-            { # Define a parameter&#x27;s name and location. The parameter may be passed as either
-                # an HTTP header or a URL query parameter, and if both are passed the behavior
-                # is implementation-dependent.
-              &quot;name&quot;: &quot;A String&quot;, # Define the name of the parameter, such as &quot;api_key&quot; . It is case sensitive.
-              &quot;urlQueryParameter&quot;: &quot;A String&quot;, # Define the URL query parameter name to use for the parameter. It is case
-                  # sensitive.
-              &quot;httpHeader&quot;: &quot;A String&quot;, # Define the HTTP header name to use for the parameter. It is case
-                  # insensitive.
-            },
-          ],
-          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies. Use &#x27;*&#x27; to indicate all
-              # methods in all APIs.
-              #
-              # Refer to selector for syntax details.
+        { # A documentation rule provides information about individual API elements.
+          &quot;deprecationDescription&quot;: &quot;A String&quot;, # Deprecation description of the selected element(s). It can be provided if
+              # an element is marked as `deprecated`.
+          &quot;description&quot;: &quot;A String&quot;, # Description of the selected API(s).
+          &quot;selector&quot;: &quot;A String&quot;, # The selector is a comma-separated list of patterns. Each pattern is a
+              # qualified name of the element which may end in &quot;*&quot;, indicating a wildcard.
+              # Wildcards are only allowed at the end and for a whole component of the
+              # qualified name, i.e. &quot;foo.*&quot; is ok, but not &quot;foo.b*&quot; or &quot;foo.*.bar&quot;. A
+              # wildcard will match one or more components. To specify a default for all
+              # applicable elements, the whole pattern &quot;*&quot; is used.
         },
       ],
+      &quot;pages&quot;: [ # The top level pages for the documentation set.
+        { # Represents a documentation page. A page can contain subpages to represent
+            # nested documentation set structure.
+          &quot;content&quot;: &quot;A String&quot;, # 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.
+          &quot;name&quot;: &quot;A String&quot;, # 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`.
+          &quot;subpages&quot;: [ # Subpages of this page. The order of subpages specified here will be
+              # honored in the generated docset.
+            # Object with schema name: Page
+          ],
+        },
+      ],
+      &quot;summary&quot;: &quot;A String&quot;, # A short summary of what the service does. Can only be provided by
+          # plain text.
     },
+    &quot;configVersion&quot;: 42, # The semantic version of the service configuration. The config version
+        # affects the interpretation of the service configuration. For example,
+        # certain features are enabled by default for certain config versions.
+        #
+        # The latest config version is `3`.
     &quot;quota&quot;: { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration.
         # usage.
         #
@@ -2227,23 +1843,32 @@
         #        metric_kind: DELTA
         #        value_type: INT64
         #
+      &quot;metricRules&quot;: [ # 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&#x27;s configured quota behaviors to apply to the method call.
+          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
+              #
+              # Refer to selector for syntax details.
+          &quot;metricCosts&quot;: { # 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.
+            &quot;a_key&quot;: &quot;A String&quot;,
+          },
+        },
+      ],
       &quot;limits&quot;: [ # 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`.
-          &quot;displayName&quot;: &quot;A String&quot;, # 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.
-          &quot;maxLimit&quot;: &quot;A String&quot;, # 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.
+          &quot;values&quot;: { # 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.
+            &quot;a_key&quot;: &quot;A String&quot;,
+          },
           &quot;duration&quot;: &quot;A String&quot;, # Duration of this limit in textual notation. Must be &quot;100s&quot; or &quot;1d&quot;.
               #
               # Used by group-based quotas only.
@@ -2255,15 +1880,13 @@
               # defaults to 0, indicating that there is no free tier for this service.
               #
               # Used by group-based quotas only.
-          &quot;unit&quot;: &quot;A String&quot;, # 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:
-              # * &quot;1/min/{project}&quot; for quota per minute per project.
-              #
-              # Note: the order of unit components is insignificant.
-              # The &quot;1&quot; at the beginning is required to follow the metric unit syntax.
+          &quot;displayName&quot;: &quot;A String&quot;, # 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.
+          &quot;description&quot;: &quot;A String&quot;, # 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&#x27;s display name (see: `display_name`).
           &quot;defaultLimit&quot;: &quot;A String&quot;, # 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.
@@ -2274,43 +1897,568 @@
               # negative values are allowed.
               #
               # Used by group-based quotas only.
-          &quot;values&quot;: { # 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.
-            &quot;a_key&quot;: &quot;A String&quot;,
-          },
           &quot;name&quot;: &quot;A String&quot;, # 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 &#x27;-&#x27;.
               #
               # The maximum length of the limit name is 64 characters.
+          &quot;maxLimit&quot;: &quot;A String&quot;, # 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.
           &quot;metric&quot;: &quot;A String&quot;, # 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.
-          &quot;description&quot;: &quot;A String&quot;, # 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&#x27;s display name (see: `display_name`).
+          &quot;unit&quot;: &quot;A String&quot;, # 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:
+              # * &quot;1/min/{project}&quot; for quota per minute per project.
+              #
+              # Note: the order of unit components is insignificant.
+              # The &quot;1&quot; at the beginning is required to follow the metric unit syntax.
         },
       ],
-      &quot;metricRules&quot;: [ # 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&#x27;s configured quota behaviors to apply to the method call.
-          &quot;metricCosts&quot;: { # Metrics to update when the selected methods are called, and the associated
-              # cost applied to each metric.
+    },
+    &quot;customError&quot;: { # Customize service error responses.  For example, list any service # Custom error configuration.
+        # specific protobuf types that can appear in error detail lists of
+        # error responses.
+        #
+        # Example:
+        #
+        #     custom_error:
+        #       types:
+        #       - google.foo.v1.CustomError
+        #       - google.foo.v1.AnotherError
+      &quot;types&quot;: [ # The list of custom error detail types, e.g. &#x27;google.foo.v1.CustomError&#x27;.
+        &quot;A String&quot;,
+      ],
+      &quot;rules&quot;: [ # The list of custom error rules that apply to individual API messages.
+          #
+          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
+        { # A custom error rule.
+          &quot;selector&quot;: &quot;A String&quot;, # Selects messages to which this rule applies.
               #
-              # 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.
-            &quot;a_key&quot;: &quot;A String&quot;,
+              # Refer to selector for syntax details.
+          &quot;isErrorType&quot;: True or False, # Mark this message as possible payload in error response.  Otherwise,
+              # objects of this type will be filtered when they appear in error payload.
+        },
+      ],
+    },
+    &quot;authentication&quot;: { # `Authentication` defines the authentication configuration for an API. # Auth configuration.
+        #
+        # 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: &quot;*&quot;
+        #         requirements:
+        #           provider_id: google_calendar_auth
+      &quot;rules&quot;: [ # A list of authentication rules that apply to individual API methods.
+          #
+          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; 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&#x27;s an error to include more than one kind of credential in a single
+            # request.
+            #
+            # If a method doesn&#x27;t have any auth requirements, request credentials will be
+            # ignored.
+          &quot;oauth&quot;: { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials.
+              # there are scopes defined for &quot;Read-only access to Google Calendar&quot; and
+              # &quot;Access to Cloud Platform&quot;. 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.
+            &quot;canonicalScopes&quot;: &quot;A String&quot;, # 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
           },
+          &quot;requirements&quot;: [ # 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).
+              &quot;providerId&quot;: &quot;A String&quot;, # id from authentication provider.
+                  #
+                  # Example:
+                  #
+                  #     provider_id: bookstore_auth
+              &quot;audiences&quot;: &quot;A String&quot;, # 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
+                  # &quot;https://Service_name/API_name&quot;
+                  # will be accepted. For example, if no audiences are in the setting,
+                  # LibraryService API will only accept JWTs with the following audience
+                  # &quot;https://library-example.googleapis.com/google.example.library.v1.LibraryService&quot;.
+                  #
+                  # Example:
+                  #
+                  #     audiences: bookstore_android.apps.googleusercontent.com,
+                  #                bookstore_web.apps.googleusercontent.com
+            },
+          ],
+          &quot;allowWithoutCredential&quot;: True or False, # If true, the service accepts API keys without any other credential.
           &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
         },
       ],
+      &quot;providers&quot;: [ # 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).
+          &quot;id&quot;: &quot;A String&quot;, # The unique identifier of the auth provider. It will be referred to by
+              # `AuthRequirement.provider_id`.
+              #
+              # Example: &quot;bookstore_auth&quot;.
+          &quot;issuer&quot;: &quot;A String&quot;, # 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
+          &quot;jwksUri&quot;: &quot;A String&quot;, # URL of the provider&#x27;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
+          &quot;audiences&quot;: &quot;A String&quot;, # 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:
+              #   - &quot;https://[service.name]/[google.protobuf.Api.name]&quot;
+              #   - &quot;https://[service.name]/&quot;
+              # 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
+          &quot;authorizationUrl&quot;: &quot;A String&quot;, # Redirect URL if JWT token is required but not present or is expired.
+              # Implement authorizationUrl of securityDefinitions in OpenAPI spec.
+          &quot;jwtLocations&quot;: [ # 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: &quot;Bearer &quot;
+              #    - header: x-goog-iap-jwt-assertion
+              #    - query: access_token
+            { # Specifies a location to extract JWT from an API request.
+              &quot;query&quot;: &quot;A String&quot;, # Specifies URL query parameter name to extract JWT token.
+              &quot;valuePrefix&quot;: &quot;A String&quot;, # The value prefix. The value format is &quot;value_prefix{token}&quot;
+                  # Only applies to &quot;in&quot; header type. Must be empty for &quot;in&quot; 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 &quot;Authorization: Bearer {JWT}&quot;,
+                  # value_prefix=&quot;Bearer &quot; with a space at the end.
+              &quot;header&quot;: &quot;A String&quot;, # Specifies HTTP header name to extract JWT token.
+            },
+          ],
+        },
+      ],
     },
+    &quot;title&quot;: &quot;A String&quot;, # The product title for this service.
+    &quot;producerProjectId&quot;: &quot;A String&quot;, # The Google project that owns this service.
+    &quot;apis&quot;: [ # A list of API interfaces exported by this service. Only the `name` field
+        # of the google.protobuf.Api needs to be provided by the configuration
+        # author, as the remaining fields will be derived from the IDL during the
+        # normalization process. It is an error to specify an API interface here
+        # which cannot be resolved against the associated IDL files.
+      { # Api is a light-weight descriptor for an API Interface.
+          #
+          # Interfaces are also described as &quot;protocol buffer services&quot; in some contexts,
+          # such as by the &quot;service&quot; 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 &quot;APIs&quot; in other contexts, such as the name of
+          # this message itself. See https://cloud.google.com/apis/design/glossary for
+          # detailed terminology.
+        &quot;sourceContext&quot;: { # `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.
+          &quot;fileName&quot;: &quot;A String&quot;, # The path-qualified name of the .proto file that contained the associated
+              # protobuf element.  For example: `&quot;google/protobuf/source_context.proto&quot;`.
+        },
+        &quot;syntax&quot;: &quot;A String&quot;, # The source syntax of the service.
+        &quot;methods&quot;: [ # The methods of this interface, in unspecified order.
+          { # Method represents a method of an API interface.
+            &quot;options&quot;: [ # Any metadata attached to the method.
+              { # A protocol buffer option, which can be attached to a message, field,
+                  # enumeration, etc.
+                &quot;value&quot;: { # The option&#x27;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.
+                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+                },
+                &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `&quot;google.api.http&quot;`.
+              },
+            ],
+            &quot;responseStreaming&quot;: True or False, # If true, the response is streamed.
+            &quot;syntax&quot;: &quot;A String&quot;, # The source syntax of this method.
+            &quot;requestTypeUrl&quot;: &quot;A String&quot;, # A URL of the input message type.
+            &quot;name&quot;: &quot;A String&quot;, # The simple name of this method.
+            &quot;responseTypeUrl&quot;: &quot;A String&quot;, # The URL of the output message type.
+            &quot;requestStreaming&quot;: True or False, # If true, the request is streamed.
+          },
+        ],
+        &quot;name&quot;: &quot;A String&quot;, # The fully qualified name of this interface, including package name
+            # followed by the interface&#x27;s simple name.
+        &quot;version&quot;: &quot;A String&quot;, # 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.
+        &quot;options&quot;: [ # Any metadata attached to the interface.
+          { # A protocol buffer option, which can be attached to a message, field,
+              # enumeration, etc.
+            &quot;value&quot;: { # The option&#x27;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.
+              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+            },
+            &quot;name&quot;: &quot;A String&quot;, # The option&#x27;s name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `&quot;map_entry&quot;`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `&quot;google.api.http&quot;`.
+          },
+        ],
+        &quot;mixins&quot;: [ # 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 = &quot;/v1/{resource=**}:getAcl&quot;;
+              #       }
+              #     }
+              #
+              #     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 = &quot;/v2/{resource=**}&quot;;
+              #       }
+              #     }
+              #
+              # 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 = &quot;/v2/{resource=**}:getAcl&quot;;
+              #       }
+              #       ...
+              #     }
+              #
+              # 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 = &quot;/v2/acls/{resource=**}:getAcl&quot;;
+              #       }
+              #       ...
+              #     }
+            &quot;root&quot;: &quot;A String&quot;, # If non-empty specifies a path under which inherited HTTP paths
+                # are rooted.
+            &quot;name&quot;: &quot;A String&quot;, # The fully qualified name of the interface which is included.
+          },
+        ],
+      },
+    ],
+    &quot;id&quot;: &quot;A String&quot;, # A unique ID for a specific instance of this message, typically assigned
+        # by the client for tracking purpose. Must be no longer than 63 characters
+        # and only lower case letters, digits, &#x27;.&#x27;, &#x27;_&#x27; and &#x27;-&#x27; are allowed. If
+        # empty, the server may choose to generate one instead.
+    &quot;endpoints&quot;: [ # Configuration for network endpoints.  If this is empty, then an endpoint
+        # with the same name as the service is automatically generated to service all
+        # defined APIs.
+      { # `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 &#x27;google.example.library.v1.Library&#x27;
+          #       # 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
+        &quot;name&quot;: &quot;A String&quot;, # The canonical name of this endpoint.
+        &quot;allowCors&quot;: 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.
+        &quot;target&quot;: &quot;A String&quot;, # 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,
+            # &quot;8.8.8.8&quot; or &quot;myservice.appspot.com&quot;.
+        &quot;aliases&quot;: [ # 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.
+          &quot;A String&quot;,
+        ],
+      },
+    ],
+    &quot;systemParameters&quot;: { # ### System parameter configuration # System parameter configuration.
+        #
+        # A system parameter is a special kind of parameter defined by the API
+        # system, not by an individual API. It is typically mapped to an HTTP header
+        # and/or a URL query parameter. This configuration specifies which methods
+        # change the names of the system parameters.
+      &quot;rules&quot;: [ # Define system parameters.
+          #
+          # The parameters defined here will override the default parameters
+          # implemented by the system. If this field is missing from the service
+          # config, default system parameters will be used. Default system parameters
+          # and names is implementation-dependent.
+          #
+          # Example: define api key for all methods
+          #
+          #     system_parameters
+          #       rules:
+          #         - selector: &quot;*&quot;
+          #           parameters:
+          #             - name: api_key
+          #               url_query_parameter: api_key
+          #
+          #
+          # Example: define 2 api key names for a specific method.
+          #
+          #     system_parameters
+          #       rules:
+          #         - selector: &quot;/ListShelves&quot;
+          #           parameters:
+          #             - name: api_key
+          #               http_header: Api-Key1
+          #             - name: api_key
+          #               http_header: Api-Key2
+          #
+          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
+        { # Define a system parameter rule mapping system parameter definitions to
+            # methods.
+          &quot;parameters&quot;: [ # Define parameters. Multiple names may be defined for a parameter.
+              # For a given method call, only one of them should be used. If multiple
+              # names are used the behavior is implementation-dependent.
+              # If none of the specified names are present the behavior is
+              # parameter-dependent.
+            { # Define a parameter&#x27;s name and location. The parameter may be passed as either
+                # an HTTP header or a URL query parameter, and if both are passed the behavior
+                # is implementation-dependent.
+              &quot;name&quot;: &quot;A String&quot;, # Define the name of the parameter, such as &quot;api_key&quot; . It is case sensitive.
+              &quot;httpHeader&quot;: &quot;A String&quot;, # Define the HTTP header name to use for the parameter. It is case
+                  # insensitive.
+              &quot;urlQueryParameter&quot;: &quot;A String&quot;, # Define the URL query parameter name to use for the parameter. It is case
+                  # sensitive.
+            },
+          ],
+          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies. Use &#x27;*&#x27; to indicate all
+              # methods in all APIs.
+              #
+              # Refer to selector for syntax details.
+        },
+      ],
+    },
+    &quot;monitoredResources&quot;: [ # Defines the monitored resources used by this service. This is required
+        # by the Service.monitoring and Service.logging configurations.
+      { # An object that describes the schema of a MonitoredResource object using a
+          # type name and a set of labels.  For example, the monitored resource
+          # descriptor for Google Compute Engine VM instances has a type of
+          # `&quot;gce_instance&quot;` and specifies the use of the labels `&quot;instance_id&quot;` and
+          # `&quot;zone&quot;` to identify particular VM instances.
+          #
+          # Different services can support different monitored resource types.
+          #
+          # The following are specific rules to service defined monitored resources for
+          # Monitoring and Logging:
+          #
+          # * The `type`, `display_name`, `description`, `labels` and `launch_stage`
+          #   fields are all required.
+          # * The first label of the monitored resource descriptor must be
+          #   `resource_container`. There are legacy monitored resource descritptors
+          #   start with `project_id`.
+          # * It must include a `location` label.
+          # * Maximum of default 5 service defined monitored resource descriptors
+          #   is allowed per service.
+          # * Maximum of default 10 labels per monitored resource is allowed.
+          #
+          # The default maximum limit can be overridden. Please follow
+          # https://cloud.google.com/monitoring/quotas
+        &quot;name&quot;: &quot;A String&quot;, # Optional. The resource name of the monitored resource descriptor:
+            # `&quot;projects/{project_id}/monitoredResourceDescriptors/{type}&quot;` where
+            # {type} is the value of the `type` field in this object and
+            # {project_id} is a project ID that provides API-specific context for
+            # accessing the type.  APIs that do not use project information can use the
+            # resource name format `&quot;monitoredResourceDescriptors/{type}&quot;`.
+        &quot;launchStage&quot;: &quot;A String&quot;, # Optional. The launch stage of the monitored resource definition.
+        &quot;displayName&quot;: &quot;A String&quot;, # Optional. A concise name for the monitored resource type that might be
+            # displayed in user interfaces. It should be a Title Cased Noun Phrase,
+            # without any article or other determiners. For example,
+            # `&quot;Google Cloud SQL Database&quot;`.
+        &quot;labels&quot;: [ # Required. A set of labels used to describe instances of this monitored
+            # resource type.
+            # The label key name must follow:
+            #
+            # * Only upper and lower-case letters, digits and underscores (_) are
+            #   allowed.
+            # * Label name must start with a letter or digit.
+            # * The maximum length of a label name is 100 characters.
+            #
+            # For example, an individual Google Cloud SQL database is
+            # identified by values for the labels `database_id` and `location`.
+          { # A description of a label.
+            &quot;valueType&quot;: &quot;A String&quot;, # The type of data that can be assigned to the label.
+            &quot;description&quot;: &quot;A String&quot;, # A human-readable description for the label.
+            &quot;key&quot;: &quot;A String&quot;, # The label key.
+          },
+        ],
+        &quot;description&quot;: &quot;A String&quot;, # Optional. A detailed description of the monitored resource type that might
+            # be used in documentation.
+        &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. For example, the type
+            # `cloudsql_database` represents databases in Google Cloud SQL.
+            #
+            # All service defined monitored resource types must be prefixed with the
+            # service name, in the format of `{service name}/{relative resource name}`.
+            # The relative resource name must follow:
+            #
+            # * Only upper and lower-case letters and digits are allowed.
+            # * It must start with upper case character and is recommended to use Upper
+            #   Camel Case style.
+            # * The maximum number of characters allowed for the relative_resource_name
+            #   is 100.
+            #
+            # Note there are legacy service monitored resources not following this rule.
+      },
+    ],
     &quot;context&quot;: { # `Context` defines which contexts an API requests. # Context configuration.
         #
         # Example:
@@ -2352,14 +2500,6 @@
           # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
         { # A context rule provides information about the context for an individual API
             # element.
-          &quot;allowedRequestExtensions&quot;: [ # A list of full type names or extension IDs of extensions allowed in grpc
-              # side channel from client to backend.
-            &quot;A String&quot;,
-          ],
-          &quot;allowedResponseExtensions&quot;: [ # A list of full type names or extension IDs of extensions allowed in grpc
-              # side channel from backend to client.
-            &quot;A String&quot;,
-          ],
           &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
               #
               # Refer to selector for syntax details.
@@ -2369,73 +2509,14 @@
           &quot;provided&quot;: [ # A list of full type names of provided contexts.
             &quot;A String&quot;,
           ],
-        },
-      ],
-    },
-    &quot;producerProjectId&quot;: &quot;A String&quot;, # The Google project that owns this service.
-    &quot;backend&quot;: { # `Backend` defines the backend configuration for a service. # API backend configuration.
-      &quot;rules&quot;: [ # A list of API backend rules that apply to individual API methods.
-          #
-          # **NOTE:** All service configuration rules follow &quot;last one wins&quot; order.
-        { # A backend rule provides configuration for an individual API element.
-          &quot;operationDeadline&quot;: 3.14, # The number of seconds to wait for the completion of a long running
-              # operation. The default is no deadline.
-          &quot;minDeadline&quot;: 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline
-              # value lower than this will be rejected.
-          &quot;address&quot;: &quot;A String&quot;, # The address of the API backend.
-              #
-              # The scheme is used to determine the backend protocol and security.
-              # The following schemes are accepted:
-              #
-              #    SCHEME        PROTOCOL    SECURITY
-              #    http://       HTTP        None
-              #    https://      HTTP        TLS
-              #    grpc://       gRPC        None
-              #    grpcs://      gRPC        TLS
-              #
-              # It is recommended to explicitly include a scheme. Leaving out the scheme
-              # may cause constrasting behaviors across platforms.
-              #
-              # If the port is unspecified, the default is:
-              # - 80 for schemes without TLS
-              # - 443 for schemes with TLS
-              #
-              # For HTTP backends, use protocol
-              # to specify the protocol version.
-          &quot;pathTranslation&quot;: &quot;A String&quot;,
-          &quot;selector&quot;: &quot;A String&quot;, # Selects the methods to which this rule applies.
-              #
-              # Refer to selector for syntax details.
-          &quot;jwtAudience&quot;: &quot;A String&quot;, # The JWT audience is used when generating a JWT ID token for the backend.
-              # This ID token will be added in the HTTP &quot;authorization&quot; header, and sent
-              # to the backend.
-          &quot;disableAuth&quot;: True or False, # When disable_auth is true, a JWT ID token won&#x27;t be generated and the
-              # original &quot;Authorization&quot; HTTP header will be preserved. If the header is
-              # used to carry the original token and is expected by the backend, this
-              # field must be set to true to preserve the header.
-          &quot;deadline&quot;: 3.14, # The number of seconds to wait for a response from a request. The default
-              # varies based on the request protocol and deployment environment.
-          &quot;protocol&quot;: &quot;A String&quot;, # The protocol used for sending a request to the backend.
-              # The supported values are &quot;http/1.1&quot; and &quot;h2&quot;.
-              #
-              # The default value is inferred from the scheme in the
-              # address field:
-              #
-              #    SCHEME        PROTOCOL
-              #    http://       http/1.1
-              #    https://      http/1.1
-              #    grpc://       h2
-              #    grpcs://      h2
-              #
-              # For secure HTTP backends (https://) that support HTTP/2, set this field
-              # to &quot;h2&quot; for improved performance.
-              #
-              # Configuring this field to non-default values is only supported for secure
-              # HTTP backends. This field will be ignored for all other backends.
-              #
-              # See
-              # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
-              # for more details on the supported values.
+          &quot;allowedRequestExtensions&quot;: [ # A list of full type names or extension IDs of extensions allowed in grpc
+              # side channel from client to backend.
+            &quot;A String&quot;,
+          ],
+          &quot;allowedResponseExtensions&quot;: [ # A list of full type names or extension IDs of extensions allowed in grpc
+              # side channel from backend to client.
+            &quot;A String&quot;,
+          ],
         },
       ],
     },
@@ -2547,30 +2628,6 @@
       #
       # For a description of IAM and its features, see the
       # [IAM documentation](https://cloud.google.com/iam/docs/).
-    &quot;version&quot;: 42, # Specifies the format of the policy.
-        #
-        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
-        # are rejected.
-        #
-        # Any operation that affects conditional role bindings must specify version
-        # `3`. This requirement applies to the following operations:
-        #
-        # * Getting a policy that includes a conditional role binding
-        # * Adding a conditional role binding to a policy
-        # * Changing a conditional role binding in a policy
-        # * Removing any role binding, with or without a condition, from a policy
-        #   that includes conditions
-        #
-        # **Important:** If you use IAM Conditions, you must include the `etag` field
-        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
-        # you to overwrite a version `3` policy with a version `1` policy, and all of
-        # the conditions in the version `3` policy are lost.
-        #
-        # If a policy does not include any conditions, operations on that policy may
-        # specify any valid version or leave the field unset.
-        #
-        # To learn which resources support conditions in their IAM policies, see the
-        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
     &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
         # prevent simultaneous updates of a policy from overwriting each other.
         # It is strongly suggested that systems make use of the `etag` in the
@@ -2587,8 +2644,6 @@
         # `condition` that determines how and when the `bindings` are applied. Each
         # of the `bindings` must contain at least one member.
       { # Associates `members` with a `role`.
-        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
-            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
         &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
             #
             # If the condition evaluates to `true`, then this binding applies to the
@@ -2631,16 +2686,18 @@
             # The exact variables and functions that may be referenced within an expression
             # are determined by the service that evaluates it. See the service
             # documentation for additional information.
-          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
-              # syntax.
+          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+              # describes the expression, e.g. when hovered over it in a UI.
           &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
               # reporting, e.g. a file name and a position in the file.
           &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
               # its purpose. This can be used e.g. in UIs which allow to enter the
               # expression.
-          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
-              # describes the expression, e.g. when hovered over it in a UI.
+          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+              # syntax.
         },
+        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
         &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
             # `members` can have the following values:
             #
@@ -2688,6 +2745,30 @@
         ],
       },
     ],
+    &quot;version&quot;: 42, # Specifies the format of the policy.
+        #
+        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+        # are rejected.
+        #
+        # Any operation that affects conditional role bindings must specify version
+        # `3`. This requirement applies to the following operations:
+        #
+        # * Getting a policy that includes a conditional role binding
+        # * Adding a conditional role binding to a policy
+        # * Changing a conditional role binding in a policy
+        # * Removing any role binding, with or without a condition, from a policy
+        #   that includes conditions
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+        #
+        # If a policy does not include any conditions, operations on that policy may
+        # specify any valid version or leave the field unset.
+        #
+        # To learn which resources support conditions in their IAM policies, see the
+        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
     &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
       { # Specifies the audit configuration for a service.
           # The configuration determines which permission types are logged, and what
@@ -2704,7 +2785,7 @@
           #     {
           #       &quot;audit_configs&quot;: [
           #         {
-          #           &quot;service&quot;: &quot;allServices&quot;
+          #           &quot;service&quot;: &quot;allServices&quot;,
           #           &quot;audit_log_configs&quot;: [
           #             {
           #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
@@ -2713,18 +2794,18 @@
           #               ]
           #             },
           #             {
-          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;
           #             },
           #             {
-          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
+          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;
           #             }
           #           ]
           #         },
           #         {
-          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
+          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;,
           #           &quot;audit_log_configs&quot;: [
           #             {
-          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
+          #               &quot;log_type&quot;: &quot;DATA_READ&quot;
           #             },
           #             {
           #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
@@ -2756,7 +2837,7 @@
               #           ]
               #         },
               #         {
-              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;
               #         }
               #       ]
               #     }
@@ -2777,7 +2858,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(producerProjectId=None, pageSize=None, consumerId=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(pageToken=None, consumerId=None, producerProjectId=None, pageSize=None, x__xgafv=None)</code>
   <pre>Lists managed services.
 
 Returns all public services. For authenticated users, also returns all
@@ -2789,16 +2870,16 @@
 of &quot;project:{PROJECT-ID}&quot;.
 
 Args:
-  producerProjectId: string, Include services produced by the specified project.
-  pageSize: integer, The max number of items to include in the response list. Page size is 50
-if not specified. Maximum value is 100.
+  pageToken: string, Token identifying which result to start with; returned by a previous list
+call.
   consumerId: string, Include services consumed by the specified consumer.
 
 The Google Service Management implementation accepts the following
 forms:
 - project:&lt;project_id&gt;
-  pageToken: string, Token identifying which result to start with; returned by a previous list
-call.
+  producerProjectId: string, Include services produced by the specified project.
+  pageSize: integer, The max number of items to include in the response list. Page size is 50
+if not specified. Maximum value is 100.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -2808,6 +2889,7 @@
   An object of the form:
 
     { # Response message for `ListServices` method.
+    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token that can be passed to `ListServices` to resume a paginated query.
     &quot;services&quot;: [ # The returned services will only have the name field set.
       { # The full representation of a Service that is managed by
           # Google Service Management.
@@ -2816,7 +2898,6 @@
         &quot;producerProjectId&quot;: &quot;A String&quot;, # ID of the project that produces and owns this service.
       },
     ],
-    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token that can be passed to `ListServices` to resume a paginated query.
   }</pre>
 </div>
 
@@ -2848,6 +2929,11 @@
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
+    &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
+        # the fields in the mask will be modified. If no mask is provided, the
+        # following default mask is used:
+        # 
+        # `paths: &quot;bindings, etag&quot;`
     &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access # REQUIRED: The complete policy to be applied to the `resource`. The size of
         # the policy is limited to a few 10s of KB. An empty policy is a
         # valid policy but certain Cloud Platform services (such as Projects)
@@ -2918,30 +3004,6 @@
         #
         # For a description of IAM and its features, see the
         # [IAM documentation](https://cloud.google.com/iam/docs/).
-      &quot;version&quot;: 42, # Specifies the format of the policy.
-          #
-          # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
-          # are rejected.
-          #
-          # Any operation that affects conditional role bindings must specify version
-          # `3`. This requirement applies to the following operations:
-          #
-          # * Getting a policy that includes a conditional role binding
-          # * Adding a conditional role binding to a policy
-          # * Changing a conditional role binding in a policy
-          # * Removing any role binding, with or without a condition, from a policy
-          #   that includes conditions
-          #
-          # **Important:** If you use IAM Conditions, you must include the `etag` field
-          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
-          # you to overwrite a version `3` policy with a version `1` policy, and all of
-          # the conditions in the version `3` policy are lost.
-          #
-          # If a policy does not include any conditions, operations on that policy may
-          # specify any valid version or leave the field unset.
-          #
-          # To learn which resources support conditions in their IAM policies, see the
-          # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
       &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
           # prevent simultaneous updates of a policy from overwriting each other.
           # It is strongly suggested that systems make use of the `etag` in the
@@ -2958,8 +3020,6 @@
           # `condition` that determines how and when the `bindings` are applied. Each
           # of the `bindings` must contain at least one member.
         { # Associates `members` with a `role`.
-          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
-              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
           &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
               #
               # If the condition evaluates to `true`, then this binding applies to the
@@ -3002,16 +3062,18 @@
               # The exact variables and functions that may be referenced within an expression
               # are determined by the service that evaluates it. See the service
               # documentation for additional information.
-            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
-                # syntax.
+            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+                # describes the expression, e.g. when hovered over it in a UI.
             &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
                 # reporting, e.g. a file name and a position in the file.
             &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
                 # its purpose. This can be used e.g. in UIs which allow to enter the
                 # expression.
-            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
-                # describes the expression, e.g. when hovered over it in a UI.
+            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+                # syntax.
           },
+          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
           &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
               # `members` can have the following values:
               #
@@ -3059,6 +3121,30 @@
           ],
         },
       ],
+      &quot;version&quot;: 42, # Specifies the format of the policy.
+          #
+          # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+          # are rejected.
+          #
+          # Any operation that affects conditional role bindings must specify version
+          # `3`. This requirement applies to the following operations:
+          #
+          # * Getting a policy that includes a conditional role binding
+          # * Adding a conditional role binding to a policy
+          # * Changing a conditional role binding in a policy
+          # * Removing any role binding, with or without a condition, from a policy
+          #   that includes conditions
+          #
+          # **Important:** If you use IAM Conditions, you must include the `etag` field
+          # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+          # you to overwrite a version `3` policy with a version `1` policy, and all of
+          # the conditions in the version `3` policy are lost.
+          #
+          # If a policy does not include any conditions, operations on that policy may
+          # specify any valid version or leave the field unset.
+          #
+          # To learn which resources support conditions in their IAM policies, see the
+          # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
       &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
         { # Specifies the audit configuration for a service.
             # The configuration determines which permission types are logged, and what
@@ -3075,7 +3161,7 @@
             #     {
             #       &quot;audit_configs&quot;: [
             #         {
-            #           &quot;service&quot;: &quot;allServices&quot;
+            #           &quot;service&quot;: &quot;allServices&quot;,
             #           &quot;audit_log_configs&quot;: [
             #             {
             #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
@@ -3084,18 +3170,18 @@
             #               ]
             #             },
             #             {
-            #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+            #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;
             #             },
             #             {
-            #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
+            #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;
             #             }
             #           ]
             #         },
             #         {
-            #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
+            #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;,
             #           &quot;audit_log_configs&quot;: [
             #             {
-            #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
+            #               &quot;log_type&quot;: &quot;DATA_READ&quot;
             #             },
             #             {
             #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
@@ -3127,7 +3213,7 @@
                 #           ]
                 #         },
                 #         {
-                #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+                #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;
                 #         }
                 #       ]
                 #     }
@@ -3145,11 +3231,6 @@
         },
       ],
     },
-    &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
-        # the fields in the mask will be modified. If no mask is provided, the
-        # following default mask is used:
-        # 
-        # `paths: &quot;bindings, etag&quot;`
   }
 
   x__xgafv: string, V1 error format.
@@ -3227,30 +3308,6 @@
       #
       # For a description of IAM and its features, see the
       # [IAM documentation](https://cloud.google.com/iam/docs/).
-    &quot;version&quot;: 42, # Specifies the format of the policy.
-        #
-        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
-        # are rejected.
-        #
-        # Any operation that affects conditional role bindings must specify version
-        # `3`. This requirement applies to the following operations:
-        #
-        # * Getting a policy that includes a conditional role binding
-        # * Adding a conditional role binding to a policy
-        # * Changing a conditional role binding in a policy
-        # * Removing any role binding, with or without a condition, from a policy
-        #   that includes conditions
-        #
-        # **Important:** If you use IAM Conditions, you must include the `etag` field
-        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
-        # you to overwrite a version `3` policy with a version `1` policy, and all of
-        # the conditions in the version `3` policy are lost.
-        #
-        # If a policy does not include any conditions, operations on that policy may
-        # specify any valid version or leave the field unset.
-        #
-        # To learn which resources support conditions in their IAM policies, see the
-        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
     &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help
         # prevent simultaneous updates of a policy from overwriting each other.
         # It is strongly suggested that systems make use of the `etag` in the
@@ -3267,8 +3324,6 @@
         # `condition` that determines how and when the `bindings` are applied. Each
         # of the `bindings` must contain at least one member.
       { # Associates `members` with a `role`.
-        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
-            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
         &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) # The condition that is associated with this binding.
             #
             # If the condition evaluates to `true`, then this binding applies to the
@@ -3311,16 +3366,18 @@
             # The exact variables and functions that may be referenced within an expression
             # are determined by the service that evaluates it. See the service
             # documentation for additional information.
-          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
-              # syntax.
+          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
+              # describes the expression, e.g. when hovered over it in a UI.
           &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error
               # reporting, e.g. a file name and a position in the file.
           &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing
               # its purpose. This can be used e.g. in UIs which allow to enter the
               # expression.
-          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which
-              # describes the expression, e.g. when hovered over it in a UI.
+          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language
+              # syntax.
         },
+        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
         &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource.
             # `members` can have the following values:
             #
@@ -3368,6 +3425,30 @@
         ],
       },
     ],
+    &quot;version&quot;: 42, # Specifies the format of the policy.
+        #
+        # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
+        # are rejected.
+        #
+        # Any operation that affects conditional role bindings must specify version
+        # `3`. This requirement applies to the following operations:
+        #
+        # * Getting a policy that includes a conditional role binding
+        # * Adding a conditional role binding to a policy
+        # * Changing a conditional role binding in a policy
+        # * Removing any role binding, with or without a condition, from a policy
+        #   that includes conditions
+        #
+        # **Important:** If you use IAM Conditions, you must include the `etag` field
+        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
+        # you to overwrite a version `3` policy with a version `1` policy, and all of
+        # the conditions in the version `3` policy are lost.
+        #
+        # If a policy does not include any conditions, operations on that policy may
+        # specify any valid version or leave the field unset.
+        #
+        # To learn which resources support conditions in their IAM policies, see the
+        # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
     &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
       { # Specifies the audit configuration for a service.
           # The configuration determines which permission types are logged, and what
@@ -3384,7 +3465,7 @@
           #     {
           #       &quot;audit_configs&quot;: [
           #         {
-          #           &quot;service&quot;: &quot;allServices&quot;
+          #           &quot;service&quot;: &quot;allServices&quot;,
           #           &quot;audit_log_configs&quot;: [
           #             {
           #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
@@ -3393,18 +3474,18 @@
           #               ]
           #             },
           #             {
-          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+          #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;
           #             },
           #             {
-          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;,
+          #               &quot;log_type&quot;: &quot;ADMIN_READ&quot;
           #             }
           #           ]
           #         },
           #         {
-          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;
+          #           &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;,
           #           &quot;audit_log_configs&quot;: [
           #             {
-          #               &quot;log_type&quot;: &quot;DATA_READ&quot;,
+          #               &quot;log_type&quot;: &quot;DATA_READ&quot;
           #             },
           #             {
           #               &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
@@ -3436,7 +3517,7 @@
               #           ]
               #         },
               #         {
-              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;,
+              #           &quot;log_type&quot;: &quot;DATA_WRITE&quot;
               #         }
               #       ]
               #     }
@@ -3526,20 +3607,17 @@
         #
         # 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).
-      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
-      &quot;message&quot;: &quot;A String&quot;, # 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.
       &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
           # message types for APIs to use.
         {
           &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
         },
       ],
+      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+      &quot;message&quot;: &quot;A String&quot;, # 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.
     },
-    &quot;name&quot;: &quot;A String&quot;, # 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}`.
     &quot;metadata&quot;: { # 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
@@ -3559,6 +3637,9 @@
         # `TakeSnapshotResponse`.
       &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
     },
+    &quot;name&quot;: &quot;A String&quot;, # 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>