--- /dev/null
+// 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/check_error.proto";
+import "google/api/servicecontrol/v1/operation.proto";
+import "google/rpc/status.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 = "ServiceControllerProto";
+option java_package = "com.google.api.servicecontrol.v1";
+option objc_class_prefix = "GASC";
+
+// [Google Service Control API](/service-control/overview)
+//
+// 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
+ // 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][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
+ // [Google Cloud IAM](https://cloud.google.com/iam).
+ rpc Check(CheckRequest) returns (CheckResponse) {
+ option (google.api.http) = {
+ post: "/v1/services/{service_name}:check"
+ body: "*"
+ };
+ }
+
+ // Reports operation results to Google Service Control, such as logs and
+ // metrics. It should be called after an operation is completed.
+ //
+ // If feasible, the client should aggregate reporting data for up to 5
+ // seconds to reduce API traffic. Limiting aggregation to 5 seconds is to
+ // reduce data loss during client crashes. Clients should carefully choose
+ // the aggregation time window to avoid data loss risk more than 0.01%
+ // for business and compliance reasons.
+ //
+ // 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
+ // [Google Cloud IAM](https://cloud.google.com/iam).
+ rpc Report(ReportRequest) returns (ReportResponse) {
+ option (google.api.http) = {
+ post: "/v1/services/{service_name}:report"
+ body: "*"
+ };
+ }
+}
+
+// Request message for the Check method.
+message CheckRequest {
+ // The service name as specified in its service configuration. For example,
+ // `"pubsub.googleapis.com"`.
+ //
+ // 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.
+ Operation 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;
+}
+
+// Response message for the Check method.
+message CheckResponse {
+ message CheckInfo {
+ // Consumer info of this check.
+ ConsumerInfo consumer_info = 2;
+ }
+
+ // `ConsumerInfo` provides information about the consumer project.
+ message ConsumerInfo {
+ // The Google cloud project number, e.g. 1234567890. A value of 0 indicates
+ // no project number is found.
+ int64 project_number = 1;
+ }
+
+ // The same operation_id value used in the
+ // [CheckRequest][google.api.servicecontrol.v1.CheckRequest]. Used for logging
+ // and diagnostics purposes.
+ string operation_id = 1;
+
+ // Indicate the decision of the check.
+ //
+ // If no check errors are present, the service should process the operation.
+ // Otherwise the service should use the list of errors to determine the
+ // appropriate action.
+ repeated CheckError check_errors = 2;
+
+ // The actual config id used to process the request.
+ string service_config_id = 5;
+
+ // Feedback data returned from the server during processing a Check request.
+ CheckInfo check_info = 6;
+}
+
+// Request message for the Report method.
+message ReportRequest {
+ // The service name as specified in its service configuration. For example,
+ // `"pubsub.googleapis.com"`.
+ //
+ // 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.
+ //
+ // Typically the service should report one operation per request.
+ // Putting multiple operations into a single request is allowed, but should
+ // be used only when multiple operations are natually available at the time
+ // of the report.
+ //
+ // If multiple operations are in a single request, the total request size
+ // should be no larger than 1MB. See
+ // [ReportResponse.report_errors][google.api.servicecontrol.v1.ReportResponse.report_errors]
+ // for partial failure behavior.
+ repeated Operation operations = 2;
+
+ // Specifies which version of service config 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 = 3;
+}
+
+// Response message for the Report method.
+message ReportResponse {
+ // 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][google.api.servicecontrol.v1.Operation].
+ google.rpc.Status status = 2;
+ }
+
+ // Partial failures, one for each `Operation` in the request that failed
+ // processing. There are three possible combinations of the RPC status:
+ //
+ // 1. The combination of a successful RPC status and an empty `report_errors`
+ // list indicates a complete success where all `Operations` in the
+ // request are processed successfully.
+ // 2. The combination of a successful RPC status and a non-empty
+ // `report_errors` list indicates a partial success where some
+ // `Operations` in the request succeeded. Each
+ // `Operation` that failed processing has a corresponding item
+ // in this list.
+ // 3. A failed RPC status indicates a general non-deterministic failure.
+ // When this happens, it's impossible to know which of the
+ // 'Operations' in the request succeeded or failed.
+ repeated ReportError report_errors = 1;
+
+ // The actual config id used to process the request.
+ string service_config_id = 2;
+}