xref: /aosp_15_r20/external/googleapis/google/api/servicecontrol/v2/service_controller.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2022 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.api.servicecontrol.v2;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/rpc/context/attribute_context.proto";
22import "google/rpc/status.proto";
23
24option cc_enable_arenas = true;
25option csharp_namespace = "Google.Cloud.ServiceControl.V2";
26option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v2;servicecontrol";
27option java_multiple_files = true;
28option java_outer_classname = "ServiceControllerProto";
29option java_package = "com.google.api.servicecontrol.v2";
30option objc_class_prefix = "GASC";
31option php_namespace = "Google\\Cloud\\ServiceControl\\V2";
32option ruby_package = "Google::Cloud::ServiceControl::V2";
33
34// [Service Control API
35// v2](https://cloud.google.com/service-infrastructure/docs/service-control/access-control)
36//
37// Private Preview. This feature is only available for approved services.
38//
39// This API provides admission control and telemetry reporting for services
40// that are integrated with [Service
41// Infrastructure](https://cloud.google.com/service-infrastructure).
42service ServiceController {
43  option (google.api.default_host) = "servicecontrol.googleapis.com";
44  option (google.api.oauth_scopes) =
45      "https://www.googleapis.com/auth/cloud-platform,"
46      "https://www.googleapis.com/auth/servicecontrol";
47
48  // Private Preview. This feature is only available for approved services.
49  //
50  // This method provides admission control for services that are integrated
51  // with [Service
52  // Infrastructure](https://cloud.google.com/service-infrastructure). It checks
53  // whether an operation should be allowed based on the service configuration
54  // and relevant policies. It must be called before the operation is executed.
55  // For more information, see
56  // [Admission
57  // Control](https://cloud.google.com/service-infrastructure/docs/admission-control).
58  //
59  // NOTE: The admission control has an expected policy propagation delay of
60  // 60s. The caller **must** not depend on the most recent policy changes.
61  //
62  // NOTE: The admission control has a hard limit of 1 referenced resources
63  // per call. If an operation refers to more than 1 resources, the caller
64  // must call the Check method multiple times.
65  //
66  // This method requires the `servicemanagement.services.check` permission
67  // on the specified service. For more information, see
68  // [Service Control API Access
69  // Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).
70  rpc Check(CheckRequest) returns (CheckResponse) {
71    option (google.api.http) = {
72      post: "/v2/services/{service_name}:check"
73      body: "*"
74    };
75  }
76
77  // Private Preview. This feature is only available for approved services.
78  //
79  // This method provides telemetry reporting for services that are integrated
80  // with [Service
81  // Infrastructure](https://cloud.google.com/service-infrastructure). It
82  // reports a list of operations that have occurred on a service. It must be
83  // called after the operations have been executed. For more information, see
84  // [Telemetry
85  // Reporting](https://cloud.google.com/service-infrastructure/docs/telemetry-reporting).
86  //
87  // NOTE: The telemetry reporting has a hard limit of 1000 operations and 1MB
88  // per Report call. It is recommended to have no more than 100 operations per
89  // call.
90  //
91  // This method requires the `servicemanagement.services.report` permission
92  // on the specified service. For more information, see
93  // [Service Control API Access
94  // Control](https://cloud.google.com/service-infrastructure/docs/service-control/access-control).
95  rpc Report(ReportRequest) returns (ReportResponse) {
96    option (google.api.http) = {
97      post: "/v2/services/{service_name}:report"
98      body: "*"
99    };
100  }
101}
102
103// Request message for the Check method.
104message CheckRequest {
105  // The service name as specified in its service configuration. For example,
106  // `"pubsub.googleapis.com"`.
107  //
108  // See
109  // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
110  // for the definition of a service name.
111  string service_name = 1;
112
113  // Specifies the version of the service configuration that should be used to
114  // process the request. Must not be empty. Set this field to 'latest' to
115  // specify using the latest configuration.
116  string service_config_id = 2;
117
118  // Describes attributes about the operation being executed by the service.
119  google.rpc.context.AttributeContext attributes = 3;
120
121  // Describes the resources and the policies applied to each resource.
122  repeated ResourceInfo resources = 4;
123
124  // Optional. Contains a comma-separated list of flags.
125  string flags = 5;
126}
127
128// Describes a resource referenced in the request.
129message ResourceInfo {
130  // The name of the resource referenced in the request.
131  string name = 1;
132
133  // The resource type in the format of "{service}/{kind}".
134  string type = 2;
135
136  // The resource permission needed for this request.
137  // The format must be "{service}/{plural}.{verb}".
138  string permission = 3;
139
140  // Optional. The identifier of the container of this resource. For Google
141  // Cloud APIs, the resource container must be one of the following formats:
142  //     - `projects/<project-id or project-number>`
143  //     - `folders/<folder-id>`
144  //     - `organizations/<organization-id>`
145  // For the policy enforcement on the container level (VPCSC and Location
146  // Policy check), this field takes precedence on the container extracted from
147  // name when presents.
148  string container = 4;
149
150  // Optional. The location of the resource. The value must be a valid zone,
151  // region or multiregion. For example: "europe-west4" or
152  // "northamerica-northeast1-a"
153  string location = 5;
154}
155
156// Response message for the Check method.
157message CheckResponse {
158  // Operation is allowed when this field is not set. Any non-'OK' status
159  // indicates a denial; [google.rpc.Status.details][google.rpc.Status.details]
160  // would contain additional details about the denial.
161  google.rpc.Status status = 1;
162
163  // Returns a set of request contexts generated from the `CheckRequest`.
164  map<string, string> headers = 2;
165}
166
167// Request message for the Report method.
168message ReportRequest {
169  // The service name as specified in its service configuration. For example,
170  // `"pubsub.googleapis.com"`.
171  //
172  // See
173  // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)
174  // for the definition of a service name.
175  string service_name = 1;
176
177  // Specifies the version of the service configuration that should be used to
178  // process the request. Must not be empty. Set this field to 'latest' to
179  // specify using the latest configuration.
180  string service_config_id = 2;
181
182  // Describes the list of operations to be reported. Each operation is
183  // represented as an AttributeContext, and contains all attributes around an
184  // API access.
185  repeated google.rpc.context.AttributeContext operations = 3;
186}
187
188// Response message for the Report method.
189// If the request contains any invalid data, the server returns an RPC error.
190message ReportResponse {}
191
192// Message containing resource details in a batch mode.
193message ResourceInfoList {
194  // The resource details.
195  repeated ResourceInfo resources = 1;
196}
197