# Google Drive API . permissions

## Instance Methods

Close httplib2 connections.

Deletes a permission from a file or shared drive. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.

Gets a permission by ID.

Returns the permission ID for an email address.

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.

Lists a file's or shared drive's permissions.

Retrieves the next page of results.

Updates a permission using patch semantics. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.

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

### Method Details

`close()`

    Close httplib2 connections.

`delete(fileId, permissionId, enforceExpansiveAccess=None, supportsAllDrives=None, supportsTeamDrives=None, useDomainAdminAccess=None, x__xgafv=None)`

    Deletes a permission from a file or shared drive. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      permissionId: string, The ID for the permission. (required)
      enforceExpansiveAccess: boolean, Whether the request should enforce expansive access rules.
      supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

`get(fileId, permissionId, supportsAllDrives=None, supportsTeamDrives=None, useDomainAdminAccess=None, x__xgafv=None)`

    Gets a permission by ID.

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      permissionId: string, The ID for the permission. (required)
      supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

`getIdForEmail(email, x__xgafv=None)`

    Returns the permission ID for an email address.

    Args:
      email: string, The email address for which to return a permission ID (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # An ID for a user or group as seen in Permission items.
      "id": "A String", # The permission ID.
      "kind": "drive#permissionId", # This is always `drive#permissionId`.
    }

`insert(fileId, body=None, emailMessage=None, enforceExpansiveAccess=None, enforceSingleParent=None, moveToNewOwnersRoot=None, sendNotificationEmails=None, supportsAllDrives=None, supportsTeamDrives=None, useDomainAdminAccess=None, x__xgafv=None)`

    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.

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      body: object, The request body.
        The object takes the form of:

    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

      emailMessage: string, A plain text custom message to include in notification emails.
      enforceExpansiveAccess: boolean, Whether the request should enforce expansive access rules.
      enforceSingleParent: boolean, Deprecated: See `moveToNewOwnersRoot` for details.
      moveToNewOwnersRoot: boolean, 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: boolean, 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: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

`list(fileId, includePermissionsForView=None, maxResults=None, pageToken=None, supportsAllDrives=None, supportsTeamDrives=None, useDomainAdminAccess=None, x__xgafv=None)`

    Lists a file's or shared drive's permissions.

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      includePermissionsForView: string, Specifies which additional view's permissions to include in the response. Only `published` is supported.
      maxResults: integer, The maximum number of permissions to return per page. When not set for files in a shared drive, at most 100 results will be returned. When not set for files that are not in a shared drive, the entire list will be returned.
      pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of `nextPageToken` from the previous response.
      supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A list of permissions associated with a file.
      "etag": "A String", # The ETag of the list.
      "items": [ # The list of permissions.
        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
          "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
            "A String",
          ],
          "authKey": "A String", # Output only. Deprecated.
          "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
          "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
          "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
          "etag": "A String", # Output only. The ETag of the permission.
          "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
          "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
          "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
          "kind": "drive#permission", # Output only. This is always `drive#permission`.
          "name": "A String", # Output only. The name for this permission.
          "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
          "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
            {
              "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
                "A String",
              ],
              "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
              "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
              "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
              "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
            },
          ],
          "photoLink": "A String", # Output only. A link to the profile photo, if available.
          "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
          "selfLink": "A String", # Output only. A link back to this permission.
          "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
            {
              "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
                "A String",
              ],
              "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
              "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
              "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
              "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
            },
          ],
          "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
          "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
          "withLink": True or False, # Whether the link is required for this permission.
        },
      ],
      "kind": "drive#permissionList", # This is always `drive#permissionList`.
      "nextPageToken": "A String", # The page token for the next page of permissions. This field will be absent if the end of the permissions list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results.
      "selfLink": "A String", # A link back to this list.
    }

`list_next()`

    Retrieves the next page of results.

            Args:
              previous_request: The request for the previous page. (required)
              previous_response: The response from the request for the previous page. (required)

            Returns:
              A request object that you can call 'execute()' on to request the next
              page. Returns None if there are no more items in the collection.

