Regen docs (#364)

diff --git a/docs/dyn/servicecontrol_v1.services.html b/docs/dyn/servicecontrol_v1.services.html
index c367090..5a42bf5 100644
--- a/docs/dyn/servicecontrol_v1.services.html
+++ b/docs/dyn/servicecontrol_v1.services.html
@@ -75,40 +75,49 @@
 <h1><a href="servicecontrol_v1.html">Google Service Control API</a> . <a href="servicecontrol_v1.services.html">services</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#allocateQuota">allocateQuota(serviceName=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Attempts to allocate quota for the specified consumer. It should be called</p>
+<p class="toc_element">
   <code><a href="#check">check(serviceName=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Checks an operation with Google Service Control to decide whether</p>
 <p class="toc_element">
+  <code><a href="#endReconciliation">endReconciliation(serviceName=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Signals the quota controller that service ends the ongoing usage</p>
+<p class="toc_element">
+  <code><a href="#releaseQuota">releaseQuota(serviceName=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Releases previously allocated quota done through AllocateQuota method.</p>
+<p class="toc_element">
   <code><a href="#report">report(serviceName=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Reports operation results to Google Service Control, such as logs and</p>
+<p class="toc_element">
+  <code><a href="#startReconciliation">startReconciliation(serviceName=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Unlike rate quota, allocation quota does not get refilled periodically.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="check">check(serviceName=None, body, x__xgafv=None)</code>
-  <pre>Checks an operation with Google Service Control to decide whether
-the given operation should proceed. It should be called before the
-operation is executed.
+    <code class="details" id="allocateQuota">allocateQuota(serviceName=None, body, x__xgafv=None)</code>
+  <pre>Attempts to allocate quota for the specified consumer. It should be called
+before the operation is executed.
 
-If feasible, the client should cache the check results and reuse them for
-60 seconds. In case of server errors, the client can rely on the cached
-results for longer time.
-
-NOTE: the `CheckRequest` has the size limit of 1MB.
-
-This method requires the `servicemanagement.services.check` permission
-on the specified service. For more information, see
+This method requires the `servicemanagement.services.quota`
+permission on the specified service. For more information, see
 [Google Cloud IAM](https://cloud.google.com/iam).
 
 Args:
-  serviceName: string, The service name as specified in its service configuration. For example,
+  serviceName: string, Name of the service as specified in the service configuration. For example,
 `"pubsub.googleapis.com"`.
 
 See google.api.Service for the definition of a service name. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Request message for the Check method.
-    "operation": { # Represents information regarding an operation. # The operation to be checked.
-      "operationName": "A String", # Fully qualified name of the operation. Reserved for future use.
-      "metricValueSets": [ # Represents information about this operation. Each MetricValueSet
+{ # Request message for the AllocateQuota method.
+    "allocationMode": "A String", # Allocation mode for this operation.
+        # Deprecated: use QuotaMode inside the QuotaOperation.
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request. If unspecified or no matching version can be found, the latest
+        # one will be used.
+    "allocateOperation": { # Represents information regarding a quota operation. # Operation that describes the quota allocation.
+      "quotaMetrics": [ # Represents information about this operation. Each MetricValueSet
           # corresponds to a metric defined in the service configuration.
           # The data type used in the MetricValueSet must agree with
           # the data type specified in the metric definition.
@@ -123,6 +132,17 @@
             # end time, and label values.
           "metricValues": [ # The values in this metric.
             { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
               "labels": { # The labels describing the metric value.
                   # See comments on google.api.servicecontrol.v1.Operation.labels for
                   # the overriding relationship.
@@ -143,6 +163,10 @@
                   #   - the sum-squared-deviation of the samples, used to compute variance
                   #   - a histogram of the values of the sample points
                 "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                    #   Sum[i=1..count]((x_i - mean)^2)
+                    # where each x_i is a sample values. If `count` is zero then this field
+                    # must be zero, otherwise validation of the request fails.
                 "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
                     # optional. If present, they must sum to the `count` value.
                     #
@@ -169,12 +193,341 @@
                       # the total number of buckets is `num_finite_buckets` + 2.
                       # See comments on `bucket_options` for details.
                 },
-                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
                 "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                  "width": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                      # Must be strictly positive.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                  "offset": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                },
+                "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                  "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                      # buckets. Note that a list of length N-1 defines N buckets because
+                      # of fenceposting. See comments on `bucket_options` for details.
+                      #
+                      # The i'th finite bucket covers the interval
+                      #   [bound[i-1], bound[i])
+                      # where i ranges from 1 to bound_size() - 1. Note that there are no
+                      # finite buckets at all if 'bound' only contains a single element; in
+                      # that special case the single bound defines the boundary between the
+                      # underflow and overflow buckets.
+                      #
+                      # bucket number                   lower bound    upper bound
+                      #  i == 0 (underflow)              -inf           bound[i]
+                      #  0 < i < bound_size()            bound[i-1]     bound[i]
+                      #  i == bound_size() (overflow)    bound[i-1]     +inf
+                    3.14,
+                  ],
+                },
+                "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                    # zero then this field must be zero.
+              },
+              "stringValue": "A String", # A text string value.
+              "int64Value": "A String", # A signed 64-bit integer value.
+              "endTime": "A String", # The end of the time period over which this metric value's measurement
+                  # applies.
+            },
+          ],
+          "metricName": "A String", # The metric name defined in the service configuration.
+        },
+      ],
+      "methodName": "A String", # Fully qualified name of the API method for which this quota operation is
+          # requested. This name is used for matching quota rules or metric rules and
+          # billing status rules defined in service configuration. This field is not
+          # required if the quota operation is performed on non-API resources.
+          #
+          # Example of an RPC method name:
+          #     google.example.library.v1.LibraryService.CreateShelf
+      "labels": { # Labels describing the operation.
+        "a_key": "A String",
+      },
+      "quotaMode": "A String", # Quota mode for this operation.
+      "consumerId": "A String", # Identity of the consumer for whom this quota operation is being performed.
+          #
+          # This can be in one of the following formats:
+          #   project:<project_id>,
+          #   project_number:<project_number>,
+          #   api_key:<api_key>.
+      "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
+          # service that generated the operation. If the service calls AllocateQuota
+          # and ReleaseQuota on the same operation, the two calls should carry the
+          # same ID.
+          #
+          # UUID version 4 is recommended, though not required. In scenarios where an
+          # operation is computed from existing information and an idempotent id is
+          # desirable for deduplication purpose, UUID version 5 is recommended. See
+          # RFC 4122 for details.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for the AllocateQuota method.
+    "allocateErrors": [ # Indicates the decision of the allocate.
+      {
+        "code": "A String", # Error code.
+        "description": "A String", # Free-form text that provides details on the cause of the error.
+        "subject": "A String", # Subject to whom this error applies. See the specific enum for more details
+            # on this field. For example, "clientip:<ip address of client>" or
+            # "project:<Google developer project id>".
+      },
+    ],
+    "serviceConfigId": "A String", # ID of the actual config used to process the request.
+    "quotaMetrics": [ # Quota metrics to indicate the result of allocation. Depending on the
+        # request, one or more of the following metrics will be included:
+        #
+        # 1. For rate quota, per quota group or per quota metric incremental usage
+        # will be specified using the following delta metric:
+        #   "serviceruntime.googleapis.com/api/consumer/quota_used_count"
+        #
+        # 2. For allocation quota, per quota metric total usage will be specified
+        # using the following gauge metric:
+        #   "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+        #
+        # 3. For both rate quota and allocation quota, the quota limit reached
+        # condition will be specified using the following boolean metric:
+        #   "serviceruntime.googleapis.com/quota/exceeded"
+      { # Represents a set of metric values in the same metric.
+          # Each metric value in the set should have a unique combination of start time,
+          # end time, and label values.
+        "metricValues": [ # The values in this metric.
+          { # Represents a single metric value.
+            "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+              "units": "A String", # The whole units of the amount.
+                  # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+              "nanos": 42, # Number of nano (10^-9) units of the amount.
+                  # The value must be between -999,999,999 and +999,999,999 inclusive.
+                  # If `units` is positive, `nanos` must be positive or zero.
+                  # If `units` is zero, `nanos` can be positive, zero, or negative.
+                  # If `units` is negative, `nanos` must be negative or zero.
+                  # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+              "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+            },
+            "labels": { # The labels describing the metric value.
+                # See comments on google.api.servicecontrol.v1.Operation.labels for
+                # the overriding relationship.
+              "a_key": "A String",
+            },
+            "doubleValue": 3.14, # A double precision floating point value.
+            "boolValue": True or False, # A boolean value.
+            "startTime": "A String", # The start of the time period over which this metric value's measurement
+                # applies. The time period has different semantics for different metric
+                # types (cumulative, delta, and gauge). See the metric definition
+                # documentation in the service configuration for details.
+            "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                # points. It contains the size of the population of sample points plus
+                # additional optional information:
+                #
+                #   - the arithmetic mean of the samples
+                #   - the minimum and maximum of the samples
+                #   - the sum-squared-deviation of the samples, used to compute variance
+                #   - a histogram of the values of the sample points
+              "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+              "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                  #   Sum[i=1..count]((x_i - mean)^2)
+                  # where each x_i is a sample values. If `count` is zero then this field
+                  # must be zero, otherwise validation of the request fails.
+              "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                  # optional. If present, they must sum to the `count` value.
+                  #
+                  # The buckets are defined below in `bucket_option`. There are N buckets.
+                  # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                  # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                  # in each of the finite buckets. And `bucket_counts[N] is the number
+                  # of samples in the overflow bucket. See the comments of `bucket_option`
+                  # below for more details.
+                  #
+                  # Any suffix of trailing zeros may be omitted.
+                "A String",
+              ],
+              "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                "scale": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be > 0.
+                "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be larger than 1.0.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+              },
+              "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+              "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+              "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                "width": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+                    # Must be strictly positive.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+                "offset": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+              },
+              "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                    # buckets. Note that a list of length N-1 defines N buckets because
+                    # of fenceposting. See comments on `bucket_options` for details.
+                    #
+                    # The i'th finite bucket covers the interval
+                    #   [bound[i-1], bound[i])
+                    # where i ranges from 1 to bound_size() - 1. Note that there are no
+                    # finite buckets at all if 'bound' only contains a single element; in
+                    # that special case the single bound defines the boundary between the
+                    # underflow and overflow buckets.
+                    #
+                    # bucket number                   lower bound    upper bound
+                    #  i == 0 (underflow)              -inf           bound[i]
+                    #  0 < i < bound_size()            bound[i-1]     bound[i]
+                    #  i == bound_size() (overflow)    bound[i-1]     +inf
+                  3.14,
+                ],
+              },
+              "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                  # zero then this field must be zero.
+            },
+            "stringValue": "A String", # A text string value.
+            "int64Value": "A String", # A signed 64-bit integer value.
+            "endTime": "A String", # The end of the time period over which this metric value's measurement
+                # applies.
+          },
+        ],
+        "metricName": "A String", # The metric name defined in the service configuration.
+      },
+    ],
+    "operationId": "A String", # The same operation_id value used in the AllocateQuotaRequest. Used for
+        # logging and diagnostics purposes.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="check">check(serviceName=None, body, x__xgafv=None)</code>
+  <pre>Checks an operation with Google Service Control to decide whether
+the given operation should proceed. It should be called before the
+operation is executed.
+
+If feasible, the client should cache the check results and reuse them for
+60 seconds. In case of server errors, the client can rely on the cached
+results for longer time.
+
+NOTE: the `CheckRequest` has the size limit of 64KB.
+
+This method requires the `servicemanagement.services.check` permission
+on the specified service. For more information, see
+[Google Cloud IAM](https://cloud.google.com/iam).
+
+Args:
+  serviceName: string, The service name as specified in its service configuration. For example,
+`"pubsub.googleapis.com"`.
+
+See google.api.Service for the definition of a service name. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request message for the Check method.
+    "skipActivationCheck": True or False, # Indicates if service activation check should be skipped for this request.
+        # Default behavior is to perform the check and apply relevant quota.
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request.
+        # 
+        # If unspecified or no matching version can be found, the
+        # latest one will be used.
+    "operation": { # Represents information regarding an operation. # The operation to be checked.
+      "operationName": "A String", # Fully qualified name of the operation. Reserved for future use.
+      "metricValueSets": [ # Represents information about this operation. Each MetricValueSet
+          # corresponds to a metric defined in the service configuration.
+          # The data type used in the MetricValueSet must agree with
+          # the data type specified in the metric definition.
+          #
+          # Within a single operation, it is not allowed to have more than one
+          # MetricValue instances that have the same metric names and identical
+          # label value combinations. If a request has such duplicated MetricValue
+          # instances, the entire request is rejected with
+          # an invalid argument error.
+        { # Represents a set of metric values in the same metric.
+            # Each metric value in the set should have a unique combination of start time,
+            # end time, and label values.
+          "metricValues": [ # The values in this metric.
+            { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
+              "labels": { # The labels describing the metric value.
+                  # See comments on google.api.servicecontrol.v1.Operation.labels for
+                  # the overriding relationship.
+                "a_key": "A String",
+              },
+              "doubleValue": 3.14, # A double precision floating point value.
+              "boolValue": True or False, # A boolean value.
+              "startTime": "A String", # The start of the time period over which this metric value's measurement
+                  # applies. The time period has different semantics for different metric
+                  # types (cumulative, delta, and gauge). See the metric definition
+                  # documentation in the service configuration for details.
+              "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                  # points. It contains the size of the population of sample points plus
+                  # additional optional information:
+                  #
+                  #   - the arithmetic mean of the samples
+                  #   - the minimum and maximum of the samples
+                  #   - the sum-squared-deviation of the samples, used to compute variance
+                  #   - a histogram of the values of the sample points
+                "count": "A String", # The total number of samples in the distribution. Must be >= 0.
                 "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
                     #   Sum[i=1..count]((x_i - mean)^2)
                     # where each x_i is a sample values. If `count` is zero then this field
                     # must be zero, otherwise validation of the request fails.
+                "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                    # optional. If present, they must sum to the `count` value.
+                    #
+                    # The buckets are defined below in `bucket_option`. There are N buckets.
+                    # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                    # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                    # in each of the finite buckets. And `bucket_counts[N] is the number
+                    # of samples in the overflow bucket. See the comments of `bucket_option`
+                    # below for more details.
+                    #
+                    # Any suffix of trailing zeros may be omitted.
+                  "A String",
+                ],
+                "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                  "scale": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be > 0.
+                  "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be larger than 1.0.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                },
+                "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
                 "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
                   "width": 3.14, # The i'th linear bucket covers the interval
                       #   [offset + (i-1) * width, offset + i * width)
@@ -236,19 +589,46 @@
           #        where the API is served (e.g. GAE, GCE, GKE).
         "a_key": "A String",
       },
-      "consumerId": "A String", # Identity of the consumer who is using the service.
-          # This field should be filled in for the operations initiated by a
-          # consumer, but not for service-initiated operations that are
-          # not related to a specific consumer.
+      "quotaProperties": { # Represents the properties needed for quota operations. # Represents the properties needed for quota check. Applicable only if this
+          # operation is for a quota check request.
+          #
+          # Use the metric_value_sets field in Operation message to provide cost
+          # override with metric_name in <service_name>/quota/<quota_group_name>/cost
+          # format. Overrides for unmatched quota groups will be ignored.
+          # Costs are expected to be >= 0. Cost 0 will cause no quota check,
+          # but still traffic restrictions will be enforced.
+        "quotaMode": "A String", # Quota mode for this operation.
+        "limitByIds": { # LimitType IDs that should be used for checking quota. Key in this map
+            # should be a valid LimitType string, and the value is the ID to be used. For
+            # example, an entry <USER, 123> will cause all user quota limits to use 123
+            # as the user ID. See google/api/quota.proto for the definition of LimitType.
+            # CLIENT_PROJECT: Not supported.
+            # USER: Value of this entry will be used for enforcing user-level quota
+            #       limits. If none specified, caller IP passed in the
+            #       servicecontrol.googleapis.com/caller_ip label will be used instead.
+            #       If the server cannot resolve a value for this LimitType, an error
+            #       will be thrown. No validation will be performed on this ID.
+            # Deprecated: use servicecontrol.googleapis.com/user label to send user ID.
+          "a_key": "A String",
+        },
+      },
+      "resourceContainer": "A String", # The resource name of the parent of a resource in the resource hierarchy.
           #
           # This can be in one of the following formats:
-          #   project:<project_id>,
-          #   project_number:<project_number>,
-          #   api_key:<api_key>.
+          #     - “projects/<project-id or project-number>”
+          #     - “folders/<folder-id>”
+          #     - “organizations/<organization-id>”
+      "userLabels": { # User defined labels for the resource that this operation is associated
+          # with.
+        "a_key": "A String",
+      },
+      "endTime": "A String", # End time of the operation.
+          # Required when the operation is used in ServiceController.Report,
+          # but optional when the operation is used in ServiceController.Check.
       "logEntries": [ # Represents information to be logged.
         { # An individual log entry.
-          "name": "A String", # Required. The log to which this log entry belongs. Examples: `"syslog"`,
-              # `"book_log"`.
+          "severity": "A String", # The severity of the log entry. The default value is
+              # `LogSeverity.DEFAULT`.
           "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
           "timestamp": "A String", # The time the event described by the log entry occurred. If
               # omitted, defaults to operation start time.
@@ -260,21 +640,27 @@
               # is expressed as a JSON object.
             "a_key": "", # Properties of the object.
           },
-          "insertId": "A String", # A unique ID for the log entry used for deduplication. If omitted,
-              # the implementation will generate one based on operation_id.
           "protoPayload": { # The log entry payload, represented as a protocol buffer that is
               # expressed as a JSON object. You can only pass `protoPayload`
               # values that belong to a set of approved types.
             "a_key": "", # Properties of the object. Contains field @type with type URL.
           },
-          "severity": "A String", # The severity of the log entry. The default value is
-              # `LogSeverity.DEFAULT`.
+          "insertId": "A String", # A unique ID for the log entry used for deduplication. If omitted,
+              # the implementation will generate one based on operation_id.
+          "name": "A String", # Required. The log to which this log entry belongs. Examples: `"syslog"`,
+              # `"book_log"`.
         },
       ],
       "startTime": "A String", # Required. Start time of the operation.
-      "endTime": "A String", # End time of the operation.
-          # Required when the operation is used in ServiceController.Report,
-          # but optional when the operation is used in ServiceController.Check.
+      "consumerId": "A String", # Identity of the consumer who is using the service.
+          # This field should be filled in for the operations initiated by a
+          # consumer, but not for service-initiated operations that are
+          # not related to a specific consumer.
+          #
+          # This can be in one of the following formats:
+          #   project:<project_id>,
+          #   project_number:<project_number>,
+          #   api_key:<api_key>.
       "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
           # service that generated the operation. If the service calls
           # Check() and Report() on the same operation, the two calls should carry
@@ -285,11 +671,7 @@
           # and an idempotent id is desirable for deduplication purpose, UUID version 5
           # is recommended. See RFC 4122 for details.
     },
-    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
-        # the request.
-        # 
-        # If unspecified or no matching version can be found, the
-        # latest one will be used.
+    "requestProjectSettings": True or False, # Requests the project settings to be returned as part of the check response.
   }
 
   x__xgafv: string, V1 error format.
@@ -302,6 +684,153 @@
 
     { # Response message for the Check method.
     "serviceConfigId": "A String", # The actual config id used to process the request.
+    "quotaInfo": { # Contains the quota information for a quota check response. # Quota information for the check request associated with this response.
+      "quotaMetrics": [ # Quota metrics to indicate the usage. Depending on the check request, one or
+          # more of the following metrics will be included:
+          #
+          # 1. For rate quota, per quota group or per quota metric incremental usage
+          # will be specified using the following delta metric:
+          #   "serviceruntime.googleapis.com/api/consumer/quota_used_count"
+          #
+          # 2. For allocation quota, per quota metric total usage will be specified
+          # using the following gauge metric:
+          #   "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+          #
+          # 3. For both rate quota and allocation quota, the quota limit reached
+          # condition will be specified using the following boolean metric:
+          #   "serviceruntime.googleapis.com/quota/exceeded"
+        { # Represents a set of metric values in the same metric.
+            # Each metric value in the set should have a unique combination of start time,
+            # end time, and label values.
+          "metricValues": [ # The values in this metric.
+            { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
+              "labels": { # The labels describing the metric value.
+                  # See comments on google.api.servicecontrol.v1.Operation.labels for
+                  # the overriding relationship.
+                "a_key": "A String",
+              },
+              "doubleValue": 3.14, # A double precision floating point value.
+              "boolValue": True or False, # A boolean value.
+              "startTime": "A String", # The start of the time period over which this metric value's measurement
+                  # applies. The time period has different semantics for different metric
+                  # types (cumulative, delta, and gauge). See the metric definition
+                  # documentation in the service configuration for details.
+              "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                  # points. It contains the size of the population of sample points plus
+                  # additional optional information:
+                  #
+                  #   - the arithmetic mean of the samples
+                  #   - the minimum and maximum of the samples
+                  #   - the sum-squared-deviation of the samples, used to compute variance
+                  #   - a histogram of the values of the sample points
+                "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                    #   Sum[i=1..count]((x_i - mean)^2)
+                    # where each x_i is a sample values. If `count` is zero then this field
+                    # must be zero, otherwise validation of the request fails.
+                "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                    # optional. If present, they must sum to the `count` value.
+                    #
+                    # The buckets are defined below in `bucket_option`. There are N buckets.
+                    # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                    # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                    # in each of the finite buckets. And `bucket_counts[N] is the number
+                    # of samples in the overflow bucket. See the comments of `bucket_option`
+                    # below for more details.
+                    #
+                    # Any suffix of trailing zeros may be omitted.
+                  "A String",
+                ],
+                "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                  "scale": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be > 0.
+                  "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be larger than 1.0.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                },
+                "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                  "width": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                      # Must be strictly positive.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                  "offset": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                },
+                "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                  "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                      # buckets. Note that a list of length N-1 defines N buckets because
+                      # of fenceposting. See comments on `bucket_options` for details.
+                      #
+                      # The i'th finite bucket covers the interval
+                      #   [bound[i-1], bound[i])
+                      # where i ranges from 1 to bound_size() - 1. Note that there are no
+                      # finite buckets at all if 'bound' only contains a single element; in
+                      # that special case the single bound defines the boundary between the
+                      # underflow and overflow buckets.
+                      #
+                      # bucket number                   lower bound    upper bound
+                      #  i == 0 (underflow)              -inf           bound[i]
+                      #  0 < i < bound_size()            bound[i-1]     bound[i]
+                      #  i == bound_size() (overflow)    bound[i-1]     +inf
+                    3.14,
+                  ],
+                },
+                "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                    # zero then this field must be zero.
+              },
+              "stringValue": "A String", # A text string value.
+              "int64Value": "A String", # A signed 64-bit integer value.
+              "endTime": "A String", # The end of the time period over which this metric value's measurement
+                  # applies.
+            },
+          ],
+          "metricName": "A String", # The metric name defined in the service configuration.
+        },
+      ],
+      "limitExceeded": [ # Quota Metrics that have exceeded quota limits.
+          # For QuotaGroup-based quota, this is QuotaGroup.name
+          # For QuotaLimit-based quota, this is QuotaLimit.name
+          # See: google.api.Quota
+          # Deprecated: Use quota_metrics to get per quota group limit exceeded status.
+        "A String",
+      ],
+      "quotaConsumed": { # Map of quota group name to the actual number of tokens consumed. If the
+          # quota check was not successful, then this will not be populated due to no
+          # quota consumption.
+          # Deprecated: Use quota_metrics to get per quota group usage.
+        "a_key": 42,
+      },
+    },
+    "checkInfo": { # Feedback data returned from the server during processing a Check request.
+      "unusedArguments": [ # A list of fields and label keys that are ignored by the server.
+          # The client doesn't need to send them for following requests to improve
+          # performance and allow better aggregation.
+        "A String",
+      ],
+    },
     "checkErrors": [ # Indicate the decision of the check.
         #
         # If no check errors are present, the service should process the operation.
@@ -319,6 +848,630 @@
 </div>
 
 <div class="method">
+    <code class="details" id="endReconciliation">endReconciliation(serviceName=None, body, x__xgafv=None)</code>
+  <pre>Signals the quota controller that service ends the ongoing usage
+reconciliation.
+
+This method requires the `servicemanagement.services.quota`
+permission on the specified service. For more information, see
+[Google Cloud IAM](https://cloud.google.com/iam).
+
+Args:
+  serviceName: string, Name of the service as specified in the service configuration. For example,
+`"pubsub.googleapis.com"`.
+
+See google.api.Service for the definition of a service name. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request. If unspecified or no matching version can be found, the latest
+        # one will be used.
+    "reconciliationOperation": { # Represents information regarding a quota operation. # Operation that describes the quota reconciliation.
+      "quotaMetrics": [ # Represents information about this operation. Each MetricValueSet
+          # corresponds to a metric defined in the service configuration.
+          # The data type used in the MetricValueSet must agree with
+          # the data type specified in the metric definition.
+          #
+          # Within a single operation, it is not allowed to have more than one
+          # MetricValue instances that have the same metric names and identical
+          # label value combinations. If a request has such duplicated MetricValue
+          # instances, the entire request is rejected with
+          # an invalid argument error.
+        { # Represents a set of metric values in the same metric.
+            # Each metric value in the set should have a unique combination of start time,
+            # end time, and label values.
+          "metricValues": [ # The values in this metric.
+            { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
+              "labels": { # The labels describing the metric value.
+                  # See comments on google.api.servicecontrol.v1.Operation.labels for
+                  # the overriding relationship.
+                "a_key": "A String",
+              },
+              "doubleValue": 3.14, # A double precision floating point value.
+              "boolValue": True or False, # A boolean value.
+              "startTime": "A String", # The start of the time period over which this metric value's measurement
+                  # applies. The time period has different semantics for different metric
+                  # types (cumulative, delta, and gauge). See the metric definition
+                  # documentation in the service configuration for details.
+              "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                  # points. It contains the size of the population of sample points plus
+                  # additional optional information:
+                  #
+                  #   - the arithmetic mean of the samples
+                  #   - the minimum and maximum of the samples
+                  #   - the sum-squared-deviation of the samples, used to compute variance
+                  #   - a histogram of the values of the sample points
+                "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                    #   Sum[i=1..count]((x_i - mean)^2)
+                    # where each x_i is a sample values. If `count` is zero then this field
+                    # must be zero, otherwise validation of the request fails.
+                "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                    # optional. If present, they must sum to the `count` value.
+                    #
+                    # The buckets are defined below in `bucket_option`. There are N buckets.
+                    # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                    # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                    # in each of the finite buckets. And `bucket_counts[N] is the number
+                    # of samples in the overflow bucket. See the comments of `bucket_option`
+                    # below for more details.
+                    #
+                    # Any suffix of trailing zeros may be omitted.
+                  "A String",
+                ],
+                "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                  "scale": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be > 0.
+                  "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be larger than 1.0.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                },
+                "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                  "width": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                      # Must be strictly positive.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                  "offset": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                },
+                "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                  "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                      # buckets. Note that a list of length N-1 defines N buckets because
+                      # of fenceposting. See comments on `bucket_options` for details.
+                      #
+                      # The i'th finite bucket covers the interval
+                      #   [bound[i-1], bound[i])
+                      # where i ranges from 1 to bound_size() - 1. Note that there are no
+                      # finite buckets at all if 'bound' only contains a single element; in
+                      # that special case the single bound defines the boundary between the
+                      # underflow and overflow buckets.
+                      #
+                      # bucket number                   lower bound    upper bound
+                      #  i == 0 (underflow)              -inf           bound[i]
+                      #  0 < i < bound_size()            bound[i-1]     bound[i]
+                      #  i == bound_size() (overflow)    bound[i-1]     +inf
+                    3.14,
+                  ],
+                },
+                "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                    # zero then this field must be zero.
+              },
+              "stringValue": "A String", # A text string value.
+              "int64Value": "A String", # A signed 64-bit integer value.
+              "endTime": "A String", # The end of the time period over which this metric value's measurement
+                  # applies.
+            },
+          ],
+          "metricName": "A String", # The metric name defined in the service configuration.
+        },
+      ],
+      "methodName": "A String", # Fully qualified name of the API method for which this quota operation is
+          # requested. This name is used for matching quota rules or metric rules and
+          # billing status rules defined in service configuration. This field is not
+          # required if the quota operation is performed on non-API resources.
+          #
+          # Example of an RPC method name:
+          #     google.example.library.v1.LibraryService.CreateShelf
+      "labels": { # Labels describing the operation.
+        "a_key": "A String",
+      },
+      "quotaMode": "A String", # Quota mode for this operation.
+      "consumerId": "A String", # Identity of the consumer for whom this quota operation is being performed.
+          #
+          # This can be in one of the following formats:
+          #   project:<project_id>,
+          #   project_number:<project_number>,
+          #   api_key:<api_key>.
+      "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
+          # service that generated the operation. If the service calls AllocateQuota
+          # and ReleaseQuota on the same operation, the two calls should carry the
+          # same ID.
+          #
+          # UUID version 4 is recommended, though not required. In scenarios where an
+          # operation is computed from existing information and an idempotent id is
+          # desirable for deduplication purpose, UUID version 5 is recommended. See
+          # RFC 4122 for details.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    {
+    "serviceConfigId": "A String", # ID of the actual config used to process the request.
+    "quotaMetrics": [ # Metric values as tracked by One Platform before the adjustment was made.
+      { # Represents a set of metric values in the same metric.
+          # Each metric value in the set should have a unique combination of start time,
+          # end time, and label values.
+        "metricValues": [ # The values in this metric.
+          { # Represents a single metric value.
+            "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+              "units": "A String", # The whole units of the amount.
+                  # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+              "nanos": 42, # Number of nano (10^-9) units of the amount.
+                  # The value must be between -999,999,999 and +999,999,999 inclusive.
+                  # If `units` is positive, `nanos` must be positive or zero.
+                  # If `units` is zero, `nanos` can be positive, zero, or negative.
+                  # If `units` is negative, `nanos` must be negative or zero.
+                  # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+              "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+            },
+            "labels": { # The labels describing the metric value.
+                # See comments on google.api.servicecontrol.v1.Operation.labels for
+                # the overriding relationship.
+              "a_key": "A String",
+            },
+            "doubleValue": 3.14, # A double precision floating point value.
+            "boolValue": True or False, # A boolean value.
+            "startTime": "A String", # The start of the time period over which this metric value's measurement
+                # applies. The time period has different semantics for different metric
+                # types (cumulative, delta, and gauge). See the metric definition
+                # documentation in the service configuration for details.
+            "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                # points. It contains the size of the population of sample points plus
+                # additional optional information:
+                #
+                #   - the arithmetic mean of the samples
+                #   - the minimum and maximum of the samples
+                #   - the sum-squared-deviation of the samples, used to compute variance
+                #   - a histogram of the values of the sample points
+              "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+              "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                  #   Sum[i=1..count]((x_i - mean)^2)
+                  # where each x_i is a sample values. If `count` is zero then this field
+                  # must be zero, otherwise validation of the request fails.
+              "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                  # optional. If present, they must sum to the `count` value.
+                  #
+                  # The buckets are defined below in `bucket_option`. There are N buckets.
+                  # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                  # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                  # in each of the finite buckets. And `bucket_counts[N] is the number
+                  # of samples in the overflow bucket. See the comments of `bucket_option`
+                  # below for more details.
+                  #
+                  # Any suffix of trailing zeros may be omitted.
+                "A String",
+              ],
+              "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                "scale": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be > 0.
+                "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be larger than 1.0.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+              },
+              "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+              "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+              "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                "width": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+                    # Must be strictly positive.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+                "offset": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+              },
+              "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                    # buckets. Note that a list of length N-1 defines N buckets because
+                    # of fenceposting. See comments on `bucket_options` for details.
+                    #
+                    # The i'th finite bucket covers the interval
+                    #   [bound[i-1], bound[i])
+                    # where i ranges from 1 to bound_size() - 1. Note that there are no
+                    # finite buckets at all if 'bound' only contains a single element; in
+                    # that special case the single bound defines the boundary between the
+                    # underflow and overflow buckets.
+                    #
+                    # bucket number                   lower bound    upper bound
+                    #  i == 0 (underflow)              -inf           bound[i]
+                    #  0 < i < bound_size()            bound[i-1]     bound[i]
+                    #  i == bound_size() (overflow)    bound[i-1]     +inf
+                  3.14,
+                ],
+              },
+              "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                  # zero then this field must be zero.
+            },
+            "stringValue": "A String", # A text string value.
+            "int64Value": "A String", # A signed 64-bit integer value.
+            "endTime": "A String", # The end of the time period over which this metric value's measurement
+                # applies.
+          },
+        ],
+        "metricName": "A String", # The metric name defined in the service configuration.
+      },
+    ],
+    "reconciliationErrors": [ # Indicates the decision of the reconciliation end.
+      {
+        "code": "A String", # Error code.
+        "description": "A String", # Free-form text that provides details on the cause of the error.
+        "subject": "A String", # Subject to whom this error applies. See the specific enum for more details
+            # on this field. For example, "clientip:<ip address of client>" or
+            # "project:<Google developer project id>".
+      },
+    ],
+    "operationId": "A String", # The same operation_id value used in the EndReconciliationRequest. Used for
+        # logging and diagnostics purposes.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="releaseQuota">releaseQuota(serviceName=None, body, x__xgafv=None)</code>
+  <pre>Releases previously allocated quota done through AllocateQuota method.
+
+This method requires the `servicemanagement.services.quota`
+permission on the specified service. For more information, see
+[Google Cloud IAM](https://cloud.google.com/iam).
+
+Args:
+  serviceName: string, Name of the service as specified in the service configuration. For example,
+`"pubsub.googleapis.com"`.
+
+See google.api.Service for the definition of a service name. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request message for the ReleaseQuota method.
+    "releaseOperation": { # Represents information regarding a quota operation. # Operation that describes the quota release.
+      "quotaMetrics": [ # Represents information about this operation. Each MetricValueSet
+          # corresponds to a metric defined in the service configuration.
+          # The data type used in the MetricValueSet must agree with
+          # the data type specified in the metric definition.
+          #
+          # Within a single operation, it is not allowed to have more than one
+          # MetricValue instances that have the same metric names and identical
+          # label value combinations. If a request has such duplicated MetricValue
+          # instances, the entire request is rejected with
+          # an invalid argument error.
+        { # Represents a set of metric values in the same metric.
+            # Each metric value in the set should have a unique combination of start time,
+            # end time, and label values.
+          "metricValues": [ # The values in this metric.
+            { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
+              "labels": { # The labels describing the metric value.
+                  # See comments on google.api.servicecontrol.v1.Operation.labels for
+                  # the overriding relationship.
+                "a_key": "A String",
+              },
+              "doubleValue": 3.14, # A double precision floating point value.
+              "boolValue": True or False, # A boolean value.
+              "startTime": "A String", # The start of the time period over which this metric value's measurement
+                  # applies. The time period has different semantics for different metric
+                  # types (cumulative, delta, and gauge). See the metric definition
+                  # documentation in the service configuration for details.
+              "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                  # points. It contains the size of the population of sample points plus
+                  # additional optional information:
+                  #
+                  #   - the arithmetic mean of the samples
+                  #   - the minimum and maximum of the samples
+                  #   - the sum-squared-deviation of the samples, used to compute variance
+                  #   - a histogram of the values of the sample points
+                "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                    #   Sum[i=1..count]((x_i - mean)^2)
+                    # where each x_i is a sample values. If `count` is zero then this field
+                    # must be zero, otherwise validation of the request fails.
+                "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                    # optional. If present, they must sum to the `count` value.
+                    #
+                    # The buckets are defined below in `bucket_option`. There are N buckets.
+                    # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                    # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                    # in each of the finite buckets. And `bucket_counts[N] is the number
+                    # of samples in the overflow bucket. See the comments of `bucket_option`
+                    # below for more details.
+                    #
+                    # Any suffix of trailing zeros may be omitted.
+                  "A String",
+                ],
+                "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                  "scale": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be > 0.
+                  "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be larger than 1.0.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                },
+                "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                  "width": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                      # Must be strictly positive.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                  "offset": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                },
+                "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                  "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                      # buckets. Note that a list of length N-1 defines N buckets because
+                      # of fenceposting. See comments on `bucket_options` for details.
+                      #
+                      # The i'th finite bucket covers the interval
+                      #   [bound[i-1], bound[i])
+                      # where i ranges from 1 to bound_size() - 1. Note that there are no
+                      # finite buckets at all if 'bound' only contains a single element; in
+                      # that special case the single bound defines the boundary between the
+                      # underflow and overflow buckets.
+                      #
+                      # bucket number                   lower bound    upper bound
+                      #  i == 0 (underflow)              -inf           bound[i]
+                      #  0 < i < bound_size()            bound[i-1]     bound[i]
+                      #  i == bound_size() (overflow)    bound[i-1]     +inf
+                    3.14,
+                  ],
+                },
+                "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                    # zero then this field must be zero.
+              },
+              "stringValue": "A String", # A text string value.
+              "int64Value": "A String", # A signed 64-bit integer value.
+              "endTime": "A String", # The end of the time period over which this metric value's measurement
+                  # applies.
+            },
+          ],
+          "metricName": "A String", # The metric name defined in the service configuration.
+        },
+      ],
+      "methodName": "A String", # Fully qualified name of the API method for which this quota operation is
+          # requested. This name is used for matching quota rules or metric rules and
+          # billing status rules defined in service configuration. This field is not
+          # required if the quota operation is performed on non-API resources.
+          #
+          # Example of an RPC method name:
+          #     google.example.library.v1.LibraryService.CreateShelf
+      "labels": { # Labels describing the operation.
+        "a_key": "A String",
+      },
+      "quotaMode": "A String", # Quota mode for this operation.
+      "consumerId": "A String", # Identity of the consumer for whom this quota operation is being performed.
+          #
+          # This can be in one of the following formats:
+          #   project:<project_id>,
+          #   project_number:<project_number>,
+          #   api_key:<api_key>.
+      "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
+          # service that generated the operation. If the service calls AllocateQuota
+          # and ReleaseQuota on the same operation, the two calls should carry the
+          # same ID.
+          #
+          # UUID version 4 is recommended, though not required. In scenarios where an
+          # operation is computed from existing information and an idempotent id is
+          # desirable for deduplication purpose, UUID version 5 is recommended. See
+          # RFC 4122 for details.
+    },
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request. If unspecified or no matching version can be found, the latest
+        # one will be used.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for the ReleaseQuota method.
+    "serviceConfigId": "A String", # ID of the actual config used to process the request.
+    "quotaMetrics": [ # Quota metrics to indicate the result of release. Depending on the
+        # request, one or more of the following metrics will be included:
+        #
+        # 1. For rate quota, per quota group or per quota metric released amount
+        # will be specified using the following delta metric:
+        #   "serviceruntime.googleapis.com/api/consumer/quota_refund_count"
+        #
+        # 2. For allocation quota, per quota metric total usage will be specified
+        # using the following gauge metric:
+        #   "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+      { # Represents a set of metric values in the same metric.
+          # Each metric value in the set should have a unique combination of start time,
+          # end time, and label values.
+        "metricValues": [ # The values in this metric.
+          { # Represents a single metric value.
+            "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+              "units": "A String", # The whole units of the amount.
+                  # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+              "nanos": 42, # Number of nano (10^-9) units of the amount.
+                  # The value must be between -999,999,999 and +999,999,999 inclusive.
+                  # If `units` is positive, `nanos` must be positive or zero.
+                  # If `units` is zero, `nanos` can be positive, zero, or negative.
+                  # If `units` is negative, `nanos` must be negative or zero.
+                  # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+              "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+            },
+            "labels": { # The labels describing the metric value.
+                # See comments on google.api.servicecontrol.v1.Operation.labels for
+                # the overriding relationship.
+              "a_key": "A String",
+            },
+            "doubleValue": 3.14, # A double precision floating point value.
+            "boolValue": True or False, # A boolean value.
+            "startTime": "A String", # The start of the time period over which this metric value's measurement
+                # applies. The time period has different semantics for different metric
+                # types (cumulative, delta, and gauge). See the metric definition
+                # documentation in the service configuration for details.
+            "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                # points. It contains the size of the population of sample points plus
+                # additional optional information:
+                #
+                #   - the arithmetic mean of the samples
+                #   - the minimum and maximum of the samples
+                #   - the sum-squared-deviation of the samples, used to compute variance
+                #   - a histogram of the values of the sample points
+              "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+              "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                  #   Sum[i=1..count]((x_i - mean)^2)
+                  # where each x_i is a sample values. If `count` is zero then this field
+                  # must be zero, otherwise validation of the request fails.
+              "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                  # optional. If present, they must sum to the `count` value.
+                  #
+                  # The buckets are defined below in `bucket_option`. There are N buckets.
+                  # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                  # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                  # in each of the finite buckets. And `bucket_counts[N] is the number
+                  # of samples in the overflow bucket. See the comments of `bucket_option`
+                  # below for more details.
+                  #
+                  # Any suffix of trailing zeros may be omitted.
+                "A String",
+              ],
+              "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                "scale": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be > 0.
+                "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be larger than 1.0.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+              },
+              "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+              "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+              "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                "width": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+                    # Must be strictly positive.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+                "offset": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+              },
+              "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                    # buckets. Note that a list of length N-1 defines N buckets because
+                    # of fenceposting. See comments on `bucket_options` for details.
+                    #
+                    # The i'th finite bucket covers the interval
+                    #   [bound[i-1], bound[i])
+                    # where i ranges from 1 to bound_size() - 1. Note that there are no
+                    # finite buckets at all if 'bound' only contains a single element; in
+                    # that special case the single bound defines the boundary between the
+                    # underflow and overflow buckets.
+                    #
+                    # bucket number                   lower bound    upper bound
+                    #  i == 0 (underflow)              -inf           bound[i]
+                    #  0 < i < bound_size()            bound[i-1]     bound[i]
+                    #  i == bound_size() (overflow)    bound[i-1]     +inf
+                  3.14,
+                ],
+              },
+              "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                  # zero then this field must be zero.
+            },
+            "stringValue": "A String", # A text string value.
+            "int64Value": "A String", # A signed 64-bit integer value.
+            "endTime": "A String", # The end of the time period over which this metric value's measurement
+                # applies.
+          },
+        ],
+        "metricName": "A String", # The metric name defined in the service configuration.
+      },
+    ],
+    "releaseErrors": [ # Indicates the decision of the release.
+      {
+        "code": "A String", # Error code.
+        "description": "A String", # Free-form text that provides details on the cause of the error.
+        "subject": "A String", # Subject to whom this error applies. See the specific enum for more details
+            # on this field. For example, "clientip:<ip address of client>" or
+            # "project:<Google developer project id>".
+      },
+    ],
+    "operationId": "A String", # The same operation_id value used in the ReleaseQuotaRequest. Used for
+        # logging and diagnostics purposes.
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="report">report(serviceName=None, body, x__xgafv=None)</code>
   <pre>Reports operation results to Google Service Control, such as logs and
 metrics. It should be called after an operation is completed.
