create method

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

Creates a permission for a file or shared drive.

For more information, see Share files, folders, and drives. Warning: Concurrent permissions operations on the same file aren't supported; only the last update is applied.

request - The metadata request object.

Request parameters:

fileId - The ID of the file or shared drive.

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

enforceExpansiveAccess - Whether the request should enforce expansive access rules.

enforceSingleParent - Deprecated: See moveToNewOwnersRoot for details.

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

sendNotificationEmail - Whether to send a notification email when sharing to users or groups. This defaults to true for users and groups, and is not allowed for other requests. It must not be disabled for ownership transfers.

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

supportsTeamDrives - Deprecated: Use supportsAllDrives instead.

transferOwnership - Whether to transfer ownership to the specified user and downgrade the current owner to a writer. This parameter is required as an acknowledgement of the side effect. For more information, see Transfer file ownership.

useDomainAdminAccess - Issue the request as a domain administrator. If set to true, and if the following additional conditions are met, the requester is granted access: 1. The file ID parameter refers to a shared drive. 2. The requester is an administrator of the domain to which the shared drive belongs. For more information, see Manage shared drives as domain administrators.

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