Synchronize new proto changes.
diff --git a/google/api/servicecontrol/v1/check_error.proto b/google/api/servicecontrol/v1/check_error.proto
index 4fa31cf..7d0d7ad 100644
--- a/google/api/servicecontrol/v1/check_error.proto
+++ b/google/api/servicecontrol/v1/check_error.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2017 Google Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/google/api/servicecontrol/v1/distribution.proto b/google/api/servicecontrol/v1/distribution.proto
index 93ec2e4..757bbfc 100644
--- a/google/api/servicecontrol/v1/distribution.proto
+++ b/google/api/servicecontrol/v1/distribution.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2017 Google Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -126,7 +126,7 @@
   // Defines the buckets in the histogram. `bucket_option` and `bucket_counts`
   // must be both set, or both unset.
   //
-  // Buckets are numbered the the range of [0, N], with a total of N+1 buckets.
+  // Buckets are numbered in the range of [0, N], with a total of N+1 buckets.
   // There must be at least two buckets (a single-bucket histogram gives
   // no information that isn't already provided by `count`).
   //
diff --git a/google/api/servicecontrol/v1/log_entry.proto b/google/api/servicecontrol/v1/log_entry.proto
index fddb985..c06232f 100644
--- a/google/api/servicecontrol/v1/log_entry.proto
+++ b/google/api/servicecontrol/v1/log_entry.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2017 Google Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -53,8 +53,8 @@
   // The log entry payload, which can be one of multiple types.
   oneof payload {
     // 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.
+    // expressed as a JSON object. The only accepted type currently is
+    // [AuditLog][google.cloud.audit.AuditLog].
     google.protobuf.Any proto_payload = 2;
 
     // The log entry payload, represented as a Unicode string (UTF-8).
diff --git a/google/api/servicecontrol/v1/metric_value.proto b/google/api/servicecontrol/v1/metric_value.proto
index d5e5803..bfc40a8 100644
--- a/google/api/servicecontrol/v1/metric_value.proto
+++ b/google/api/servicecontrol/v1/metric_value.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2017 Google Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/google/api/servicecontrol/v1/operation.proto b/google/api/servicecontrol/v1/operation.proto
index 568108a..37aa81f 100644
--- a/google/api/servicecontrol/v1/operation.proto
+++ b/google/api/servicecontrol/v1/operation.proto
@@ -1,4 +1,4 @@
-// Copyright 2016 Google Inc.
+// Copyright 2017 Google Inc.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/google/api/servicecontrol/v1/quota_controller.proto b/google/api/servicecontrol/v1/quota_controller.proto
new file mode 100644
index 0000000..3d48620
--- /dev/null
+++ b/google/api/servicecontrol/v1/quota_controller.proto
@@ -0,0 +1,202 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.api.servicecontrol.v1;
+
+import "google/api/annotations.proto";
+import "google/api/servicecontrol/v1/metric_value.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol";
+option java_multiple_files = true;
+option java_outer_classname = "QuotaControllerProto";
+option java_package = "com.google.api.servicecontrol.v1";
+
+
+// [Google Quota Control API](/service-control/overview)
+//
+// Allows clients to allocate and release quota against a [managed
+// service](https://cloud.google.com/service-management/reference/rpc/google.api/servicemanagement.v1#google.api.servicemanagement.v1.ManagedService).
+service QuotaController {
+  // Attempts to allocate quota for the specified consumer. It should be called
+  // before the operation is executed.
+  //
+  // This method requires the `servicemanagement.services.quota`
+  // permission on the specified service. For more information, see
+  // [Cloud IAM](https://cloud.google.com/iam).
+  //
+  // **NOTE:** The client **must** fail-open on server errors `INTERNAL`,
+  // `UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system
+  // reliability, the server may inject these errors to prohibit any hard
+  // dependency on the quota functionality.
+  rpc AllocateQuota(AllocateQuotaRequest) returns (AllocateQuotaResponse) {
+    option (google.api.http) = { post: "/v1/services/{service_name}:allocateQuota" body: "*" };
+  }
+}
+
+// Request message for the AllocateQuota method.
+message AllocateQuotaRequest {
+  // Name of the service as specified in the service configuration. For example,
+  // `"pubsub.googleapis.com"`.
+  //
+  // See [google.api.Service][google.api.Service] for the definition of a service name.
+  string service_name = 1;
+
+  // Operation that describes the quota allocation.
+  QuotaOperation allocate_operation = 2;
+
+  // 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.
+  string service_config_id = 4;
+}
+
+// Represents information regarding a quota operation.
+message QuotaOperation {
+  // Supported quota modes.
+  enum QuotaMode {
+    // Guard against implicit default. Must not be used.
+    UNSPECIFIED = 0;
+
+    // For AllocateQuota request, allocates quota for the amount specified in
+    // the service configuration or specified using the quota metrics. If the
+    // amount is higher than the available quota, allocation error will be
+    // returned and no quota will be allocated.
+    NORMAL = 1;
+
+    // The operation allocates quota for the amount specified in the service
+    // configuration or specified using the quota metrics. If the amount is
+    // higher than the available quota, request does not fail but all available
+    // quota will be allocated.
+    BEST_EFFORT = 2;
+
+    // For AllocateQuota request, only checks if there is enough quota
+    // available and does not change the available quota. No lock is placed on
+    // the available quota either.
+    CHECK_ONLY = 3;
+  }
+
+  // Identity of the operation. This is expected to be unique within the scope
+  // of the service that generated the operation, and guarantees idempotency in
+  // case of retries.
+  //
+  // 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.
+  string operation_id = 1;
+
+  // 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
+  string method_name = 2;
+
+  // 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>.
+  string consumer_id = 3;
+
+  // Labels describing the operation.
+  map<string, string> labels = 4;
+
+  // 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.
+  repeated MetricValueSet quota_metrics = 5;
+
+  // Quota mode for this operation.
+  QuotaMode quota_mode = 6;
+}
+
+// Response message for the AllocateQuota method.
+message AllocateQuotaResponse {
+  // The same operation_id value used in the AllocateQuotaRequest. Used for
+  // logging and diagnostics purposes.
+  string operation_id = 1;
+
+  // Indicates the decision of the allocate.
+  repeated QuotaError allocate_errors = 2;
+
+  // Quota metrics to indicate the result of allocation. Depending on the
+  // request, one or more of the following metrics will be included:
+  //
+  // 1. 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. The quota limit reached condition will be specified using the following
+  // boolean metric :
+  //   "serviceruntime.googleapis.com/quota/exceeded"
+  repeated MetricValueSet quota_metrics = 3;
+
+  // ID of the actual config used to process the request.
+  string service_config_id = 4;
+}
+
+// Represents error information for [QuotaOperation][google.api.servicecontrol.v1.QuotaOperation].
+message QuotaError {
+  // Error codes related to project config validations are deprecated since the
+  // quota controller methods do not perform these validations. Instead services
+  // have to call the Check method, without quota_properties field, to perform
+  // these validations before calling the quota controller methods. These
+  // methods check only for project deletion to be wipe out compliant.
+  enum Code {
+    // This is never used.
+    UNSPECIFIED = 0;
+
+    // Quota allocation failed.
+    // Same as [google.rpc.Code.RESOURCE_EXHAUSTED][].
+    RESOURCE_EXHAUSTED = 8;
+
+    // Consumer cannot access the service because the service requires active
+    // billing.
+    BILLING_NOT_ACTIVE = 107;
+
+    // Consumer's project has been marked as deleted (soft deletion).
+    PROJECT_DELETED = 108;
+
+    // Specified API key is invalid.
+    API_KEY_INVALID = 105;
+
+    // Specified API Key has expired.
+    API_KEY_EXPIRED = 112;
+  }
+
+  // Error code.
+  Code code = 1;
+
+  // 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>".
+  string subject = 2;
+
+  // Free-form text that provides details on the cause of the error.
+  string description = 3;
+}
diff --git a/google/api/servicecontrol/v1/service_controller.proto b/google/api/servicecontrol/v1/service_controller.proto
index 17a8638..38171ba 100644
--- a/google/api/servicecontrol/v1/service_controller.proto
+++ b/google/api/servicecontrol/v1/service_controller.proto
@@ -31,8 +31,8 @@
 
 // [Google Service Control API](/service-control/overview)
 //
-// Lets clients check and report operations against
-// a [managed service][google.api.servicemanagement.v1.ManagedService].
+// Lets clients check and report operations against a [managed
+// service](https://cloud.google.com/service-management/reference/rpc/google.api/servicemanagement.v1#google.api.servicemanagement.v1.ManagedService).
 service ServiceController {
   // Checks an operation with Google Service Control to decide whether
   // the given operation should proceed. It should be called before the
@@ -42,7 +42,7 @@
   // 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.
+  // NOTE: the [CheckRequest][google.api.servicecontrol.v1.CheckRequest] has the size limit of 64KB.
   //
   // This method requires the `servicemanagement.services.check` permission
   // on the specified service. For more information, see
@@ -60,7 +60,7 @@
   // the aggregation time window to avoid data loss risk more than 0.01%
   // for business and compliance reasons.
   //
-  // NOTE: the `ReportRequest` has the size limit of 1MB.
+  // NOTE: the [ReportRequest][google.api.servicecontrol.v1.ReportRequest] has the size limit of 1MB.
   //
   // This method requires the `servicemanagement.services.report` permission
   // on the specified service. For more information, see
@@ -75,7 +75,9 @@
   // The service name as specified in its service configuration. For example,
   // `"pubsub.googleapis.com"`.
   //
-  // See [google.api.Service][google.api.Service] for the definition of a service name.
+  // See
+  // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
+  // for the definition of a service name.
   string service_name = 1;
 
   // The operation to be checked.
@@ -103,7 +105,7 @@
     int64 project_number = 1;
   }
 
-  // The same operation_id value used in the CheckRequest.
+  // The same operation_id value used in the [CheckRequest][google.api.servicecontrol.v1.CheckRequest].
   // Used for logging and diagnostics purposes.
   string operation_id = 1;
 
@@ -126,7 +128,9 @@
   // The service name as specified in its service configuration. For example,
   // `"pubsub.googleapis.com"`.
   //
-  // See [google.api.Service][google.api.Service] for the definition of a service name.
+  // See
+  // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
+  // for the definition of a service name.
   string service_name = 1;
 
   // Operations to be reported.
@@ -151,12 +155,12 @@
 
 // Response message for the Report method.
 message ReportResponse {
-  // Represents the processing error of one `Operation` in the request.
+  // Represents the processing error of one [Operation][google.api.servicecontrol.v1.Operation] in the request.
   message ReportError {
     // The [Operation.operation_id][google.api.servicecontrol.v1.Operation.operation_id] value from the request.
     string operation_id = 1;
 
-    // Details of the error when processing the `Operation`.
+    // Details of the error when processing the [Operation][google.api.servicecontrol.v1.Operation].
     google.rpc.Status status = 2;
   }