xref: /aosp_15_r20/external/googleapis/google/cloud/resourcemanager/v3/folders.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 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.cloud.resourcemanager.v3;
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/api/resource.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/iam/v1/iam_policy.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/iam/v1/policy.proto";
25*d5c09012SAndroid Build Coastguard Workerimport "google/longrunning/operations.proto";
26*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/field_mask.proto";
27*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
28*d5c09012SAndroid Build Coastguard Worker
29*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.ResourceManager.V3";
30*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/resourcemanager/apiv3/resourcemanagerpb;resourcemanagerpb";
31*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
32*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "FoldersProto";
33*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.resourcemanager.v3";
34*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\ResourceManager\\V3";
35*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::ResourceManager::V3";
36*d5c09012SAndroid Build Coastguard Worker
37*d5c09012SAndroid Build Coastguard Worker// Manages Cloud Platform folder resources.
38*d5c09012SAndroid Build Coastguard Worker// Folders can be used to organize the resources under an
39*d5c09012SAndroid Build Coastguard Worker// organization and to control the policies applied to groups of resources.
40*d5c09012SAndroid Build Coastguard Workerservice Folders {
41*d5c09012SAndroid Build Coastguard Worker  option (google.api.default_host) = "cloudresourcemanager.googleapis.com";
42*d5c09012SAndroid Build Coastguard Worker  option (google.api.oauth_scopes) =
43*d5c09012SAndroid Build Coastguard Worker      "https://www.googleapis.com/auth/cloud-platform,"
44*d5c09012SAndroid Build Coastguard Worker      "https://www.googleapis.com/auth/cloud-platform.read-only";
45*d5c09012SAndroid Build Coastguard Worker
46*d5c09012SAndroid Build Coastguard Worker  // Retrieves a folder identified by the supplied resource name.
47*d5c09012SAndroid Build Coastguard Worker  // Valid folder resource names have the format `folders/{folder_id}`
48*d5c09012SAndroid Build Coastguard Worker  // (for example, `folders/1234`).
49*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.get` permission on the
50*d5c09012SAndroid Build Coastguard Worker  // identified folder.
51*d5c09012SAndroid Build Coastguard Worker  rpc GetFolder(GetFolderRequest) returns (Folder) {
52*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
53*d5c09012SAndroid Build Coastguard Worker      get: "/v3/{name=folders/*}"
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  // Lists the folders that are direct descendants of supplied parent resource.
59*d5c09012SAndroid Build Coastguard Worker  // `list()` provides a strongly consistent view of the folders underneath
60*d5c09012SAndroid Build Coastguard Worker  // the specified parent resource.
61*d5c09012SAndroid Build Coastguard Worker  // `list()` returns folders sorted based upon the (ascending) lexical ordering
62*d5c09012SAndroid Build Coastguard Worker  // of their display_name.
63*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.list` permission on the
64*d5c09012SAndroid Build Coastguard Worker  // identified parent.
65*d5c09012SAndroid Build Coastguard Worker  rpc ListFolders(ListFoldersRequest) returns (ListFoldersResponse) {
66*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
67*d5c09012SAndroid Build Coastguard Worker      get: "/v3/folders"
68*d5c09012SAndroid Build Coastguard Worker    };
69*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent";
70*d5c09012SAndroid Build Coastguard Worker  }
71*d5c09012SAndroid Build Coastguard Worker
72*d5c09012SAndroid Build Coastguard Worker  // Search for folders that match specific filter criteria.
73*d5c09012SAndroid Build Coastguard Worker  // `search()` provides an eventually consistent view of the folders a user has
74*d5c09012SAndroid Build Coastguard Worker  // access to which meet the specified filter criteria.
75*d5c09012SAndroid Build Coastguard Worker  //
76*d5c09012SAndroid Build Coastguard Worker  // This will only return folders on which the caller has the
77*d5c09012SAndroid Build Coastguard Worker  // permission `resourcemanager.folders.get`.
78*d5c09012SAndroid Build Coastguard Worker  rpc SearchFolders(SearchFoldersRequest) returns (SearchFoldersResponse) {
79*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
80*d5c09012SAndroid Build Coastguard Worker      get: "/v3/folders:search"
81*d5c09012SAndroid Build Coastguard Worker    };
82*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "query";
83*d5c09012SAndroid Build Coastguard Worker  }
84*d5c09012SAndroid Build Coastguard Worker
85*d5c09012SAndroid Build Coastguard Worker  // Creates a folder in the resource hierarchy.
86*d5c09012SAndroid Build Coastguard Worker  // Returns an `Operation` which can be used to track the progress of the
87*d5c09012SAndroid Build Coastguard Worker  // folder creation workflow.
88*d5c09012SAndroid Build Coastguard Worker  // Upon success, the `Operation.response` field will be populated with the
89*d5c09012SAndroid Build Coastguard Worker  // created Folder.
90*d5c09012SAndroid Build Coastguard Worker  //
91*d5c09012SAndroid Build Coastguard Worker  // In order to succeed, the addition of this new folder must not violate
92*d5c09012SAndroid Build Coastguard Worker  // the folder naming, height, or fanout constraints.
93*d5c09012SAndroid Build Coastguard Worker  //
94*d5c09012SAndroid Build Coastguard Worker  // + The folder's `display_name` must be distinct from all other folders that
95*d5c09012SAndroid Build Coastguard Worker  // share its parent.
96*d5c09012SAndroid Build Coastguard Worker  // + The addition of the folder must not cause the active folder hierarchy
97*d5c09012SAndroid Build Coastguard Worker  // to exceed a height of 10. Note, the full active + deleted folder hierarchy
98*d5c09012SAndroid Build Coastguard Worker  // is allowed to reach a height of 20; this provides additional headroom when
99*d5c09012SAndroid Build Coastguard Worker  // moving folders that contain deleted folders.
100*d5c09012SAndroid Build Coastguard Worker  // + The addition of the folder must not cause the total number of folders
101*d5c09012SAndroid Build Coastguard Worker  // under its parent to exceed 300.
102*d5c09012SAndroid Build Coastguard Worker  //
103*d5c09012SAndroid Build Coastguard Worker  // If the operation fails due to a folder constraint violation, some errors
104*d5c09012SAndroid Build Coastguard Worker  // may be returned by the `CreateFolder` request, with status code
105*d5c09012SAndroid Build Coastguard Worker  // `FAILED_PRECONDITION` and an error description. Other folder constraint
106*d5c09012SAndroid Build Coastguard Worker  // violations will be communicated in the `Operation`, with the specific
107*d5c09012SAndroid Build Coastguard Worker  // `PreconditionFailure` returned in the details list in the `Operation.error`
108*d5c09012SAndroid Build Coastguard Worker  // field.
109*d5c09012SAndroid Build Coastguard Worker  //
110*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.create` permission on the
111*d5c09012SAndroid Build Coastguard Worker  // identified parent.
112*d5c09012SAndroid Build Coastguard Worker  rpc CreateFolder(CreateFolderRequest) returns (google.longrunning.Operation) {
113*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
114*d5c09012SAndroid Build Coastguard Worker      post: "/v3/folders"
115*d5c09012SAndroid Build Coastguard Worker      body: "folder"
116*d5c09012SAndroid Build Coastguard Worker    };
117*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "folder";
118*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
119*d5c09012SAndroid Build Coastguard Worker      response_type: "Folder"
120*d5c09012SAndroid Build Coastguard Worker      metadata_type: "CreateFolderMetadata"
121*d5c09012SAndroid Build Coastguard Worker    };
122*d5c09012SAndroid Build Coastguard Worker  }
123*d5c09012SAndroid Build Coastguard Worker
124*d5c09012SAndroid Build Coastguard Worker  // Updates a folder, changing its `display_name`.
125*d5c09012SAndroid Build Coastguard Worker  // Changes to the folder `display_name` will be rejected if they violate
126*d5c09012SAndroid Build Coastguard Worker  // either the `display_name` formatting rules or the naming constraints
127*d5c09012SAndroid Build Coastguard Worker  // described in the
128*d5c09012SAndroid Build Coastguard Worker  // [CreateFolder][google.cloud.resourcemanager.v3.Folders.CreateFolder]
129*d5c09012SAndroid Build Coastguard Worker  // documentation.
130*d5c09012SAndroid Build Coastguard Worker  //
131*d5c09012SAndroid Build Coastguard Worker  // The folder's `display_name` must start and end with a letter or digit,
132*d5c09012SAndroid Build Coastguard Worker  // may contain letters, digits, spaces, hyphens and underscores and can be
133*d5c09012SAndroid Build Coastguard Worker  // between 3 and 30 characters. This is captured by the regular expression:
134*d5c09012SAndroid Build Coastguard Worker  // `[\p{L}\p{N}][\p{L}\p{N}_- ]{1,28}[\p{L}\p{N}]`.
135*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.update` permission on the
136*d5c09012SAndroid Build Coastguard Worker  // identified folder.
137*d5c09012SAndroid Build Coastguard Worker  //
138*d5c09012SAndroid Build Coastguard Worker  // If the update fails due to the unique name constraint then a
139*d5c09012SAndroid Build Coastguard Worker  // `PreconditionFailure` explaining this violation will be returned
140*d5c09012SAndroid Build Coastguard Worker  // in the Status.details field.
141*d5c09012SAndroid Build Coastguard Worker  rpc UpdateFolder(UpdateFolderRequest) returns (google.longrunning.Operation) {
142*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
143*d5c09012SAndroid Build Coastguard Worker      patch: "/v3/{folder.name=folders/*}"
144*d5c09012SAndroid Build Coastguard Worker      body: "folder"
145*d5c09012SAndroid Build Coastguard Worker    };
146*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "folder,update_mask";
147*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
148*d5c09012SAndroid Build Coastguard Worker      response_type: "Folder"
149*d5c09012SAndroid Build Coastguard Worker      metadata_type: "UpdateFolderMetadata"
150*d5c09012SAndroid Build Coastguard Worker    };
151*d5c09012SAndroid Build Coastguard Worker  }
152*d5c09012SAndroid Build Coastguard Worker
153*d5c09012SAndroid Build Coastguard Worker  // Moves a folder under a new resource parent.
154*d5c09012SAndroid Build Coastguard Worker  // Returns an `Operation` which can be used to track the progress of the
155*d5c09012SAndroid Build Coastguard Worker  // folder move workflow.
156*d5c09012SAndroid Build Coastguard Worker  // Upon success, the `Operation.response` field will be populated with the
157*d5c09012SAndroid Build Coastguard Worker  // moved folder.
158*d5c09012SAndroid Build Coastguard Worker  // Upon failure, a `FolderOperationError` categorizing the failure cause will
159*d5c09012SAndroid Build Coastguard Worker  // be returned - if the failure occurs synchronously then the
160*d5c09012SAndroid Build Coastguard Worker  // `FolderOperationError` will be returned in the `Status.details` field.
161*d5c09012SAndroid Build Coastguard Worker  // If it occurs asynchronously, then the FolderOperation will be returned
162*d5c09012SAndroid Build Coastguard Worker  // in the `Operation.error` field.
163*d5c09012SAndroid Build Coastguard Worker  // In addition, the `Operation.metadata` field will be populated with a
164*d5c09012SAndroid Build Coastguard Worker  // `FolderOperation` message as an aid to stateless clients.
165*d5c09012SAndroid Build Coastguard Worker  // Folder moves will be rejected if they violate either the naming, height,
166*d5c09012SAndroid Build Coastguard Worker  // or fanout constraints described in the
167*d5c09012SAndroid Build Coastguard Worker  // [CreateFolder][google.cloud.resourcemanager.v3.Folders.CreateFolder]
168*d5c09012SAndroid Build Coastguard Worker  // documentation. The caller must have `resourcemanager.folders.move`
169*d5c09012SAndroid Build Coastguard Worker  // permission on the folder's current and proposed new parent.
170*d5c09012SAndroid Build Coastguard Worker  rpc MoveFolder(MoveFolderRequest) returns (google.longrunning.Operation) {
171*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
172*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{name=folders/*}:move"
173*d5c09012SAndroid Build Coastguard Worker      body: "*"
174*d5c09012SAndroid Build Coastguard Worker    };
175*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name,destination_parent";
176*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
177*d5c09012SAndroid Build Coastguard Worker      response_type: "Folder"
178*d5c09012SAndroid Build Coastguard Worker      metadata_type: "MoveFolderMetadata"
179*d5c09012SAndroid Build Coastguard Worker    };
180*d5c09012SAndroid Build Coastguard Worker  }
181*d5c09012SAndroid Build Coastguard Worker
182*d5c09012SAndroid Build Coastguard Worker  // Requests deletion of a folder. The folder is moved into the
183*d5c09012SAndroid Build Coastguard Worker  // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Folder.State.DELETE_REQUESTED]
184*d5c09012SAndroid Build Coastguard Worker  // state immediately, and is deleted approximately 30 days later. This method
185*d5c09012SAndroid Build Coastguard Worker  // may only be called on an empty folder, where a folder is empty if it
186*d5c09012SAndroid Build Coastguard Worker  // doesn't contain any folders or projects in the
187*d5c09012SAndroid Build Coastguard Worker  // [ACTIVE][google.cloud.resourcemanager.v3.Folder.State.ACTIVE] state. If
188*d5c09012SAndroid Build Coastguard Worker  // called on a folder in
189*d5c09012SAndroid Build Coastguard Worker  // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Folder.State.DELETE_REQUESTED]
190*d5c09012SAndroid Build Coastguard Worker  // state the operation will result in a no-op success.
191*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.delete` permission on the
192*d5c09012SAndroid Build Coastguard Worker  // identified folder.
193*d5c09012SAndroid Build Coastguard Worker  rpc DeleteFolder(DeleteFolderRequest) returns (google.longrunning.Operation) {
194*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
195*d5c09012SAndroid Build Coastguard Worker      delete: "/v3/{name=folders/*}"
196*d5c09012SAndroid Build Coastguard Worker    };
197*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
198*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
199*d5c09012SAndroid Build Coastguard Worker      response_type: "Folder"
200*d5c09012SAndroid Build Coastguard Worker      metadata_type: "DeleteFolderMetadata"
201*d5c09012SAndroid Build Coastguard Worker    };
202*d5c09012SAndroid Build Coastguard Worker  }
203*d5c09012SAndroid Build Coastguard Worker
204*d5c09012SAndroid Build Coastguard Worker  // Cancels the deletion request for a folder. This method may be called on a
205*d5c09012SAndroid Build Coastguard Worker  // folder in any state. If the folder is in the
206*d5c09012SAndroid Build Coastguard Worker  // [ACTIVE][google.cloud.resourcemanager.v3.Folder.State.ACTIVE] state the
207*d5c09012SAndroid Build Coastguard Worker  // result will be a no-op success. In order to succeed, the folder's parent
208*d5c09012SAndroid Build Coastguard Worker  // must be in the
209*d5c09012SAndroid Build Coastguard Worker  // [ACTIVE][google.cloud.resourcemanager.v3.Folder.State.ACTIVE] state. In
210*d5c09012SAndroid Build Coastguard Worker  // addition, reintroducing the folder into the tree must not violate folder
211*d5c09012SAndroid Build Coastguard Worker  // naming, height, and fanout constraints described in the
212*d5c09012SAndroid Build Coastguard Worker  // [CreateFolder][google.cloud.resourcemanager.v3.Folders.CreateFolder]
213*d5c09012SAndroid Build Coastguard Worker  // documentation. The caller must have `resourcemanager.folders.undelete`
214*d5c09012SAndroid Build Coastguard Worker  // permission on the identified folder.
215*d5c09012SAndroid Build Coastguard Worker  rpc UndeleteFolder(UndeleteFolderRequest)
216*d5c09012SAndroid Build Coastguard Worker      returns (google.longrunning.Operation) {
217*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
218*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{name=folders/*}:undelete"
219*d5c09012SAndroid Build Coastguard Worker      body: "*"
220*d5c09012SAndroid Build Coastguard Worker    };
221*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
222*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
223*d5c09012SAndroid Build Coastguard Worker      response_type: "Folder"
224*d5c09012SAndroid Build Coastguard Worker      metadata_type: "UndeleteFolderMetadata"
225*d5c09012SAndroid Build Coastguard Worker    };
226*d5c09012SAndroid Build Coastguard Worker  }
227*d5c09012SAndroid Build Coastguard Worker
228*d5c09012SAndroid Build Coastguard Worker  // Gets the access control policy for a folder. The returned policy may be
229*d5c09012SAndroid Build Coastguard Worker  // empty if no such policy or resource exists. The `resource` field should
230*d5c09012SAndroid Build Coastguard Worker  // be the folder's resource name, for example: "folders/1234".
231*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.getIamPolicy` permission
232*d5c09012SAndroid Build Coastguard Worker  // on the identified folder.
233*d5c09012SAndroid Build Coastguard Worker  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
234*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.Policy) {
235*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
236*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=folders/*}:getIamPolicy"
237*d5c09012SAndroid Build Coastguard Worker      body: "*"
238*d5c09012SAndroid Build Coastguard Worker    };
239*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource";
240*d5c09012SAndroid Build Coastguard Worker  }
241*d5c09012SAndroid Build Coastguard Worker
242*d5c09012SAndroid Build Coastguard Worker  // Sets the access control policy on a folder, replacing any existing policy.
243*d5c09012SAndroid Build Coastguard Worker  // The `resource` field should be the folder's resource name, for example:
244*d5c09012SAndroid Build Coastguard Worker  // "folders/1234".
245*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.folders.setIamPolicy` permission
246*d5c09012SAndroid Build Coastguard Worker  // on the identified folder.
247*d5c09012SAndroid Build Coastguard Worker  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
248*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.Policy) {
249*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
250*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=folders/*}:setIamPolicy"
251*d5c09012SAndroid Build Coastguard Worker      body: "*"
252*d5c09012SAndroid Build Coastguard Worker    };
253*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource,policy";
254*d5c09012SAndroid Build Coastguard Worker  }
255*d5c09012SAndroid Build Coastguard Worker
256*d5c09012SAndroid Build Coastguard Worker  // Returns permissions that a caller has on the specified folder.
257*d5c09012SAndroid Build Coastguard Worker  // The `resource` field should be the folder's resource name,
258*d5c09012SAndroid Build Coastguard Worker  // for example: "folders/1234".
259*d5c09012SAndroid Build Coastguard Worker  //
260*d5c09012SAndroid Build Coastguard Worker  // There are no permissions required for making this API call.
261*d5c09012SAndroid Build Coastguard Worker  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
262*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.TestIamPermissionsResponse) {
263*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
264*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=folders/*}:testIamPermissions"
265*d5c09012SAndroid Build Coastguard Worker      body: "*"
266*d5c09012SAndroid Build Coastguard Worker    };
267*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource,permissions";
268*d5c09012SAndroid Build Coastguard Worker  }
269*d5c09012SAndroid Build Coastguard Worker}
270*d5c09012SAndroid Build Coastguard Worker
271*d5c09012SAndroid Build Coastguard Worker// A folder in an organization's resource hierarchy, used to
272*d5c09012SAndroid Build Coastguard Worker// organize that organization's resources.
273*d5c09012SAndroid Build Coastguard Workermessage Folder {
274*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
275*d5c09012SAndroid Build Coastguard Worker    type: "cloudresourcemanager.googleapis.com/Folder"
276*d5c09012SAndroid Build Coastguard Worker    pattern: "folders/{folder}"
277*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
278*d5c09012SAndroid Build Coastguard Worker  };
279*d5c09012SAndroid Build Coastguard Worker
280*d5c09012SAndroid Build Coastguard Worker  // Folder lifecycle states.
281*d5c09012SAndroid Build Coastguard Worker  enum State {
282*d5c09012SAndroid Build Coastguard Worker    // Unspecified state.
283*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
284*d5c09012SAndroid Build Coastguard Worker
285*d5c09012SAndroid Build Coastguard Worker    // The normal and active state.
286*d5c09012SAndroid Build Coastguard Worker    ACTIVE = 1;
287*d5c09012SAndroid Build Coastguard Worker
288*d5c09012SAndroid Build Coastguard Worker    // The folder has been marked for deletion by the user.
289*d5c09012SAndroid Build Coastguard Worker    DELETE_REQUESTED = 2;
290*d5c09012SAndroid Build Coastguard Worker  }
291*d5c09012SAndroid Build Coastguard Worker
292*d5c09012SAndroid Build Coastguard Worker  // Output only. The resource name of the folder.
293*d5c09012SAndroid Build Coastguard Worker  // Its format is `folders/{folder_id}`, for example: "folders/1234".
294*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker  // Required. The folder's parent's resource name.
297*d5c09012SAndroid Build Coastguard Worker  // Updates to the folder's parent must be performed using
298*d5c09012SAndroid Build Coastguard Worker  // [MoveFolder][google.cloud.resourcemanager.v3.Folders.MoveFolder].
299*d5c09012SAndroid Build Coastguard Worker  string parent = 2 [(google.api.field_behavior) = REQUIRED];
300*d5c09012SAndroid Build Coastguard Worker
301*d5c09012SAndroid Build Coastguard Worker  // The folder's display name.
302*d5c09012SAndroid Build Coastguard Worker  // A folder's display name must be unique amongst its siblings. For example,
303*d5c09012SAndroid Build Coastguard Worker  // no two folders with the same parent can share the same display name.
304*d5c09012SAndroid Build Coastguard Worker  // The display name must start and end with a letter or digit, may contain
305*d5c09012SAndroid Build Coastguard Worker  // letters, digits, spaces, hyphens and underscores and can be no longer
306*d5c09012SAndroid Build Coastguard Worker  // than 30 characters. This is captured by the regular expression:
307*d5c09012SAndroid Build Coastguard Worker  // `[\p{L}\p{N}]([\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?`.
308*d5c09012SAndroid Build Coastguard Worker  string display_name = 3;
309*d5c09012SAndroid Build Coastguard Worker
310*d5c09012SAndroid Build Coastguard Worker  // Output only. The lifecycle state of the folder.
311*d5c09012SAndroid Build Coastguard Worker  // Updates to the state must be performed using
312*d5c09012SAndroid Build Coastguard Worker  // [DeleteFolder][google.cloud.resourcemanager.v3.Folders.DeleteFolder] and
313*d5c09012SAndroid Build Coastguard Worker  // [UndeleteFolder][google.cloud.resourcemanager.v3.Folders.UndeleteFolder].
314*d5c09012SAndroid Build Coastguard Worker  State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
315*d5c09012SAndroid Build Coastguard Worker
316*d5c09012SAndroid Build Coastguard Worker  // Output only. Timestamp when the folder was created.
317*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 5
318*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
319*d5c09012SAndroid Build Coastguard Worker
320*d5c09012SAndroid Build Coastguard Worker  // Output only. Timestamp when the folder was last modified.
321*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 6
322*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
323*d5c09012SAndroid Build Coastguard Worker
324*d5c09012SAndroid Build Coastguard Worker  // Output only. Timestamp when the folder was requested to be deleted.
325*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 7
326*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
327*d5c09012SAndroid Build Coastguard Worker
328*d5c09012SAndroid Build Coastguard Worker  // Output only. A checksum computed by the server based on the current value
329*d5c09012SAndroid Build Coastguard Worker  // of the folder resource. This may be sent on update and delete requests to
330*d5c09012SAndroid Build Coastguard Worker  // ensure the client has an up-to-date value before proceeding.
331*d5c09012SAndroid Build Coastguard Worker  string etag = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
332*d5c09012SAndroid Build Coastguard Worker}
333*d5c09012SAndroid Build Coastguard Worker
334*d5c09012SAndroid Build Coastguard Worker// The GetFolder request message.
335*d5c09012SAndroid Build Coastguard Workermessage GetFolderRequest {
336*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the folder to retrieve.
337*d5c09012SAndroid Build Coastguard Worker  // Must be of the form `folders/{folder_id}`.
338*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
339*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
340*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
341*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Folder"
342*d5c09012SAndroid Build Coastguard Worker    }
343*d5c09012SAndroid Build Coastguard Worker  ];
344*d5c09012SAndroid Build Coastguard Worker}
345*d5c09012SAndroid Build Coastguard Worker
346*d5c09012SAndroid Build Coastguard Worker// The ListFolders request message.
347*d5c09012SAndroid Build Coastguard Workermessage ListFoldersRequest {
348*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the parent resource whose folders are being listed.
349*d5c09012SAndroid Build Coastguard Worker  // Only children of this parent resource are listed; descendants are not
350*d5c09012SAndroid Build Coastguard Worker  // listed.
351*d5c09012SAndroid Build Coastguard Worker  //
352*d5c09012SAndroid Build Coastguard Worker  // If the parent is a folder, use the value `folders/{folder_id}`. If the
353*d5c09012SAndroid Build Coastguard Worker  // parent is an organization, use the value `organizations/{org_id}`.
354*d5c09012SAndroid Build Coastguard Worker  //
355*d5c09012SAndroid Build Coastguard Worker  // Access to this method is controlled by checking the
356*d5c09012SAndroid Build Coastguard Worker  // `resourcemanager.folders.list` permission on the `parent`.
357*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
358*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
359*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { child_type: "*" }
360*d5c09012SAndroid Build Coastguard Worker  ];
361*d5c09012SAndroid Build Coastguard Worker
362*d5c09012SAndroid Build Coastguard Worker  // Optional. The maximum number of folders to return in the response. The
363*d5c09012SAndroid Build Coastguard Worker  // server can return fewer folders than requested. If unspecified, server
364*d5c09012SAndroid Build Coastguard Worker  // picks an appropriate default.
365*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
366*d5c09012SAndroid Build Coastguard Worker
367*d5c09012SAndroid Build Coastguard Worker  // Optional. A pagination token returned from a previous call to `ListFolders`
368*d5c09012SAndroid Build Coastguard Worker  // that indicates where this listing should continue from.
369*d5c09012SAndroid Build Coastguard Worker  string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
370*d5c09012SAndroid Build Coastguard Worker
371*d5c09012SAndroid Build Coastguard Worker  // Optional. Controls whether folders in the
372*d5c09012SAndroid Build Coastguard Worker  // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Folder.State.DELETE_REQUESTED]
373*d5c09012SAndroid Build Coastguard Worker  // state should be returned. Defaults to false.
374*d5c09012SAndroid Build Coastguard Worker  bool show_deleted = 4 [(google.api.field_behavior) = OPTIONAL];
375*d5c09012SAndroid Build Coastguard Worker}
376*d5c09012SAndroid Build Coastguard Worker
377*d5c09012SAndroid Build Coastguard Worker// The ListFolders response message.
378*d5c09012SAndroid Build Coastguard Workermessage ListFoldersResponse {
379*d5c09012SAndroid Build Coastguard Worker  // A possibly paginated list of folders that are direct descendants of
380*d5c09012SAndroid Build Coastguard Worker  // the specified parent resource.
381*d5c09012SAndroid Build Coastguard Worker  repeated Folder folders = 1;
382*d5c09012SAndroid Build Coastguard Worker
383*d5c09012SAndroid Build Coastguard Worker  // A pagination token returned from a previous call to `ListFolders`
384*d5c09012SAndroid Build Coastguard Worker  // that indicates from where listing should continue.
385*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
386*d5c09012SAndroid Build Coastguard Worker}
387*d5c09012SAndroid Build Coastguard Worker
388*d5c09012SAndroid Build Coastguard Worker// The request message for searching folders.
389*d5c09012SAndroid Build Coastguard Workermessage SearchFoldersRequest {
390*d5c09012SAndroid Build Coastguard Worker  // Optional. The maximum number of folders to return in the response. The
391*d5c09012SAndroid Build Coastguard Worker  // server can return fewer folders than requested. If unspecified, server
392*d5c09012SAndroid Build Coastguard Worker  // picks an appropriate default.
393*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
394*d5c09012SAndroid Build Coastguard Worker
395*d5c09012SAndroid Build Coastguard Worker  // Optional. A pagination token returned from a previous call to
396*d5c09012SAndroid Build Coastguard Worker  // `SearchFolders` that indicates from where search should continue.
397*d5c09012SAndroid Build Coastguard Worker  string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
398*d5c09012SAndroid Build Coastguard Worker
399*d5c09012SAndroid Build Coastguard Worker  // Optional. Search criteria used to select the folders to return.
400*d5c09012SAndroid Build Coastguard Worker  // If no search criteria is specified then all accessible folders will be
401*d5c09012SAndroid Build Coastguard Worker  // returned.
402*d5c09012SAndroid Build Coastguard Worker  //
403*d5c09012SAndroid Build Coastguard Worker  // Query expressions can be used to restrict results based upon displayName,
404*d5c09012SAndroid Build Coastguard Worker  // state and parent, where the operators `=` (`:`) `NOT`, `AND` and `OR`
405*d5c09012SAndroid Build Coastguard Worker  // can be used along with the suffix wildcard symbol `*`.
406*d5c09012SAndroid Build Coastguard Worker  //
407*d5c09012SAndroid Build Coastguard Worker  // The `displayName` field in a query expression should use escaped quotes
408*d5c09012SAndroid Build Coastguard Worker  // for values that include whitespace to prevent unexpected behavior.
409*d5c09012SAndroid Build Coastguard Worker  //
410*d5c09012SAndroid Build Coastguard Worker  // ```
411*d5c09012SAndroid Build Coastguard Worker  // | Field                   | Description                            |
412*d5c09012SAndroid Build Coastguard Worker  // |-------------------------|----------------------------------------|
413*d5c09012SAndroid Build Coastguard Worker  // | displayName             | Filters by displayName.                |
414*d5c09012SAndroid Build Coastguard Worker  // | parent                  | Filters by parent (for example: folders/123). |
415*d5c09012SAndroid Build Coastguard Worker  // | state, lifecycleState   | Filters by state.                      |
416*d5c09012SAndroid Build Coastguard Worker  // ```
417*d5c09012SAndroid Build Coastguard Worker  //
418*d5c09012SAndroid Build Coastguard Worker  // Some example queries are:
419*d5c09012SAndroid Build Coastguard Worker  //
420*d5c09012SAndroid Build Coastguard Worker  // * Query `displayName=Test*` returns Folder resources whose display name
421*d5c09012SAndroid Build Coastguard Worker  // starts with "Test".
422*d5c09012SAndroid Build Coastguard Worker  // * Query `state=ACTIVE` returns Folder resources with
423*d5c09012SAndroid Build Coastguard Worker  // `state` set to `ACTIVE`.
424*d5c09012SAndroid Build Coastguard Worker  // * Query `parent=folders/123` returns Folder resources that have
425*d5c09012SAndroid Build Coastguard Worker  // `folders/123` as a parent resource.
426*d5c09012SAndroid Build Coastguard Worker  // * Query `parent=folders/123 AND state=ACTIVE` returns active
427*d5c09012SAndroid Build Coastguard Worker  // Folder resources that have `folders/123` as a parent resource.
428*d5c09012SAndroid Build Coastguard Worker  // * Query `displayName=\\"Test String\\"` returns Folder resources with
429*d5c09012SAndroid Build Coastguard Worker  // display names that include both "Test" and "String".
430*d5c09012SAndroid Build Coastguard Worker  string query = 3 [(google.api.field_behavior) = OPTIONAL];
431*d5c09012SAndroid Build Coastguard Worker}
432*d5c09012SAndroid Build Coastguard Worker
433*d5c09012SAndroid Build Coastguard Worker// The response message for searching folders.
434*d5c09012SAndroid Build Coastguard Workermessage SearchFoldersResponse {
435*d5c09012SAndroid Build Coastguard Worker  // A possibly paginated folder search results.
436*d5c09012SAndroid Build Coastguard Worker  // the specified parent resource.
437*d5c09012SAndroid Build Coastguard Worker  repeated Folder folders = 1;
438*d5c09012SAndroid Build Coastguard Worker
439*d5c09012SAndroid Build Coastguard Worker  // A pagination token returned from a previous call to `SearchFolders`
440*d5c09012SAndroid Build Coastguard Worker  // that indicates from where searching should continue.
441*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
442*d5c09012SAndroid Build Coastguard Worker}
443*d5c09012SAndroid Build Coastguard Worker
444*d5c09012SAndroid Build Coastguard Worker// The CreateFolder request message.
445*d5c09012SAndroid Build Coastguard Workermessage CreateFolderRequest {
446*d5c09012SAndroid Build Coastguard Worker  // Required. The folder being created, only the display name and parent will
447*d5c09012SAndroid Build Coastguard Worker  // be consulted. All other fields will be ignored.
448*d5c09012SAndroid Build Coastguard Worker  Folder folder = 2 [(google.api.field_behavior) = REQUIRED];
449*d5c09012SAndroid Build Coastguard Worker}
450*d5c09012SAndroid Build Coastguard Worker
451*d5c09012SAndroid Build Coastguard Worker// Metadata pertaining to the Folder creation process.
452*d5c09012SAndroid Build Coastguard Workermessage CreateFolderMetadata {
453*d5c09012SAndroid Build Coastguard Worker  // The display name of the folder.
454*d5c09012SAndroid Build Coastguard Worker  string display_name = 1;
455*d5c09012SAndroid Build Coastguard Worker
456*d5c09012SAndroid Build Coastguard Worker  // The resource name of the folder or organization we are creating the folder
457*d5c09012SAndroid Build Coastguard Worker  // under.
458*d5c09012SAndroid Build Coastguard Worker  string parent = 2;
459*d5c09012SAndroid Build Coastguard Worker}
460*d5c09012SAndroid Build Coastguard Worker
461*d5c09012SAndroid Build Coastguard Worker// The request sent to the
462*d5c09012SAndroid Build Coastguard Worker// [UpdateFolder][google.cloud.resourcemanager.v3.Folder.UpdateFolder]
463*d5c09012SAndroid Build Coastguard Worker// method.
464*d5c09012SAndroid Build Coastguard Worker//
465*d5c09012SAndroid Build Coastguard Worker// Only the `display_name` field can be changed. All other fields will be
466*d5c09012SAndroid Build Coastguard Worker// ignored. Use the
467*d5c09012SAndroid Build Coastguard Worker// [MoveFolder][google.cloud.resourcemanager.v3.Folders.MoveFolder] method to
468*d5c09012SAndroid Build Coastguard Worker// change the `parent` field.
469*d5c09012SAndroid Build Coastguard Workermessage UpdateFolderRequest {
470*d5c09012SAndroid Build Coastguard Worker  // Required. The new definition of the Folder. It must include the `name`
471*d5c09012SAndroid Build Coastguard Worker  // field, which cannot be changed.
472*d5c09012SAndroid Build Coastguard Worker  Folder folder = 1 [(google.api.field_behavior) = REQUIRED];
473*d5c09012SAndroid Build Coastguard Worker
474*d5c09012SAndroid Build Coastguard Worker  // Required. Fields to be updated.
475*d5c09012SAndroid Build Coastguard Worker  // Only the `display_name` can be updated.
476*d5c09012SAndroid Build Coastguard Worker  google.protobuf.FieldMask update_mask = 2
477*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = REQUIRED];
478*d5c09012SAndroid Build Coastguard Worker}
479*d5c09012SAndroid Build Coastguard Worker
480*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
481*d5c09012SAndroid Build Coastguard Worker// returned by UpdateFolder.
482*d5c09012SAndroid Build Coastguard Workermessage UpdateFolderMetadata {}
483*d5c09012SAndroid Build Coastguard Worker
484*d5c09012SAndroid Build Coastguard Worker// The MoveFolder request message.
485*d5c09012SAndroid Build Coastguard Workermessage MoveFolderRequest {
486*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the Folder to move.
487*d5c09012SAndroid Build Coastguard Worker  // Must be of the form folders/{folder_id}
488*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
489*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
490*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
491*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Folder"
492*d5c09012SAndroid Build Coastguard Worker    }
493*d5c09012SAndroid Build Coastguard Worker  ];
494*d5c09012SAndroid Build Coastguard Worker
495*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the folder or organization which should be
496*d5c09012SAndroid Build Coastguard Worker  // the folder's new parent. Must be of the form `folders/{folder_id}` or
497*d5c09012SAndroid Build Coastguard Worker  // `organizations/{org_id}`.
498*d5c09012SAndroid Build Coastguard Worker  string destination_parent = 2 [
499*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
500*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { child_type: "*" }
501*d5c09012SAndroid Build Coastguard Worker  ];
502*d5c09012SAndroid Build Coastguard Worker}
503*d5c09012SAndroid Build Coastguard Worker
504*d5c09012SAndroid Build Coastguard Worker// Metadata pertaining to the folder move process.
505*d5c09012SAndroid Build Coastguard Workermessage MoveFolderMetadata {
506*d5c09012SAndroid Build Coastguard Worker  // The display name of the folder.
507*d5c09012SAndroid Build Coastguard Worker  string display_name = 1;
508*d5c09012SAndroid Build Coastguard Worker
509*d5c09012SAndroid Build Coastguard Worker  // The resource name of the folder's parent.
510*d5c09012SAndroid Build Coastguard Worker  string source_parent = 2;
511*d5c09012SAndroid Build Coastguard Worker
512*d5c09012SAndroid Build Coastguard Worker  // The resource name of the folder or organization to move the folder to.
513*d5c09012SAndroid Build Coastguard Worker  string destination_parent = 3;
514*d5c09012SAndroid Build Coastguard Worker}
515*d5c09012SAndroid Build Coastguard Worker
516*d5c09012SAndroid Build Coastguard Worker// The DeleteFolder request message.
517*d5c09012SAndroid Build Coastguard Workermessage DeleteFolderRequest {
518*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the folder to be deleted.
519*d5c09012SAndroid Build Coastguard Worker  // Must be of the form `folders/{folder_id}`.
520*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
521*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
522*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
523*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Folder"
524*d5c09012SAndroid Build Coastguard Worker    }
525*d5c09012SAndroid Build Coastguard Worker  ];
526*d5c09012SAndroid Build Coastguard Worker}
527*d5c09012SAndroid Build Coastguard Worker
528*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the `Operation`
529*d5c09012SAndroid Build Coastguard Worker// returned by `DeleteFolder`.
530*d5c09012SAndroid Build Coastguard Workermessage DeleteFolderMetadata {}
531*d5c09012SAndroid Build Coastguard Worker
532*d5c09012SAndroid Build Coastguard Worker// The UndeleteFolder request message.
533*d5c09012SAndroid Build Coastguard Workermessage UndeleteFolderRequest {
534*d5c09012SAndroid Build Coastguard Worker  // Required. The resource name of the folder to undelete.
535*d5c09012SAndroid Build Coastguard Worker  // Must be of the form `folders/{folder_id}`.
536*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
537*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
538*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
539*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Folder"
540*d5c09012SAndroid Build Coastguard Worker    }
541*d5c09012SAndroid Build Coastguard Worker  ];
542*d5c09012SAndroid Build Coastguard Worker}
543*d5c09012SAndroid Build Coastguard Worker
544*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the `Operation`
545*d5c09012SAndroid Build Coastguard Worker// returned by `UndeleteFolder`.
546*d5c09012SAndroid Build Coastguard Workermessage UndeleteFolderMetadata {}
547