docs: update generated docs (#981)

diff --git a/docs/dyn/servicemanagement_v1.services.configs.html b/docs/dyn/servicemanagement_v1.services.configs.html
index d256384..28c1a7e 100644
--- a/docs/dyn/servicemanagement_v1.services.configs.html
+++ b/docs/dyn/servicemanagement_v1.services.configs.html
@@ -81,7 +81,7 @@
   <code><a href="#get">get(serviceName, configId, view=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="#list">list(serviceName, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists the history of the service configuration for a managed service,</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -130,273 +130,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
@@ -408,530 +141,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.
@@ -960,16 +577,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
@@ -980,78 +597,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.
@@ -1324,10 +945,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
@@ -1335,378 +975,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.
       #
@@ -1757,23 +1373,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.
@@ -1785,15 +1410,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.
@@ -1804,43 +1427,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:
@@ -1882,14 +2030,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.
@@ -1899,73 +2039,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;,
+        ],
       },
     ],
   },
@@ -2002,273 +2083,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
@@ -2280,530 +2094,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.
@@ -2832,16 +2530,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
@@ -2852,78 +2550,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.
@@ -3196,10 +2898,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
@@ -3207,378 +2928,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.
         #
@@ -3629,23 +3326,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.
@@ -3657,15 +3363,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.
@@ -3676,43 +3380,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:
@@ -3754,14 +3983,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.
@@ -3771,73 +3992,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;,
+          ],
         },
       ],
     },
@@ -3888,273 +4050,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
@@ -4166,530 +4061,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.
@@ -4718,16 +4497,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
@@ -4738,78 +4517,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.
@@ -5082,10 +4865,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
@@ -5093,378 +4895,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.
         #
@@ -5515,23 +5293,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.
@@ -5543,15 +5330,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.
@@ -5562,43 +5347,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:
@@ -5640,14 +5950,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.
@@ -5657,73 +5959,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;,
+          ],
         },
       ],
     },
@@ -5731,16 +5974,16 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(serviceName, pageToken=None, pageSize=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists the history of the service configuration for a managed service,
 from the newest to the oldest.
 
 Args:
   serviceName: string, Required. The name of the service.  See the [overview](/service-management/overview)
 for naming requirements.  For example: `example.googleapis.com`. (required)
-  pageToken: string, The token of the page to retrieve.
   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, The token of the page to retrieve.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -5774,273 +6017,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
@@ -6052,530 +6028,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.
@@ -6604,16 +6464,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
@@ -6624,78 +6484,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.
@@ -6968,10 +6832,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
@@ -6979,378 +6862,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.
             #
@@ -7401,23 +7260,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.
@@ -7429,15 +7297,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.
@@ -7448,43 +7314,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:
@@ -7526,14 +7917,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.
@@ -7543,73 +7926,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;,
+              ],
             },
           ],
         },
@@ -7661,17 +7985,17 @@
         # but the generated config and the sources will NOT be persisted.
     &quot;configSource&quot;: { # Represents a source file which is used to generate the service configuration # Required. The source configuration for the service.
         # defined by `google.api.Service`.
-      &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. If empty, the server may choose to
-          # generate one instead.
       &quot;files&quot;: [ # Set of source configuration files that are used to generate a service
           # configuration (`google.api.Service`).
         { # Generic specification of a source configuration file
-          &quot;filePath&quot;: &quot;A String&quot;, # The file name of the configuration file (full or relative path).
           &quot;fileType&quot;: &quot;A String&quot;, # The type of configuration file this represents.
+          &quot;filePath&quot;: &quot;A String&quot;, # The file name of the configuration file (full or relative path).
           &quot;fileContents&quot;: &quot;A String&quot;, # The bytes that constitute the file.
         },
       ],
+      &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. If empty, the server may choose to
+          # generate one instead.
     },
   }
 
@@ -7692,20 +8016,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
@@ -7725,6 +8046,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>