Skip to content

Commit c5b9e24

Browse files
Google APIscopybara-github
authored andcommitted
feat: Make Managed Folders operations public
PiperOrigin-RevId: 620299849
1 parent 34990e5 commit c5b9e24

4 files changed

Lines changed: 242 additions & 22 deletions

File tree

google/storage/control/v2/BUILD.bazel

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,9 @@ java_gapic_assembly_gradle_pkg(
104104
],
105105
)
106106

107-
# Other than Java, the build target for all other languages are commented out.
108-
109-
###############################################################################
110-
## Go
111-
###############################################################################
107+
##############################################################################
108+
# Go
109+
##############################################################################
112110
load(
113111
"@com_google_googleapis_imports//:imports.bzl",
114112
"go_gapic_assembly_pkg",
@@ -157,9 +155,9 @@ go_gapic_assembly_pkg(
157155
],
158156
)
159157

160-
###############################################################################
161-
## Python
162-
###############################################################################
158+
##############################################################################
159+
# Python
160+
##############################################################################
163161
load(
164162
"@com_google_googleapis_imports//:imports.bzl",
165163
"py_gapic_assembly_pkg",
@@ -203,9 +201,9 @@ py_gapic_assembly_pkg(
203201
],
204202
)
205203

206-
###############################################################################
207-
## PHP
208-
###############################################################################
204+
##############################################################################
205+
# PHP
206+
##############################################################################
209207
#load(
210208
# "@com_google_googleapis_imports//:imports.bzl",
211209
# "php_gapic_assembly_pkg",
@@ -222,7 +220,6 @@ py_gapic_assembly_pkg(
222220
# name = "control_php_gapic",
223221
# srcs = [":control_proto_with_info"],
224222
# grpc_service_config = "storage_control_grpc_service_config.json",
225-
# rest_numeric_enums = True,
226223
# migration_mode = "NEW_SURFACE_ONLY",
227224
# service_yaml = "storage_v2.yaml",
228225
# transport = "grpc",
@@ -240,9 +237,9 @@ py_gapic_assembly_pkg(
240237
# ],
241238
#)
242239
#
243-
###############################################################################
244-
## Node.js
245-
###############################################################################
240+
##############################################################################
241+
# Node.js
242+
##############################################################################
246243
load(
247244
"@com_google_googleapis_imports//:imports.bzl",
248245
"nodejs_gapic_assembly_pkg",
@@ -270,9 +267,9 @@ nodejs_gapic_assembly_pkg(
270267
],
271268
)
272269

273-
###############################################################################
274-
## Ruby
275-
###############################################################################
270+
##############################################################################
271+
# Ruby
272+
##############################################################################
276273
load(
277274
"@com_google_googleapis_imports//:imports.bzl",
278275
"ruby_gapic_assembly_pkg",
@@ -318,9 +315,9 @@ ruby_gapic_assembly_pkg(
318315
],
319316
)
320317

321-
###############################################################################
322-
## C#
323-
###############################################################################
318+
##############################################################################
319+
# C#
320+
##############################################################################
324321
load(
325322
"@com_google_googleapis_imports//:imports.bzl",
326323
"csharp_gapic_assembly_pkg",

google/storage/control/v2/storage_control.proto

Lines changed: 204 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,47 @@ service StorageControl {
112112
};
113113
option (google.api.method_signature) = "name";
114114
}
115+
116+
// Creates a new managed folder.
117+
rpc CreateManagedFolder(CreateManagedFolderRequest) returns (ManagedFolder) {
118+
option (google.api.routing) = {
119+
routing_parameters { field: "parent" path_template: "{bucket=**}" }
120+
};
121+
option (google.api.method_signature) =
122+
"parent,managed_folder,managed_folder_id";
123+
}
124+
125+
// Permanently deletes an empty managed folder.
126+
rpc DeleteManagedFolder(DeleteManagedFolderRequest)
127+
returns (google.protobuf.Empty) {
128+
option (google.api.routing) = {
129+
routing_parameters {
130+
field: "name"
131+
path_template: "{bucket=projects/*/buckets/*}/**"
132+
}
133+
};
134+
option (google.api.method_signature) = "name";
135+
}
136+
137+
// Returns metadata for the specified managed folder.
138+
rpc GetManagedFolder(GetManagedFolderRequest) returns (ManagedFolder) {
139+
option (google.api.routing) = {
140+
routing_parameters {
141+
field: "name"
142+
path_template: "{bucket=projects/*/buckets/*}/**"
143+
}
144+
};
145+
option (google.api.method_signature) = "name";
146+
}
147+
148+
// Retrieves a list of managed folders for a given bucket.
149+
rpc ListManagedFolders(ListManagedFoldersRequest)
150+
returns (ListManagedFoldersResponse) {
151+
option (google.api.routing) = {
152+
routing_parameters { field: "parent" path_template: "{bucket=**}" }
153+
};
154+
option (google.api.method_signature) = "parent";
155+
}
115156
}
116157

117158
// Contains information about a pending rename operation.
@@ -195,7 +236,11 @@ message CreateFolderRequest {
195236
// error.
196237
Folder folder = 2 [(google.api.field_behavior) = REQUIRED];
197238

198-
// Required. The absolute path of the folder, using a single `/` as delimiter.
239+
// Required. The full name of a folder, including all its parent folders.
240+
// Folders use single '/' characters as a delimiter.
241+
// The folder_id must end with a slash.
242+
// For example, the folder_id of "books/biographies/" would create a new
243+
// "biographies/" folder under the "books/" folder.
199244
string folder_id = 3 [(google.api.field_behavior) = REQUIRED];
200245

201246
// Optional. If true, parent folder doesn't have to be present and all missing
@@ -428,3 +473,161 @@ message GetStorageLayoutRequest {
428473
(google.api.field_behavior) = OPTIONAL
429474
];
430475
}
476+
477+
// A managed folder.
478+
message ManagedFolder {
479+
option (google.api.resource) = {
480+
type: "storage.googleapis.com/ManagedFolder"
481+
pattern: "projects/{project}/buckets/{bucket}/managedFolders/{managedFolder=**}"
482+
plural: "managedFolders"
483+
singular: "managedFolder"
484+
};
485+
486+
// Identifier. The name of this managed folder.
487+
// Format:
488+
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
489+
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
490+
491+
// Output only. The metadata version of this managed folder. It increases
492+
// whenever the metadata is updated. Used for preconditions and for detecting
493+
// changes in metadata. Managed folders don't have a generation number.
494+
int64 metageneration = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
495+
496+
// Output only. The creation time of the managed folder.
497+
google.protobuf.Timestamp create_time = 4
498+
[(google.api.field_behavior) = OUTPUT_ONLY];
499+
500+
// Output only. The modification time of the managed folder.
501+
google.protobuf.Timestamp update_time = 5
502+
[(google.api.field_behavior) = OUTPUT_ONLY];
503+
}
504+
505+
// Request message for GetManagedFolder.
506+
message GetManagedFolderRequest {
507+
// Required. Name of the managed folder.
508+
// Format:
509+
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
510+
string name = 6 [
511+
(google.api.field_behavior) = REQUIRED,
512+
(google.api.resource_reference) = {
513+
type: "storage.googleapis.com/ManagedFolder"
514+
}
515+
];
516+
517+
// The operation succeeds conditional on the managed folder's current
518+
// metageneration matching the value here specified.
519+
optional int64 if_metageneration_match = 3;
520+
521+
// The operation succeeds conditional on the managed folder's current
522+
// metageneration NOT matching the value here specified.
523+
optional int64 if_metageneration_not_match = 4;
524+
525+
// Optional. A unique identifier for this request. UUID is the recommended
526+
// format, but other formats are still accepted.
527+
string request_id = 5 [
528+
(google.api.field_info).format = UUID4,
529+
(google.api.field_behavior) = OPTIONAL
530+
];
531+
}
532+
533+
// Request message for CreateManagedFolder.
534+
message CreateManagedFolderRequest {
535+
// Required. Name of the bucket this managed folder belongs to.
536+
string parent = 1 [
537+
(google.api.field_behavior) = REQUIRED,
538+
(google.api.resource_reference) = {
539+
child_type: "storage.googleapis.com/ManagedFolder"
540+
}
541+
];
542+
543+
// Required. Properties of the managed folder being created.
544+
// The bucket and managed folder names are specified in the `parent` and
545+
// `managed_folder_id` fields. Populating these fields in `managed_folder`
546+
// will result in an error.
547+
ManagedFolder managed_folder = 2 [(google.api.field_behavior) = REQUIRED];
548+
549+
// Required. The name of the managed folder. It uses a single `/` as delimiter
550+
// and leading and trailing `/` are allowed.
551+
string managed_folder_id = 3 [(google.api.field_behavior) = REQUIRED];
552+
553+
// Optional. A unique identifier for this request. UUID is the recommended
554+
// format, but other formats are still accepted.
555+
string request_id = 4 [
556+
(google.api.field_info).format = UUID4,
557+
(google.api.field_behavior) = OPTIONAL
558+
];
559+
}
560+
561+
// DeleteManagedFolder RPC request message.
562+
message DeleteManagedFolderRequest {
563+
// Required. Name of the managed folder.
564+
// Format:
565+
// `projects/{project}/buckets/{bucket}/managedFolders/{managedFolder}`
566+
string name = 7 [
567+
(google.api.field_behavior) = REQUIRED,
568+
(google.api.resource_reference) = {
569+
type: "storage.googleapis.com/ManagedFolder"
570+
}
571+
];
572+
573+
// The operation succeeds conditional on the managed folder's current
574+
// metageneration matching the value here specified.
575+
optional int64 if_metageneration_match = 3;
576+
577+
// The operation succeeds conditional on the managed folder's current
578+
// metageneration NOT matching the value here specified.
579+
optional int64 if_metageneration_not_match = 4;
580+
581+
// Allows deletion of a managed folder even if it is not empty.
582+
// A managed folder is empty if it manages no child managed folders or
583+
// objects. Caller must have permission for
584+
// storage.managedFolders.setIamPolicy.
585+
bool allow_non_empty = 5;
586+
587+
// Optional. A unique identifier for this request. UUID is the recommended
588+
// format, but other formats are still accepted.
589+
string request_id = 6 [
590+
(google.api.field_info).format = UUID4,
591+
(google.api.field_behavior) = OPTIONAL
592+
];
593+
}
594+
595+
// Request message for ListManagedFolders.
596+
message ListManagedFoldersRequest {
597+
// Required. Name of the bucket this managed folder belongs to.
598+
string parent = 1 [
599+
(google.api.field_behavior) = REQUIRED,
600+
(google.api.resource_reference) = {
601+
child_type: "storage.googleapis.com/ManagedFolder"
602+
}
603+
];
604+
605+
// Optional. Maximum number of managed folders to return in a single response.
606+
// The service will use this parameter or 1,000 items, whichever is smaller.
607+
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
608+
609+
// Optional. A previously-returned page token representing part of the larger
610+
// set of results to view.
611+
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
612+
613+
// Optional. Filter results to match managed folders with name starting with
614+
// this prefix.
615+
string prefix = 4 [(google.api.field_behavior) = OPTIONAL];
616+
617+
// Optional. A unique identifier for this request. UUID is the recommended
618+
// format, but other formats are still accepted.
619+
string request_id = 5 [
620+
(google.api.field_info).format = UUID4,
621+
(google.api.field_behavior) = OPTIONAL
622+
];
623+
}
624+
625+
// Response message for ListManagedFolders.
626+
message ListManagedFoldersResponse {
627+
// The list of matching managed folders
628+
repeated ManagedFolder managed_folders = 1;
629+
630+
// The continuation token, used to page through large result sets. Provide
631+
// this value in a subsequent request to return the next page of results.
632+
string next_page_token = 2;
633+
}

google/storage/control/v2/storage_control_grpc_service_config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
{
2121
"service": "google.storage.control.v2.StorageControl",
2222
"method": "RenameFolder"
23+
},
24+
{
25+
"service": "google.storage.control.v2.StorageControl",
26+
"method": "GetManagedFolder"
27+
},
28+
{
29+
"service": "google.storage.control.v2.StorageControl",
30+
"method": "ListManagedFolders"
2331
}
2432
],
2533
"timeout": "60s",

google/storage/control/v2/storage_v2.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,18 @@ publishing:
5858
- selector: google.storage.control.v2.StorageControl.GetStorageLayout
5959
auto_populated_fields:
6060
- request_id
61+
- selector: google.storage.control.v2.StorageControl.CreateManagedFolder
62+
auto_populated_fields:
63+
- request_id
64+
- selector: google.storage.control.v2.StorageControl.DeleteManagedFolder
65+
auto_populated_fields:
66+
- request_id
67+
- selector: google.storage.control.v2.StorageControl.GetManagedFolder
68+
auto_populated_fields:
69+
- request_id
70+
- selector: google.storage.control.v2.StorageControl.ListManagedFolders
71+
auto_populated_fields:
72+
- request_id
6173
new_issue_uri: https://issuetracker.google.com/issues/new?component=187243&template=1162869
6274
documentation_uri: https://cloud.google.com/storage/docs/overview
6375
api_short_name: storage

0 commit comments

Comments
 (0)