`patch(fileId, permissionId, body=None, enforceExpansiveAccess=None, removeExpiration=None, supportsAllDrives=None, supportsTeamDrives=None, transferOwnership=None, useDomainAdminAccess=None, x__xgafv=None)`

    Updates a permission using patch semantics. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      permissionId: string, The ID for the permission. (required)
      body: object, The request body.
        The object takes the form of:

    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

      enforceExpansiveAccess: boolean, Whether the request should enforce expansive access rules.
      removeExpiration: boolean, Whether to remove the expiration date.
      supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      transferOwnership: boolean, Whether changing a role to `owner` downgrades the current owners to writers. Does nothing if the specified role is not `owner`.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

`update(fileId, permissionId, body=None, enforceExpansiveAccess=None, removeExpiration=None, supportsAllDrives=None, supportsTeamDrives=None, transferOwnership=None, useDomainAdminAccess=None, x__xgafv=None)`

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

    Args:
      fileId: string, The ID for the file or shared drive. (required)
      permissionId: string, The ID for the permission. (required)
      body: object, The request body.
        The object takes the form of:

    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }

      enforceExpansiveAccess: boolean, Whether the request should enforce expansive access rules.
      removeExpiration: boolean, Whether to remove the expiration date.
      supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
      supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
      transferOwnership: boolean, Whether changing a role to `owner` downgrades the current owners to writers. Does nothing if the specified role is not `owner`.
      useDomainAdminAccess: boolean, 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.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      "additionalRoles": [ # Additional roles for this user. Only `commenter` is currently allowed, though more may be supported in the future.
        "A String",
      ],
      "authKey": "A String", # Output only. Deprecated.
      "deleted": True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      "domain": "A String", # Output only. The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is `user`, `group` or `domain`.
      "emailAddress": "A String", # Output only. The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is `user` or `group`.
      "etag": "A String", # Output only. The ETag of the permission.
      "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions: - They can only be set on user and group permissions - The date must be in the future - The date cannot be more than a year in the future - The date can only be set on drive.permissions.update or drive.permissions.patch requests
      "id": "A String", # The ID of the user this permission refers to, and identical to the `permissionId` in the About and Files resources. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "inheritedPermissionsDisabled": True or False, # When true, only organizers, owners, and users with permissions added directly on the item can access it.
      "kind": "drive#permission", # Output only. This is always `drive#permission`.
      "name": "A String", # Output only. The name for this permission.
      "pendingOwner": True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      "permissionDetails": [ # Output only. Details of whether the permissions on this item are inherited or directly on this item.
        {
          "additionalRoles": [ # Output only. Additional roles for this user. Only `commenter` is currently possible, though more may be supported in the future.
            "A String",
          ],
          "inherited": True or False, # Output only. Whether this permission is inherited. This field is always populated.
          "inheritedFrom": "A String", # Output only. The ID of the item from which this permission is inherited. This is only populated for items in shared drives.
          "permissionType": "A String", # Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`
          "role": "A String", # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `reader`
        },
      ],
      "photoLink": "A String", # Output only. A link to the profile photo, if available.
      "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `reader`
      "selfLink": "A String", # Output only. A link back to this permission.
      "teamDrivePermissionDetails": [ # Output only. Deprecated: Use `permissionDetails` instead.
        {
          "additionalRoles": [ # Output only. Deprecated: Use `permissionDetails/additionalRoles` instead.
            "A String",
          ],
          "inherited": True or False, # Output only. Deprecated: Use `permissionDetails/inherited` instead.
          "inheritedFrom": "A String", # Output only. Deprecated: Use `permissionDetails/inheritedFrom` instead.
          "role": "A String", # Output only. Deprecated: Use `permissionDetails/role` instead.
          "teamDrivePermissionType": "A String", # Output only. Deprecated: Use `permissionDetails/permissionType` instead.
        },
      ],
      "type": "A String", # The account type. Allowed values are: * `user` * `group` * `domain` * `anyone`
      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a `drive.permissions.insert` request, exactly one of the `id` or `value` fields must be specified unless the permission type is `anyone`, in which case both `id` and `value` are ignored.
      "view": "A String", # Indicates the view for this permission. Only populated for permissions that belong to a view. published and metadata are the only supported values. - published: The permission's role is published_reader. - metadata: The item is only visible to the metadata view because the item has limited access and the scope has at least read access to the parent. Note: The metadata view is currently only supported on folders.
      "withLink": True or False, # Whether the link is required for this permission.
    }