xref: /aosp_15_r20/external/googleapis/google/iam/v2beta/policy.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.iam.v2beta;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/iam/v2beta/deny.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/longrunning/operations.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
25*d5c09012SAndroid Build Coastguard Worker
26*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Iam.V2Beta";
27*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/iam/apiv2beta/iampb;iampb";
28*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
29*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "PolicyProto";
30*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.iam.v2beta";
31*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Iam\\V2beta";
32*d5c09012SAndroid Build Coastguard Worker
33*d5c09012SAndroid Build Coastguard Worker// An interface for managing Identity and Access Management (IAM) policies.
34*d5c09012SAndroid Build Coastguard Workerservice Policies {
35*d5c09012SAndroid Build Coastguard Worker  option (google.api.default_host) = "iam.googleapis.com";
36*d5c09012SAndroid Build Coastguard Worker  option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
37*d5c09012SAndroid Build Coastguard Worker
38*d5c09012SAndroid Build Coastguard Worker  // Retrieves the policies of the specified kind that are attached to a
39*d5c09012SAndroid Build Coastguard Worker  // resource.
40*d5c09012SAndroid Build Coastguard Worker  //
41*d5c09012SAndroid Build Coastguard Worker  // The response lists only policy metadata. In particular, policy rules are
42*d5c09012SAndroid Build Coastguard Worker  // omitted.
43*d5c09012SAndroid Build Coastguard Worker  rpc ListPolicies(ListPoliciesRequest) returns (ListPoliciesResponse) {
44*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
45*d5c09012SAndroid Build Coastguard Worker      get: "/v2beta/{parent=policies/*/*}"
46*d5c09012SAndroid Build Coastguard Worker    };
47*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent";
48*d5c09012SAndroid Build Coastguard Worker  }
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard Worker  // Gets a policy.
51*d5c09012SAndroid Build Coastguard Worker  rpc GetPolicy(GetPolicyRequest) returns (Policy) {
52*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
53*d5c09012SAndroid Build Coastguard Worker      get: "/v2beta/{name=policies/*/*/*}"
54*d5c09012SAndroid Build Coastguard Worker    };
55*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
56*d5c09012SAndroid Build Coastguard Worker  }
57*d5c09012SAndroid Build Coastguard Worker
58*d5c09012SAndroid Build Coastguard Worker  // Creates a policy.
59*d5c09012SAndroid Build Coastguard Worker  rpc CreatePolicy(CreatePolicyRequest) returns (google.longrunning.Operation) {
60*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
61*d5c09012SAndroid Build Coastguard Worker      post: "/v2beta/{parent=policies/*/*}"
62*d5c09012SAndroid Build Coastguard Worker      body: "policy"
63*d5c09012SAndroid Build Coastguard Worker    };
64*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent,policy,policy_id";
65*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
66*d5c09012SAndroid Build Coastguard Worker      response_type: "Policy"
67*d5c09012SAndroid Build Coastguard Worker      metadata_type: "PolicyOperationMetadata"
68*d5c09012SAndroid Build Coastguard Worker    };
69*d5c09012SAndroid Build Coastguard Worker  }
70*d5c09012SAndroid Build Coastguard Worker
71*d5c09012SAndroid Build Coastguard Worker  // Updates the specified policy.
72*d5c09012SAndroid Build Coastguard Worker  //
73*d5c09012SAndroid Build Coastguard Worker  // You can update only the rules and the display name for the policy.
74*d5c09012SAndroid Build Coastguard Worker  //
75*d5c09012SAndroid Build Coastguard Worker  // To update a policy, you should use a read-modify-write loop:
76*d5c09012SAndroid Build Coastguard Worker  //
77*d5c09012SAndroid Build Coastguard Worker  // 1. Use [GetPolicy][google.iam.v2beta.Policies.GetPolicy] to read the current version of the policy.
78*d5c09012SAndroid Build Coastguard Worker  // 2. Modify the policy as needed.
79*d5c09012SAndroid Build Coastguard Worker  // 3. Use `UpdatePolicy` to write the updated policy.
80*d5c09012SAndroid Build Coastguard Worker  //
81*d5c09012SAndroid Build Coastguard Worker  // This pattern helps prevent conflicts between concurrent updates.
82*d5c09012SAndroid Build Coastguard Worker  rpc UpdatePolicy(UpdatePolicyRequest) returns (google.longrunning.Operation) {
83*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
84*d5c09012SAndroid Build Coastguard Worker      put: "/v2beta/{policy.name=policies/*/*/*}"
85*d5c09012SAndroid Build Coastguard Worker      body: "policy"
86*d5c09012SAndroid Build Coastguard Worker    };
87*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
88*d5c09012SAndroid Build Coastguard Worker      response_type: "Policy"
89*d5c09012SAndroid Build Coastguard Worker      metadata_type: "PolicyOperationMetadata"
90*d5c09012SAndroid Build Coastguard Worker    };
91*d5c09012SAndroid Build Coastguard Worker  }
92*d5c09012SAndroid Build Coastguard Worker
93*d5c09012SAndroid Build Coastguard Worker  // Deletes a policy. This action is permanent.
94*d5c09012SAndroid Build Coastguard Worker  rpc DeletePolicy(DeletePolicyRequest) returns (google.longrunning.Operation) {
95*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
96*d5c09012SAndroid Build Coastguard Worker      delete: "/v2beta/{name=policies/*/*/*}"
97*d5c09012SAndroid Build Coastguard Worker    };
98*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
99*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
100*d5c09012SAndroid Build Coastguard Worker      response_type: "Policy"
101*d5c09012SAndroid Build Coastguard Worker      metadata_type: "PolicyOperationMetadata"
102*d5c09012SAndroid Build Coastguard Worker    };
103*d5c09012SAndroid Build Coastguard Worker  }
104*d5c09012SAndroid Build Coastguard Worker}
105*d5c09012SAndroid Build Coastguard Worker
106*d5c09012SAndroid Build Coastguard Worker// Data for an IAM policy.
107*d5c09012SAndroid Build Coastguard Workermessage Policy {
108*d5c09012SAndroid Build Coastguard Worker  // Immutable. The resource name of the `Policy`, which must be unique. Format:
109*d5c09012SAndroid Build Coastguard Worker  // `policies/{attachment_point}/denypolicies/{policy_id}`
110*d5c09012SAndroid Build Coastguard Worker  //
111*d5c09012SAndroid Build Coastguard Worker  //
112*d5c09012SAndroid Build Coastguard Worker  // The attachment point is identified by its URL-encoded full resource name,
113*d5c09012SAndroid Build Coastguard Worker  // which means that the forward-slash character, `/`, must be written as
114*d5c09012SAndroid Build Coastguard Worker  // `%2F`. For example,
115*d5c09012SAndroid Build Coastguard Worker  // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-deny-policy`.
116*d5c09012SAndroid Build Coastguard Worker  //
117*d5c09012SAndroid Build Coastguard Worker  // For organizations and folders, use the numeric ID in the full resource
118*d5c09012SAndroid Build Coastguard Worker  // name. For projects, requests can use the alphanumeric or the numeric ID.
119*d5c09012SAndroid Build Coastguard Worker  // Responses always contain the numeric ID.
120*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = IMMUTABLE];
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker  // Immutable. The globally unique ID of the `Policy`. Assigned automatically when the
123*d5c09012SAndroid Build Coastguard Worker  // `Policy` is created.
124*d5c09012SAndroid Build Coastguard Worker  string uid = 2 [(google.api.field_behavior) = IMMUTABLE];
125*d5c09012SAndroid Build Coastguard Worker
126*d5c09012SAndroid Build Coastguard Worker  // Output only. The kind of the `Policy`. Always contains the value `DenyPolicy`.
127*d5c09012SAndroid Build Coastguard Worker  string kind = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
128*d5c09012SAndroid Build Coastguard Worker
129*d5c09012SAndroid Build Coastguard Worker  // A user-specified description of the `Policy`. This value can be up to 63
130*d5c09012SAndroid Build Coastguard Worker  // characters.
131*d5c09012SAndroid Build Coastguard Worker  string display_name = 4;
132*d5c09012SAndroid Build Coastguard Worker
133*d5c09012SAndroid Build Coastguard Worker  // A key-value map to store arbitrary metadata for the `Policy`. Keys
134*d5c09012SAndroid Build Coastguard Worker  // can be up to 63 characters. Values can be up to 255 characters.
135*d5c09012SAndroid Build Coastguard Worker  map<string, string> annotations = 5;
136*d5c09012SAndroid Build Coastguard Worker
137*d5c09012SAndroid Build Coastguard Worker  // An opaque tag that identifies the current version of the `Policy`. IAM uses
138*d5c09012SAndroid Build Coastguard Worker  // this value to help manage concurrent updates, so they do not cause one
139*d5c09012SAndroid Build Coastguard Worker  // update to be overwritten by another.
140*d5c09012SAndroid Build Coastguard Worker  //
141*d5c09012SAndroid Build Coastguard Worker  // If this field is present in a [CreatePolicy][] request, the value is
142*d5c09012SAndroid Build Coastguard Worker  // ignored.
143*d5c09012SAndroid Build Coastguard Worker  string etag = 6;
144*d5c09012SAndroid Build Coastguard Worker
145*d5c09012SAndroid Build Coastguard Worker  // Output only. The time when the `Policy` was created.
146*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
147*d5c09012SAndroid Build Coastguard Worker
148*d5c09012SAndroid Build Coastguard Worker  // Output only. The time when the `Policy` was last updated.
149*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
150*d5c09012SAndroid Build Coastguard Worker
151*d5c09012SAndroid Build Coastguard Worker  // Output only. The time when the `Policy` was deleted. Empty if the policy is not deleted.
152*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
153*d5c09012SAndroid Build Coastguard Worker
154*d5c09012SAndroid Build Coastguard Worker  // A list of rules that specify the behavior of the `Policy`. All of the rules
155*d5c09012SAndroid Build Coastguard Worker  // should be of the `kind` specified in the `Policy`.
156*d5c09012SAndroid Build Coastguard Worker  repeated PolicyRule rules = 10;
157*d5c09012SAndroid Build Coastguard Worker}
158*d5c09012SAndroid Build Coastguard Worker
159*d5c09012SAndroid Build Coastguard Worker// A single rule in a `Policy`.
160*d5c09012SAndroid Build Coastguard Workermessage PolicyRule {
161*d5c09012SAndroid Build Coastguard Worker  oneof kind {
162*d5c09012SAndroid Build Coastguard Worker    // A rule for a deny policy.
163*d5c09012SAndroid Build Coastguard Worker    DenyRule deny_rule = 2;
164*d5c09012SAndroid Build Coastguard Worker  }
165*d5c09012SAndroid Build Coastguard Worker
166*d5c09012SAndroid Build Coastguard Worker  // A user-specified description of the rule. This value can be up to 256
167*d5c09012SAndroid Build Coastguard Worker  // characters.
168*d5c09012SAndroid Build Coastguard Worker  string description = 1;
169*d5c09012SAndroid Build Coastguard Worker}
170*d5c09012SAndroid Build Coastguard Worker
171*d5c09012SAndroid Build Coastguard Worker// Request message for `ListPolicies`.
172*d5c09012SAndroid Build Coastguard Workermessage ListPoliciesRequest {
173*d5c09012SAndroid Build Coastguard Worker  // Required. The resource that the policy is attached to, along with the kind of policy
174*d5c09012SAndroid Build Coastguard Worker  // to list. Format:
175*d5c09012SAndroid Build Coastguard Worker  // `policies/{attachment_point}/denypolicies`
176*d5c09012SAndroid Build Coastguard Worker  //
177*d5c09012SAndroid Build Coastguard Worker  //
178*d5c09012SAndroid Build Coastguard Worker  // The attachment point is identified by its URL-encoded full resource name,
179*d5c09012SAndroid Build Coastguard Worker  // which means that the forward-slash character, `/`, must be written as
180*d5c09012SAndroid Build Coastguard Worker  // `%2F`. For example,
181*d5c09012SAndroid Build Coastguard Worker  // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`.
182*d5c09012SAndroid Build Coastguard Worker  //
183*d5c09012SAndroid Build Coastguard Worker  // For organizations and folders, use the numeric ID in the full resource
184*d5c09012SAndroid Build Coastguard Worker  // name. For projects, you can use the alphanumeric or the numeric ID.
185*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [(google.api.field_behavior) = REQUIRED];
186*d5c09012SAndroid Build Coastguard Worker
187*d5c09012SAndroid Build Coastguard Worker  // The maximum number of policies to return. IAM ignores this value and uses
188*d5c09012SAndroid Build Coastguard Worker  // the value 1000.
189*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 2;
190*d5c09012SAndroid Build Coastguard Worker
191*d5c09012SAndroid Build Coastguard Worker  // A page token received in a [ListPoliciesResponse][google.iam.v2beta.ListPoliciesResponse]. Provide this token to
192*d5c09012SAndroid Build Coastguard Worker  // retrieve the next page.
193*d5c09012SAndroid Build Coastguard Worker  string page_token = 3;
194*d5c09012SAndroid Build Coastguard Worker}
195*d5c09012SAndroid Build Coastguard Worker
196*d5c09012SAndroid Build Coastguard Worker// Response message for `ListPolicies`.
197*d5c09012SAndroid Build Coastguard Workermessage ListPoliciesResponse {
198*d5c09012SAndroid Build Coastguard Worker  // Metadata for the policies that are attached to the resource.
199*d5c09012SAndroid Build Coastguard Worker  repeated Policy policies = 1;
200*d5c09012SAndroid Build Coastguard Worker
201*d5c09012SAndroid Build Coastguard Worker  // A page token that you can use in a [ListPoliciesRequest][google.iam.v2beta.ListPoliciesRequest] to retrieve the
202*d5c09012SAndroid Build Coastguard Worker  // next page. If this field is omitted, there are no additional pages.
203*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
204*d5c09012SAndroid Build Coastguard Worker}
205*d5c09012SAndroid Build Coastguard Worker
206*d5c09012SAndroid Build Coastguard Worker// Request message for `GetPolicy`.
207*d5c09012SAndroid Build Coastguard Workermessage GetPolicyRequest {
208*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the policy to retrieve. Format:
209*d5c09012SAndroid Build Coastguard Worker  // `policies/{attachment_point}/denypolicies/{policy_id}`
210*d5c09012SAndroid Build Coastguard Worker  //
211*d5c09012SAndroid Build Coastguard Worker  //
212*d5c09012SAndroid Build Coastguard Worker  // Use the URL-encoded full resource name, which means that the forward-slash
213*d5c09012SAndroid Build Coastguard Worker  // character, `/`, must be written as `%2F`. For example,
214*d5c09012SAndroid Build Coastguard Worker  // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`.
215*d5c09012SAndroid Build Coastguard Worker  //
216*d5c09012SAndroid Build Coastguard Worker  // For organizations and folders, use the numeric ID in the full resource
217*d5c09012SAndroid Build Coastguard Worker  // name. For projects, you can use the alphanumeric or the numeric ID.
218*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = REQUIRED];
219*d5c09012SAndroid Build Coastguard Worker}
220*d5c09012SAndroid Build Coastguard Worker
221*d5c09012SAndroid Build Coastguard Worker// Request message for `CreatePolicy`.
222*d5c09012SAndroid Build Coastguard Workermessage CreatePolicyRequest {
223*d5c09012SAndroid Build Coastguard Worker  // Required. The resource that the policy is attached to, along with the kind of policy
224*d5c09012SAndroid Build Coastguard Worker  // to create. Format: `policies/{attachment_point}/denypolicies`
225*d5c09012SAndroid Build Coastguard Worker  //
226*d5c09012SAndroid Build Coastguard Worker  //
227*d5c09012SAndroid Build Coastguard Worker  // The attachment point is identified by its URL-encoded full resource name,
228*d5c09012SAndroid Build Coastguard Worker  // which means that the forward-slash character, `/`, must be written as
229*d5c09012SAndroid Build Coastguard Worker  // `%2F`. For example,
230*d5c09012SAndroid Build Coastguard Worker  // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`.
231*d5c09012SAndroid Build Coastguard Worker  //
232*d5c09012SAndroid Build Coastguard Worker  // For organizations and folders, use the numeric ID in the full resource
233*d5c09012SAndroid Build Coastguard Worker  // name. For projects, you can use the alphanumeric or the numeric ID.
234*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [(google.api.field_behavior) = REQUIRED];
235*d5c09012SAndroid Build Coastguard Worker
236*d5c09012SAndroid Build Coastguard Worker  // Required. The policy to create.
237*d5c09012SAndroid Build Coastguard Worker  Policy policy = 2 [(google.api.field_behavior) = REQUIRED];
238*d5c09012SAndroid Build Coastguard Worker
239*d5c09012SAndroid Build Coastguard Worker  // The ID to use for this policy, which will become the final component of
240*d5c09012SAndroid Build Coastguard Worker  // the policy's resource name. The ID must contain 3 to 63 characters. It can
241*d5c09012SAndroid Build Coastguard Worker  // contain lowercase letters and numbers, as well as dashes (`-`) and periods
242*d5c09012SAndroid Build Coastguard Worker  // (`.`). The first character must be a lowercase letter.
243*d5c09012SAndroid Build Coastguard Worker  string policy_id = 3;
244*d5c09012SAndroid Build Coastguard Worker}
245*d5c09012SAndroid Build Coastguard Worker
246*d5c09012SAndroid Build Coastguard Worker// Request message for `UpdatePolicy`.
247*d5c09012SAndroid Build Coastguard Workermessage UpdatePolicyRequest {
248*d5c09012SAndroid Build Coastguard Worker  // Required. The policy to update.
249*d5c09012SAndroid Build Coastguard Worker  //
250*d5c09012SAndroid Build Coastguard Worker  // To prevent conflicting updates, the `etag` value must match the value that
251*d5c09012SAndroid Build Coastguard Worker  // is stored in IAM. If the `etag` values do not match, the request fails with
252*d5c09012SAndroid Build Coastguard Worker  // a `409` error code and `ABORTED` status.
253*d5c09012SAndroid Build Coastguard Worker  Policy policy = 1 [(google.api.field_behavior) = REQUIRED];
254*d5c09012SAndroid Build Coastguard Worker}
255*d5c09012SAndroid Build Coastguard Worker
256*d5c09012SAndroid Build Coastguard Worker// Request message for `DeletePolicy`.
257*d5c09012SAndroid Build Coastguard Workermessage DeletePolicyRequest {
258*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the policy to delete. Format:
259*d5c09012SAndroid Build Coastguard Worker  // `policies/{attachment_point}/denypolicies/{policy_id}`
260*d5c09012SAndroid Build Coastguard Worker  //
261*d5c09012SAndroid Build Coastguard Worker  //
262*d5c09012SAndroid Build Coastguard Worker  // Use the URL-encoded full resource name, which means that the forward-slash
263*d5c09012SAndroid Build Coastguard Worker  // character, `/`, must be written as `%2F`. For example,
264*d5c09012SAndroid Build Coastguard Worker  // `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`.
265*d5c09012SAndroid Build Coastguard Worker  //
266*d5c09012SAndroid Build Coastguard Worker  // For organizations and folders, use the numeric ID in the full resource
267*d5c09012SAndroid Build Coastguard Worker  // name. For projects, you can use the alphanumeric or the numeric ID.
268*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = REQUIRED];
269*d5c09012SAndroid Build Coastguard Worker
270*d5c09012SAndroid Build Coastguard Worker  // Optional. The expected `etag` of the policy to delete. If the value does not match
271*d5c09012SAndroid Build Coastguard Worker  // the value that is stored in IAM, the request fails with a `409` error code
272*d5c09012SAndroid Build Coastguard Worker  // and `ABORTED` status.
273*d5c09012SAndroid Build Coastguard Worker  //
274*d5c09012SAndroid Build Coastguard Worker  // If you omit this field, the policy is deleted regardless of its current
275*d5c09012SAndroid Build Coastguard Worker  // `etag`.
276*d5c09012SAndroid Build Coastguard Worker  string etag = 2 [(google.api.field_behavior) = OPTIONAL];
277*d5c09012SAndroid Build Coastguard Worker}
278*d5c09012SAndroid Build Coastguard Worker
279*d5c09012SAndroid Build Coastguard Worker// Metadata for long-running `Policy` operations.
280*d5c09012SAndroid Build Coastguard Workermessage PolicyOperationMetadata {
281*d5c09012SAndroid Build Coastguard Worker  // Timestamp when the `google.longrunning.Operation` was created.
282*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 1;
283*d5c09012SAndroid Build Coastguard Worker}
284