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