create method
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 folders that share its parent. + The addition of the folder must
not cause the active folder hierarchy to exceed a height of 10. Note, the
full active + deleted folder hierarchy is allowed to reach a height of 20;
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 300. If the operation fails due to a
folder constraint violation, some errors may be returned by the
CreateFolder
request, with status code FAILED_PRECONDITION
and an
error description. Other folder constraint violations will be communicated
in the Operation
, with the specific PreconditionFailure
returned in
the details list in the Operation.error
field. The caller must have
resourcemanager.folders.create
permission on the identified parent.
request
- The metadata request object.
Request parameters:
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Operation.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Operation> create(
Folder request, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
const url_ = 'v3/folders';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}