insert method

Future<Permission> insert(
  1. Permission request,
  2. String fileId, {
  3. String? emailMessage,
  4. bool? enforceSingleParent,
  5. bool? moveToNewOwnersRoot,
  6. bool? sendNotificationEmails,
  7. bool? supportsAllDrives,
  8. bool? supportsTeamDrives,
  9. bool? useDomainAdminAccess,
  10. String? $fields,
})

Inserts a permission for a file or shared drive.

Warning: Concurrent permissions operations on the same file are not supported; only the last update is applied.

request - The metadata request object.

Request parameters:

fileId - The ID for the file or shared drive.

emailMessage - A plain text custom message to include in notification emails.

enforceSingleParent - Deprecated: See moveToNewOwnersRoot for details.

moveToNewOwnersRoot - This parameter will only take effect if the item is not in a shared drive and the request is attempting to transfer the ownership of the item. If set to true, the item will be moved to the new owner's My Drive root folder and all prior parents removed. If set to false, parents are not changed.

sendNotificationEmails - Whether to send notification emails when sharing to users or groups. This parameter is ignored and an email is sent if the role is owner.

supportsAllDrives - Whether the requesting application supports both My Drives and shared drives.

supportsTeamDrives - Deprecated: Use supportsAllDrives instead.

useDomainAdminAccess - Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.

$fields - Selector specifying which fields to include in a partial response.

Completes with a Permission.

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<Permission> insert(
  Permission request,
  core.String fileId, {
  core.String? emailMessage,
  core.bool? enforceSingleParent,
  core.bool? moveToNewOwnersRoot,
  core.bool? sendNotificationEmails,
  core.bool? supportsAllDrives,
  core.bool? supportsTeamDrives,
  core.bool? useDomainAdminAccess,
  core.String? $fields,
}) async {
  final body_ = convert_1.json.encode(request);
  final queryParams_ = <core.String, core.List<core.String>>{
    if (emailMessage != null) 'emailMessage': [emailMessage],
    if (enforceSingleParent != null)
      'enforceSingleParent': ['${enforceSingleParent}'],
    if (moveToNewOwnersRoot != null)
      'moveToNewOwnersRoot': ['${moveToNewOwnersRoot}'],
    if (sendNotificationEmails != null)
      'sendNotificationEmails': ['${sendNotificationEmails}'],
    if (supportsAllDrives != null)
      'supportsAllDrives': ['${supportsAllDrives}'],
    if (supportsTeamDrives != null)
      'supportsTeamDrives': ['${supportsTeamDrives}'],
    if (useDomainAdminAccess != null)
      'useDomainAdminAccess': ['${useDomainAdminAccess}'],
    if ($fields != null) 'fields': [$fields],
  };

  final url_ = 'files/' + commons.escapeVariable('$fileId') + '/permissions';

  final response_ = await _requester.request(
    url_,
    'POST',
    body: body_,
    queryParams: queryParams_,
  );
  return Permission.fromJson(
      response_ as core.Map<core.String, core.dynamic>);
}