Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / google-proto-files / google / cloud / resourcemanager / v2 / folders.proto
diff --git a/legacy-libs/google-proto-files/google/cloud/resourcemanager/v2/folders.proto b/legacy-libs/google-proto-files/google/cloud/resourcemanager/v2/folders.proto
new file mode 100644 (file)
index 0000000..b231bab
--- /dev/null
@@ -0,0 +1,427 @@
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+
+package google.cloud.resourcemanager.v2;
+
+import "google/api/annotations.proto";
+import "google/iam/v1/iam_policy.proto";
+import "google/iam/v1/policy.proto";
+import "google/longrunning/operations.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/resourcemanager/v2;resourcemanager";
+option java_multiple_files = true;
+option java_outer_classname = "FoldersProto";
+option java_package = "com.google.cloud.resourcemanager.v2";
+option csharp_namespace = "Google.Cloud.ResourceManager.V2";
+option php_namespace = "Google\\Cloud\\ResourceManager\\V2";
+
+// Manages Cloud Resource Folders.
+// Cloud Resource Folders can be used to organize the resources under an
+// organization and to control the IAM policies applied to groups of resources.
+service Folders {
+  // Lists the Folders that are direct descendants of supplied parent resource.
+  // List provides a strongly consistent view of the Folders underneath
+  // the specified parent resource.
+  // List returns Folders sorted based upon the (ascending) lexical ordering
+  // of their display_name.
+  // The caller must have `resourcemanager.folders.list` permission on the
+  // identified parent.
+  rpc ListFolders(ListFoldersRequest) returns (ListFoldersResponse) {
+    option (google.api.http) = {
+      get: "/v2/folders"
+    };
+  }
+
+  // Search for folders that match specific filter criteria.
+  // Search provides an eventually consistent view of the folders a user has
+  // access to which meet the specified filter criteria.
+  //
+  // This will only return folders on which the caller has the
+  // permission `resourcemanager.folders.get`.
+  rpc SearchFolders(SearchFoldersRequest) returns (SearchFoldersResponse) {
+    option (google.api.http) = {
+      post: "/v2/folders:search"
+      body: "*"
+    };
+  }
+
+  // Retrieves a Folder identified by the supplied resource name.
+  // Valid Folder resource names have the format `folders/{folder_id}`
+  // (for example, `folders/1234`).
+  // The caller must have `resourcemanager.folders.get` permission on the
+  // identified folder.
+  rpc GetFolder(GetFolderRequest) returns (Folder) {
+    option (google.api.http) = {
+      get: "/v2/{name=folders/*}"
+    };
+  }
+
+  // Creates a Folder in the resource hierarchy.
+  // Returns an Operation which can be used to track the progress of the
+  // folder creation workflow.
+  // Upon success the Operation.response field will be populated with the
+  // created Folder.
+  //
+  // In order to succeed, the addition of this new Folder must not violate
+  // the Folder naming, height or fanout constraints.
+  // + The Folder's display_name must be distinct from all other Folder's that
+  // share its parent.
+  // + The addition of the Folder must not cause the active Folder hierarchy
+  // to exceed a height of 4. Note, the full active + deleted Folder hierarchy
+  // is allowed to reach a height of 8; this provides additional headroom when
+  // moving folders that contain deleted folders.
+  // + The addition of the Folder must not cause the total number of Folders
+  // under its parent to exceed 100.
+  //
+  // If the operation fails due to a folder constraint violation,
+  // a PreconditionFailure explaining the violation will be returned.
+  // If the failure occurs synchronously then the PreconditionFailure
+  // will be returned via the Status.details field and if it occurs
+  // asynchronously then the PreconditionFailure will be returned
+  // via the Operation.error field.
+  //
+  // The caller must have `resourcemanager.folders.create` permission on the
+  // identified parent.
+  rpc CreateFolder(CreateFolderRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = {
+      post: "/v2/folders"
+      body: "folder"
+    };
+  }
+
+  // Updates a Folder, changing its display_name.
+  // Changes to the folder display_name will be rejected if they violate either
+  // the display_name formatting rules or naming constraints described in
+  // the [CreateFolder] documentation.
+  // + The Folder's display name must start and end with a letter or digit,
+  // may contain letters, digits, spaces, hyphens and underscores and can be
+  // no longer than 30 characters. This is captured by the regular expression:
+  // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?.
+  // The caller must have `resourcemanager.folders.update` permission on the
+  // identified folder.
+  //
+  // If the update fails due to the unique name constraint then a
+  // PreconditionFailure explaining this violation will be returned
+  // in the Status.details field.
+  rpc UpdateFolder(UpdateFolderRequest) returns (Folder) {
+    option (google.api.http) = {
+      patch: "/v2/{folder.name=folders/*}"
+      body: "folder"
+    };
+  }
+
+  // Moves a Folder under a new resource parent.
+  // Returns an Operation which can be used to track the progress of the
+  // folder move workflow.
+  // Upon success the Operation.response field will be populated with the
+  // moved Folder.
+  // Upon failure, a FolderOperationError categorizing the failure cause will
+  // be returned - if the failure occurs synchronously then the
+  // FolderOperationError will be returned via the Status.details field
+  // and if it occurs asynchronously then the FolderOperation will be returned
+  // via the the Operation.error field.
+  // In addition, the Operation.metadata field will be populated with a
+  // FolderOperation message as an aid to stateless clients.
+  // Folder moves will be rejected if they violate either the naming, height
+  // or fanout constraints described in the [CreateFolder] documentation.
+  // The caller must have `resourcemanager.folders.move` permission on the
+  // folder's current and proposed new parent.
+  rpc MoveFolder(MoveFolderRequest) returns (google.longrunning.Operation) {
+    option (google.api.http) = {
+      post: "/v2/{name=folders/*}:move"
+      body: "*"
+    };
+  }
+
+  // Requests deletion of a Folder. The Folder is moved into the
+  // [DELETE_REQUESTED] state immediately, and is deleted approximately 30 days
+  // later. This method may only be called on an empty Folder in the [ACTIVE]
+  // state, where a Folder is empty if it doesn't contain any Folders or
+  // Projects in the [ACTIVE] state.
+  // The caller must have `resourcemanager.folders.delete` permission on the
+  // identified folder.
+  rpc DeleteFolder(DeleteFolderRequest) returns (Folder) {
+    option (google.api.http) = {
+      delete: "/v2/{name=folders/*}"
+    };
+  }
+
+  // Cancels the deletion request for a Folder. This method may only be
+  // called on a Folder in the [DELETE_REQUESTED] state.
+  // In order to succeed, the Folder's parent must be in the [ACTIVE] state.
+  // In addition, reintroducing the folder into the tree must not violate
+  // folder naming, height and fanout constraints described in the
+  // [CreateFolder] documentation.
+  // The caller must have `resourcemanager.folders.undelete` permission on the
+  // identified folder.
+  rpc UndeleteFolder(UndeleteFolderRequest) returns (Folder) {
+    option (google.api.http) = {
+      post: "/v2/{name=folders/*}:undelete"
+      body: "*"
+    };
+  }
+
+  // Gets the access control policy for a Folder. The returned policy may be
+  // empty if no such policy or resource exists. The `resource` field should
+  // be the Folder's resource name, e.g. "folders/1234".
+  // The caller must have `resourcemanager.folders.getIamPolicy` permission
+  // on the identified folder.
+  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
+      returns (google.iam.v1.Policy) {
+    option (google.api.http) = {
+      post: "/v2/{resource=folders/*}:getIamPolicy"
+      body: "*"
+    };
+  }
+
+  // Sets the access control policy on a Folder, replacing any existing policy.
+  // The `resource` field should be the Folder's resource name, e.g.
+  // "folders/1234".
+  // The caller must have `resourcemanager.folders.setIamPolicy` permission
+  // on the identified folder.
+  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
+      returns (google.iam.v1.Policy) {
+    option (google.api.http) = {
+      post: "/v2/{resource=folders/*}:setIamPolicy"
+      body: "*"
+    };
+  }
+
+  // Returns permissions that a caller has on the specified Folder.
+  // The `resource` field should be the Folder's resource name,
+  // e.g. "folders/1234".
+  //
+  // There are no permissions required for making this API call.
+  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
+      returns (google.iam.v1.TestIamPermissionsResponse) {
+    option (google.api.http) = {
+      post: "/v2/{resource=folders/*}:testIamPermissions"
+      body: "*"
+    };
+  }
+}
+
+// A Folder in an Organization's resource hierarchy, used to
+// organize that Organization's resources.
+message Folder {
+  // Folder lifecycle states.
+  enum LifecycleState {
+    // Unspecified state.
+    LIFECYCLE_STATE_UNSPECIFIED = 0;
+
+    // The normal and active state.
+    ACTIVE = 1;
+
+    // The folder has been marked for deletion by the user.
+    DELETE_REQUESTED = 2;
+  }
+
+  // Output only. The resource name of the Folder.
+  // Its format is `folders/{folder_id}`, for example: "folders/1234".
+  string name = 1;
+
+  // The Folder’s parent's resource name.
+  // Updates to the folder's parent must be performed via [MoveFolders].
+  string parent = 2;
+
+  // The folder’s display name.
+  // A folder’s display name must be unique amongst its siblings, e.g.
+  // no two folders with the same parent can share the same display name.
+  // The display name must start and end with a letter or digit, may contain
+  // letters, digits, spaces, hyphens and underscores and can be no longer
+  // than 30 characters. This is captured by the regular expression:
+  // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?.
+  string display_name = 3;
+
+  // Output only.  The lifecycle state of the folder.
+  // Updates to the lifecycle_state must be performed via
+  // [DeleteFolder] and [UndeleteFolder].
+  LifecycleState lifecycle_state = 4;
+
+  // Output only. Timestamp when the Folder was created. Assigned by the server.
+  google.protobuf.Timestamp create_time = 5;
+
+  // Output only. Timestamp when the Folder was last modified.
+  google.protobuf.Timestamp update_time = 6;
+}
+
+// The ListFolders request message.
+message ListFoldersRequest {
+  // The resource name of the Organization or Folder whose Folders are
+  // being listed.
+  // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
+  // Access to this method is controlled by checking the
+  // `resourcemanager.folders.list` permission on the `parent`.
+  string parent = 1;
+
+  // The maximum number of Folders to return in the response.
+  // This field is optional.
+  int32 page_size = 2;
+
+  // A pagination token returned from a previous call to `ListFolders`
+  // that indicates where this listing should continue from.
+  // This field is optional.
+  string page_token = 3;
+
+  // Controls whether Folders in the [DELETE_REQUESTED} state should
+  // be returned.
+  bool show_deleted = 4;
+}
+
+// The ListFolders response message.
+message ListFoldersResponse {
+  // A possibly paginated list of Folders that are direct descendants of
+  // the specified parent resource.
+  repeated Folder folders = 1;
+
+  // A pagination token returned from a previous call to `ListFolders`
+  // that indicates from where listing should continue.
+  // This field is optional.
+  string next_page_token = 2;
+}
+
+// The request message for searching folders.
+message SearchFoldersRequest {
+  // The maximum number of folders to return in the response.
+  // This field is optional.
+  int32 page_size = 1;
+
+  // A pagination token returned from a previous call to `SearchFolders`
+  // that indicates from where search should continue.
+  // This field is optional.
+  string page_token = 2;
+
+  // Search criteria used to select the Folders to return.
+  // If no search criteria is specified then all accessible folders will be
+  // returned.
+  //
+  // Query expressions can be used to restrict results based upon displayName,
+  // lifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR`
+  // can be used along with the suffix wildcard symbol `*`.
+  //
+  // Some example queries are:
+  // |Query|Description|
+  // |------|-----------|
+  // |displayName=Test*|Folders whose display name starts with "Test".|
+  // |lifecycleState=ACTIVE|Folders whose lifecycleState is ACTIVE.|
+  // |parent=folders/123|Folders whose parent is "folders/123".|
+  // |parent=folders/123 AND lifecycleState=ACTIVE|Active folders whose
+  // parent is "folders/123".|
+  string query = 3;
+}
+
+// The response message for searching folders.
+message SearchFoldersResponse {
+  // A possibly paginated folder search results.
+  // the specified parent resource.
+  repeated Folder folders = 1;
+
+  // A pagination token returned from a previous call to `SearchFolders`
+  // that indicates from where searching should continue.
+  // This field is optional.
+  string next_page_token = 2;
+}
+
+// The GetFolder request message.
+message GetFolderRequest {
+  // The resource name of the Folder to retrieve.
+  // Must be of the form `folders/{folder_id}`.
+  string name = 1;
+}
+
+// The CreateFolder request message.
+message CreateFolderRequest {
+  // The resource name of the new Folder's parent.
+  // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
+  string parent = 1;
+
+  // The Folder being created, only the display name will be consulted.
+  // All other fields will be ignored.
+  Folder folder = 2;
+}
+
+// The MoveFolder request message.
+message MoveFolderRequest {
+  // The resource name of the Folder to move.
+  // Must be of the form folders/{folder_id}
+  string name = 1;
+
+  // The resource name of the Folder or Organization to reparent
+  // the folder under.
+  // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
+  string destination_parent = 2;
+}
+
+// The request message for updating a folder's display name.
+message UpdateFolderRequest {
+  // The new definition of the Folder. It must include a
+  // a `name` and `display_name` field. The other fields
+  // will be ignored.
+  Folder folder = 1;
+
+  // Fields to be updated.
+  // Only the `display_name` can be updated.
+  google.protobuf.FieldMask update_mask = 2;
+}
+
+// The DeleteFolder request message.
+message DeleteFolderRequest {
+  // the resource name of the Folder to be deleted.
+  // Must be of the form `folders/{folder_id}`.
+  string name = 1;
+
+  // Instructs DeleteFolderAction to delete a folder even when the folder is not
+  // empty.
+  bool recursive_delete = 2;
+}
+
+// The UndeleteFolder request message.
+message UndeleteFolderRequest {
+  // The resource name of the Folder to undelete.
+  // Must be of the form `folders/{folder_id}`.
+  string name = 1;
+}
+
+// Metadata describing a long running folder operation
+message FolderOperation {
+  // The type of operation that failed.
+  enum OperationType {
+    // Operation type not specified.
+    OPERATION_TYPE_UNSPECIFIED = 0;
+
+    // A create folder operation.
+    CREATE = 1;
+
+    // A move folder operation.
+    MOVE = 2;
+  }
+
+  // The display name of the folder.
+  string display_name = 1;
+
+  // The type of this operation.
+  OperationType operation_type = 2;
+
+  // The resource name of the folder's parent.
+  // Only applicable when the operation_type is MOVE.
+  string source_parent = 3;
+
+  // The resource name of the folder or organization we are either creating
+  // the folder under or moving the folder to.
+  string destination_parent = 4;
+}