@@ -371,6 +1524,17 @@
               # end time, and label values.
             "metricValues": [ # The values in this metric.
               { # Represents a single metric value.
+                "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                  "units": "A String", # The whole units of the amount.
+                      # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                  "nanos": 42, # Number of nano (10^-9) units of the amount.
+                      # The value must be between -999,999,999 and +999,999,999 inclusive.
+                      # If `units` is positive, `nanos` must be positive or zero.
+                      # If `units` is zero, `nanos` can be positive, zero, or negative.
+                      # If `units` is negative, `nanos` must be negative or zero.
+                      # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                  "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+                },
                 "labels": { # The labels describing the metric value.
                     # See comments on google.api.servicecontrol.v1.Operation.labels for
                     # the overriding relationship.
@@ -391,6 +1555,10 @@
                     #   - the sum-squared-deviation of the samples, used to compute variance
                     #   - a histogram of the values of the sample points
                   "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                  "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                      #   Sum[i=1..count]((x_i - mean)^2)
+                      # where each x_i is a sample values. If `count` is zero then this field
+                      # must be zero, otherwise validation of the request fails.
                   "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
                       # optional. If present, they must sum to the `count` value.
                       #
@@ -417,12 +1585,8 @@
                         # the total number of buckets is `num_finite_buckets` + 2.
                         # See comments on `bucket_options` for details.
                   },
-                  "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
                   "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
-                  "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
-                      #   Sum[i=1..count]((x_i - mean)^2)
-                      # where each x_i is a sample values. If `count` is zero then this field
-                      # must be zero, otherwise validation of the request fails.
+                  "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
                   "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
                     "width": 3.14, # The i'th linear bucket covers the interval
                         #   [offset + (i-1) * width, offset + i * width)
@@ -484,19 +1648,46 @@
             #        where the API is served (e.g. GAE, GCE, GKE).
           "a_key": "A String",
         },
-        "consumerId": "A String", # Identity of the consumer who is using the service.
-            # This field should be filled in for the operations initiated by a
-            # consumer, but not for service-initiated operations that are
-            # not related to a specific consumer.
+        "quotaProperties": { # Represents the properties needed for quota operations. # Represents the properties needed for quota check. Applicable only if this
+            # operation is for a quota check request.
+            #
+            # Use the metric_value_sets field in Operation message to provide cost
+            # override with metric_name in <service_name>/quota/<quota_group_name>/cost
+            # format. Overrides for unmatched quota groups will be ignored.
+            # Costs are expected to be >= 0. Cost 0 will cause no quota check,
+            # but still traffic restrictions will be enforced.
+          "quotaMode": "A String", # Quota mode for this operation.
+          "limitByIds": { # LimitType IDs that should be used for checking quota. Key in this map
+              # should be a valid LimitType string, and the value is the ID to be used. For
+              # example, an entry <USER, 123> will cause all user quota limits to use 123
+              # as the user ID. See google/api/quota.proto for the definition of LimitType.
+              # CLIENT_PROJECT: Not supported.
+              # USER: Value of this entry will be used for enforcing user-level quota
+              #       limits. If none specified, caller IP passed in the
+              #       servicecontrol.googleapis.com/caller_ip label will be used instead.
+              #       If the server cannot resolve a value for this LimitType, an error
+              #       will be thrown. No validation will be performed on this ID.
+              # Deprecated: use servicecontrol.googleapis.com/user label to send user ID.
+            "a_key": "A String",
+          },
+        },
+        "resourceContainer": "A String", # The resource name of the parent of a resource in the resource hierarchy.
             #
             # This can be in one of the following formats:
-            #   project:<project_id>,
-            #   project_number:<project_number>,
-            #   api_key:<api_key>.
+            #     - “projects/<project-id or project-number>”
+            #     - “folders/<folder-id>”
+            #     - “organizations/<organization-id>”
+        "userLabels": { # User defined labels for the resource that this operation is associated
+            # with.
+          "a_key": "A String",
+        },
+        "endTime": "A String", # End time of the operation.
+            # Required when the operation is used in ServiceController.Report,
+            # but optional when the operation is used in ServiceController.Check.
         "logEntries": [ # Represents information to be logged.
           { # An individual log entry.
-            "name": "A String", # Required. The log to which this log entry belongs. Examples: `"syslog"`,
-                # `"book_log"`.
+            "severity": "A String", # The severity of the log entry. The default value is
+                # `LogSeverity.DEFAULT`.
             "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
             "timestamp": "A String", # The time the event described by the log entry occurred. If
                 # omitted, defaults to operation start time.
@@ -508,21 +1699,27 @@
                 # is expressed as a JSON object.
               "a_key": "", # Properties of the object.
             },
-            "insertId": "A String", # A unique ID for the log entry used for deduplication. If omitted,
-                # the implementation will generate one based on operation_id.
             "protoPayload": { # The log entry payload, represented as a protocol buffer that is
                 # expressed as a JSON object. You can only pass `protoPayload`
                 # values that belong to a set of approved types.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
-            "severity": "A String", # The severity of the log entry. The default value is
-                # `LogSeverity.DEFAULT`.
+            "insertId": "A String", # A unique ID for the log entry used for deduplication. If omitted,
+                # the implementation will generate one based on operation_id.
+            "name": "A String", # Required. The log to which this log entry belongs. Examples: `"syslog"`,
+                # `"book_log"`.
           },
         ],
         "startTime": "A String", # Required. Start time of the operation.
-        "endTime": "A String", # End time of the operation.
-            # Required when the operation is used in ServiceController.Report,
-            # but optional when the operation is used in ServiceController.Check.
+        "consumerId": "A String", # Identity of the consumer who is using the service.
+            # This field should be filled in for the operations initiated by a
+            # consumer, but not for service-initiated operations that are
+            # not related to a specific consumer.
+            #
+            # This can be in one of the following formats:
+            #   project:<project_id>,
+            #   project_number:<project_number>,
+            #   api_key:<api_key>.
         "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
             # service that generated the operation. If the service calls
             # Check() and Report() on the same operation, the two calls should carry
@@ -551,6 +1748,158 @@
 
     { # Response message for the Report method.
     "serviceConfigId": "A String", # The actual config id used to process the request.
+    "reportInfos": [ # Quota usage for each quota release `Operation` request.
+        #
+        # Fully or partially failed quota release request may or may not be present
+        # in `report_quota_info`. For example, a failed quota release request will
+        # have the current quota usage info when precise quota library returns the
+        # info. A deadline exceeded quota request will not have quota usage info.
+        #
+        # If there is no quota release request, report_quota_info will be empty.
+      {
+        "quotaInfo": { # Contains the quota information for a quota check response. # Quota usage info when processing the `Operation`.
+          "quotaMetrics": [ # Quota metrics to indicate the usage. Depending on the check request, one or
+              # more of the following metrics will be included:
+              #
+              # 1. For rate quota, per quota group or per quota metric incremental usage
+              # will be specified using the following delta metric:
+              #   "serviceruntime.googleapis.com/api/consumer/quota_used_count"
+              #
+              # 2. For allocation quota, per quota metric total usage will be specified
+              # using the following gauge metric:
+              #   "serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
+              #
+              # 3. For both rate quota and allocation quota, the quota limit reached
+              # condition will be specified using the following boolean metric:
+              #   "serviceruntime.googleapis.com/quota/exceeded"
+            { # Represents a set of metric values in the same metric.
+                # Each metric value in the set should have a unique combination of start time,
+                # end time, and label values.
+              "metricValues": [ # The values in this metric.
+                { # Represents a single metric value.
+                  "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                    "units": "A String", # The whole units of the amount.
+                        # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                    "nanos": 42, # Number of nano (10^-9) units of the amount.
+                        # The value must be between -999,999,999 and +999,999,999 inclusive.
+                        # If `units` is positive, `nanos` must be positive or zero.
+                        # If `units` is zero, `nanos` can be positive, zero, or negative.
+                        # If `units` is negative, `nanos` must be negative or zero.
+                        # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                    "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+                  },
+                  "labels": { # The labels describing the metric value.
+                      # See comments on google.api.servicecontrol.v1.Operation.labels for
+                      # the overriding relationship.
+                    "a_key": "A String",
+                  },
+                  "doubleValue": 3.14, # A double precision floating point value.
+                  "boolValue": True or False, # A boolean value.
+                  "startTime": "A String", # The start of the time period over which this metric value's measurement
+                      # applies. The time period has different semantics for different metric
+                      # types (cumulative, delta, and gauge). See the metric definition
+                      # documentation in the service configuration for details.
+                  "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                      # points. It contains the size of the population of sample points plus
+                      # additional optional information:
+                      #
+                      #   - the arithmetic mean of the samples
+                      #   - the minimum and maximum of the samples
+                      #   - the sum-squared-deviation of the samples, used to compute variance
+                      #   - a histogram of the values of the sample points
+                    "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                    "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                        #   Sum[i=1..count]((x_i - mean)^2)
+                        # where each x_i is a sample values. If `count` is zero then this field
+                        # must be zero, otherwise validation of the request fails.
+                    "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                        # optional. If present, they must sum to the `count` value.
+                        #
+                        # The buckets are defined below in `bucket_option`. There are N buckets.
+                        # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                        # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                        # in each of the finite buckets. And `bucket_counts[N] is the number
+                        # of samples in the overflow bucket. See the comments of `bucket_option`
+                        # below for more details.
+                        #
+                        # Any suffix of trailing zeros may be omitted.
+                      "A String",
+                    ],
+                    "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                      "scale": 3.14, # The i'th exponential bucket covers the interval
+                          #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                          # where i ranges from 1 to num_finite_buckets inclusive.
+                          # Must be > 0.
+                      "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                          #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                          # where i ranges from 1 to num_finite_buckets inclusive.
+                          # Must be larger than 1.0.
+                      "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                          # the total number of buckets is `num_finite_buckets` + 2.
+                          # See comments on `bucket_options` for details.
+                    },
+                    "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                    "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                    "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                      "width": 3.14, # The i'th linear bucket covers the interval
+                          #   [offset + (i-1) * width, offset + i * width)
+                          # where i ranges from 1 to num_finite_buckets, inclusive.
+                          # Must be strictly positive.
+                      "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                          # the total number of buckets is `num_finite_buckets` + 2.
+                          # See comments on `bucket_options` for details.
+                      "offset": 3.14, # The i'th linear bucket covers the interval
+                          #   [offset + (i-1) * width, offset + i * width)
+                          # where i ranges from 1 to num_finite_buckets, inclusive.
+                    },
+                    "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                      "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                          # buckets. Note that a list of length N-1 defines N buckets because
+                          # of fenceposting. See comments on `bucket_options` for details.
+                          #
+                          # The i'th finite bucket covers the interval
+                          #   [bound[i-1], bound[i])
+                          # where i ranges from 1 to bound_size() - 1. Note that there are no
+                          # finite buckets at all if 'bound' only contains a single element; in
+                          # that special case the single bound defines the boundary between the
+                          # underflow and overflow buckets.
+                          #
+                          # bucket number                   lower bound    upper bound
+                          #  i == 0 (underflow)              -inf           bound[i]
+                          #  0 < i < bound_size()            bound[i-1]     bound[i]
+                          #  i == bound_size() (overflow)    bound[i-1]     +inf
+                        3.14,
+                      ],
+                    },
+                    "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                        # zero then this field must be zero.
+                  },
+                  "stringValue": "A String", # A text string value.
+                  "int64Value": "A String", # A signed 64-bit integer value.
+                  "endTime": "A String", # The end of the time period over which this metric value's measurement
+                      # applies.
+                },
+              ],
+              "metricName": "A String", # The metric name defined in the service configuration.
+            },
+          ],
+          "limitExceeded": [ # Quota Metrics that have exceeded quota limits.
+              # For QuotaGroup-based quota, this is QuotaGroup.name
+              # For QuotaLimit-based quota, this is QuotaLimit.name
+              # See: google.api.Quota
+              # Deprecated: Use quota_metrics to get per quota group limit exceeded status.
+            "A String",
+          ],
+          "quotaConsumed": { # Map of quota group name to the actual number of tokens consumed. If the
+              # quota check was not successful, then this will not be populated due to no
+              # quota consumption.
+              # Deprecated: Use quota_metrics to get per quota group usage.
+            "a_key": 42,
+          },
+        },
+        "operationId": "A String", # The Operation.operation_id value from the request.
+      },
+    ],
     "reportErrors": [ # Partial failures, one for each `Operation` in the request that failed
         # processing. There are three possible combinations of the RPC status:
         #
@@ -635,4 +1984,332 @@
   }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="startReconciliation">startReconciliation(serviceName=None, body, x__xgafv=None)</code>
+  <pre>Unlike rate quota, allocation quota does not get refilled periodically.
+So, it is possible that the quota usage as seen by the service differs from
+what the One Platform considers the usage is. This is expected to happen
+only rarely, but over time this can accumulate. Services can invoke
+StartReconciliation and EndReconciliation to correct this usage drift, as
+described below:
+1. Service sends StartReconciliation with a timestamp in future for each
+   metric that needs to be reconciled. The timestamp being in future allows
+   to account for in-flight AllocateQuota and ReleaseQuota requests for the
+   same metric.
+2. One Platform records this timestamp and starts tracking subsequent
+   AllocateQuota and ReleaseQuota requests until EndReconciliation is
+   called.
+3. At or after the time specified in the StartReconciliation, service
+   sends EndReconciliation with the usage that needs to be reconciled to.
+4. One Platform adjusts its own record of usage for that metric to the
+   value specified in EndReconciliation by taking in to account any
+   allocation or release between StartReconciliation and EndReconciliation.
+
+Signals the quota controller that the service wants to perform a usage
+reconciliation as specified in the request.
+
+This method requires the `servicemanagement.services.quota`
+permission on the specified service. For more information, see
+[Google Cloud IAM](https://cloud.google.com/iam).
+
+Args:
+  serviceName: string, Name of the service as specified in the service configuration. For example,
+`"pubsub.googleapis.com"`.
+
+See google.api.Service for the definition of a service name. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request. If unspecified or no matching version can be found, the latest
+        # one will be used.
+    "reconciliationOperation": { # Represents information regarding a quota operation. # Operation that describes the quota reconciliation.
+      "quotaMetrics": [ # Represents information about this operation. Each MetricValueSet
+          # corresponds to a metric defined in the service configuration.
+          # The data type used in the MetricValueSet must agree with
+          # the data type specified in the metric definition.
+          #
+          # Within a single operation, it is not allowed to have more than one
+          # MetricValue instances that have the same metric names and identical
+          # label value combinations. If a request has such duplicated MetricValue
+          # instances, the entire request is rejected with
+          # an invalid argument error.
+        { # Represents a set of metric values in the same metric.
+            # Each metric value in the set should have a unique combination of start time,
+            # end time, and label values.
+          "metricValues": [ # The values in this metric.
+            { # Represents a single metric value.
+              "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+                "units": "A String", # The whole units of the amount.
+                    # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+                "nanos": 42, # Number of nano (10^-9) units of the amount.
+                    # The value must be between -999,999,999 and +999,999,999 inclusive.
+                    # If `units` is positive, `nanos` must be positive or zero.
+                    # If `units` is zero, `nanos` can be positive, zero, or negative.
+                    # If `units` is negative, `nanos` must be negative or zero.
+                    # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+                "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+              },
+              "labels": { # The labels describing the metric value.
+                  # See comments on google.api.servicecontrol.v1.Operation.labels for
+                  # the overriding relationship.
+                "a_key": "A String",
+              },
+              "doubleValue": 3.14, # A double precision floating point value.
+              "boolValue": True or False, # A boolean value.
+              "startTime": "A String", # The start of the time period over which this metric value's measurement
+                  # applies. The time period has different semantics for different metric
+                  # types (cumulative, delta, and gauge). See the metric definition
+                  # documentation in the service configuration for details.
+              "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                  # points. It contains the size of the population of sample points plus
+                  # additional optional information:
+                  #
+                  #   - the arithmetic mean of the samples
+                  #   - the minimum and maximum of the samples
+                  #   - the sum-squared-deviation of the samples, used to compute variance
+                  #   - a histogram of the values of the sample points
+                "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+                "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                    #   Sum[i=1..count]((x_i - mean)^2)
+                    # where each x_i is a sample values. If `count` is zero then this field
+                    # must be zero, otherwise validation of the request fails.
+                "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                    # optional. If present, they must sum to the `count` value.
+                    #
+                    # The buckets are defined below in `bucket_option`. There are N buckets.
+                    # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                    # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                    # in each of the finite buckets. And `bucket_counts[N] is the number
+                    # of samples in the overflow bucket. See the comments of `bucket_option`
+                    # below for more details.
+                    #
+                    # Any suffix of trailing zeros may be omitted.
+                  "A String",
+                ],
+                "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                  "scale": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be > 0.
+                  "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                      #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                      # where i ranges from 1 to num_finite_buckets inclusive.
+                      # Must be larger than 1.0.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                },
+                "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+                "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+                "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                  "width": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                      # Must be strictly positive.
+                  "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                      # the total number of buckets is `num_finite_buckets` + 2.
+                      # See comments on `bucket_options` for details.
+                  "offset": 3.14, # The i'th linear bucket covers the interval
+                      #   [offset + (i-1) * width, offset + i * width)
+                      # where i ranges from 1 to num_finite_buckets, inclusive.
+                },
+                "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                  "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                      # buckets. Note that a list of length N-1 defines N buckets because
+                      # of fenceposting. See comments on `bucket_options` for details.
+                      #
+                      # The i'th finite bucket covers the interval
+                      #   [bound[i-1], bound[i])
+                      # where i ranges from 1 to bound_size() - 1. Note that there are no
+                      # finite buckets at all if 'bound' only contains a single element; in
+                      # that special case the single bound defines the boundary between the
+                      # underflow and overflow buckets.
+                      #
+                      # bucket number                   lower bound    upper bound
+                      #  i == 0 (underflow)              -inf           bound[i]
+                      #  0 < i < bound_size()            bound[i-1]     bound[i]
+                      #  i == bound_size() (overflow)    bound[i-1]     +inf
+                    3.14,
+                  ],
+                },
+                "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                    # zero then this field must be zero.
+              },
+              "stringValue": "A String", # A text string value.
+              "int64Value": "A String", # A signed 64-bit integer value.
+              "endTime": "A String", # The end of the time period over which this metric value's measurement
+                  # applies.
+            },
+          ],
+          "metricName": "A String", # The metric name defined in the service configuration.
+        },
+      ],
+      "methodName": "A String", # Fully qualified name of the API method for which this quota operation is
+          # requested. This name is used for matching quota rules or metric rules and
+          # billing status rules defined in service configuration. This field is not
+          # required if the quota operation is performed on non-API resources.
+          #
+          # Example of an RPC method name:
+          #     google.example.library.v1.LibraryService.CreateShelf
+      "labels": { # Labels describing the operation.
+        "a_key": "A String",
+      },
+      "quotaMode": "A String", # Quota mode for this operation.
+      "consumerId": "A String", # Identity of the consumer for whom this quota operation is being performed.
+          #
+          # This can be in one of the following formats:
+          #   project:<project_id>,
+          #   project_number:<project_number>,
+          #   api_key:<api_key>.
+      "operationId": "A String", # Identity of the operation. This must be unique within the scope of the
+          # service that generated the operation. If the service calls AllocateQuota
+          # and ReleaseQuota on the same operation, the two calls should carry the
+          # same ID.
+          #
+          # UUID version 4 is recommended, though not required. In scenarios where an
+          # operation is computed from existing information and an idempotent id is
+          # desirable for deduplication purpose, UUID version 5 is recommended. See
+          # RFC 4122 for details.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    {
+    "serviceConfigId": "A String", # ID of the actual config used to process the request.
+    "quotaMetrics": [ # Metric values as tracked by One Platform before the start of
+        # reconciliation.
+      { # Represents a set of metric values in the same metric.
+          # Each metric value in the set should have a unique combination of start time,
+          # end time, and label values.
+        "metricValues": [ # The values in this metric.
+          { # Represents a single metric value.
+            "moneyValue": { # Represents an amount of money with its currency type. # A money value.
+              "units": "A String", # The whole units of the amount.
+                  # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+              "nanos": 42, # Number of nano (10^-9) units of the amount.
+                  # The value must be between -999,999,999 and +999,999,999 inclusive.
+                  # If `units` is positive, `nanos` must be positive or zero.
+                  # If `units` is zero, `nanos` can be positive, zero, or negative.
+                  # If `units` is negative, `nanos` must be negative or zero.
+                  # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
+              "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
+            },
+            "labels": { # The labels describing the metric value.
+                # See comments on google.api.servicecontrol.v1.Operation.labels for
+                # the overriding relationship.
+              "a_key": "A String",
+            },
+            "doubleValue": 3.14, # A double precision floating point value.
+            "boolValue": True or False, # A boolean value.
+            "startTime": "A String", # The start of the time period over which this metric value's measurement
+                # applies. The time period has different semantics for different metric
+                # types (cumulative, delta, and gauge). See the metric definition
+                # documentation in the service configuration for details.
+            "distributionValue": { # Distribution represents a frequency distribution of double-valued sample # A distribution value.
+                # points. It contains the size of the population of sample points plus
+                # additional optional information:
+                #
+                #   - the arithmetic mean of the samples
+                #   - the minimum and maximum of the samples
+                #   - the sum-squared-deviation of the samples, used to compute variance
+                #   - a histogram of the values of the sample points
+              "count": "A String", # The total number of samples in the distribution. Must be >= 0.
+              "sumOfSquaredDeviation": 3.14, # The sum of squared deviations from the mean:
+                  #   Sum[i=1..count]((x_i - mean)^2)
+                  # where each x_i is a sample values. If `count` is zero then this field
+                  # must be zero, otherwise validation of the request fails.
+              "bucketCounts": [ # The number of samples in each histogram bucket. `bucket_counts` are
+                  # optional. If present, they must sum to the `count` value.
+                  #
+                  # The buckets are defined below in `bucket_option`. There are N buckets.
+                  # `bucket_counts[0]` is the number of samples in the underflow bucket.
+                  # `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
+                  # in each of the finite buckets. And `bucket_counts[N] is the number
+                  # of samples in the overflow bucket. See the comments of `bucket_option`
+                  # below for more details.
+                  #
+                  # Any suffix of trailing zeros may be omitted.
+                "A String",
+              ],
+              "exponentialBuckets": { # Describing buckets with exponentially growing width. # Buckets with exponentially growing width.
+                "scale": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be > 0.
+                "growthFactor": 3.14, # The i'th exponential bucket covers the interval
+                    #   [scale * growth_factor^(i-1), scale * growth_factor^i)
+                    # where i ranges from 1 to num_finite_buckets inclusive.
+                    # Must be larger than 1.0.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+              },
+              "maximum": 3.14, # The maximum of the population of values. Ignored if `count` is zero.
+              "minimum": 3.14, # The minimum of the population of values. Ignored if `count` is zero.
+              "linearBuckets": { # Describing buckets with constant width. # Buckets with constant width.
+                "width": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+                    # Must be strictly positive.
+                "numFiniteBuckets": 42, # The number of finite buckets. With the underflow and overflow buckets,
+                    # the total number of buckets is `num_finite_buckets` + 2.
+                    # See comments on `bucket_options` for details.
+                "offset": 3.14, # The i'th linear bucket covers the interval
+                    #   [offset + (i-1) * width, offset + i * width)
+                    # where i ranges from 1 to num_finite_buckets, inclusive.
+              },
+              "explicitBuckets": { # Describing buckets with arbitrary user-provided width. # Buckets with arbitrary user-provided width.
+                "bounds": [ # 'bound' is a list of strictly increasing boundaries between
+                    # buckets. Note that a list of length N-1 defines N buckets because
+                    # of fenceposting. See comments on `bucket_options` for details.
+                    #
+                    # The i'th finite bucket covers the interval
+                    #   [bound[i-1], bound[i])
+                    # where i ranges from 1 to bound_size() - 1. Note that there are no
+                    # finite buckets at all if 'bound' only contains a single element; in
+                    # that special case the single bound defines the boundary between the
+                    # underflow and overflow buckets.
+                    #
+                    # bucket number                   lower bound    upper bound
+                    #  i == 0 (underflow)              -inf           bound[i]
+                    #  0 < i < bound_size()            bound[i-1]     bound[i]
+                    #  i == bound_size() (overflow)    bound[i-1]     +inf
+                  3.14,
+                ],
+              },
+              "mean": 3.14, # The arithmetic mean of the samples in the distribution. If `count` is
+                  # zero then this field must be zero.
+            },
+            "stringValue": "A String", # A text string value.
+            "int64Value": "A String", # A signed 64-bit integer value.
+            "endTime": "A String", # The end of the time period over which this metric value's measurement
+                # applies.
+          },
+        ],
+        "metricName": "A String", # The metric name defined in the service configuration.
+      },
+    ],
+    "reconciliationErrors": [ # Indicates the decision of the reconciliation start.
+      {
+        "code": "A String", # Error code.
+        "description": "A String", # Free-form text that provides details on the cause of the error.
+        "subject": "A String", # Subject to whom this error applies. See the specific enum for more details
+            # on this field. For example, "clientip:<ip address of client>" or
+            # "project:<Google developer project id>".
+      },
+    ],
+    "operationId": "A String", # The same operation_id value used in the StartReconciliationRequest. Used
+        # for logging and diagnostics purposes.
+  }</pre>
+</div>
+
 </body></html>
\ No newline at end of file