<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="drive_v2.html">Drive API</a> . <a href="drive_v2.files.html">files</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#copy">copy(fileId, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, ocr=None, ocrLanguage=None, pinned=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, visibility=None)</a></code></p>
<p class="firstline">Creates a copy of the specified file. Folders cannot be copied.</p>
<p class="toc_element">
  <code><a href="#delete">delete(fileId, enforceSingleParent=None, supportsAllDrives=None, supportsTeamDrives=None)</a></code></p>
<p class="firstline">Permanently deletes a file by ID. Skips the trash. The currently authenticated user must own the file or be an organizer on the parent for shared drive files.</p>
<p class="toc_element">
  <code><a href="#emptyTrash">emptyTrash(enforceSingleParent=None)</a></code></p>
<p class="firstline">Permanently deletes all of the user's trashed files.</p>
<p class="toc_element">
  <code><a href="#export">export(fileId, mimeType)</a></code></p>
<p class="firstline">Exports a Google Doc to the requested MIME type and returns the exported content. Please note that the exported content is limited to 10MB.</p>
<p class="toc_element">
  <code><a href="#export_media">export_media(fileId, mimeType)</a></code></p>
<p class="firstline">Exports a Google Doc to the requested MIME type and returns the exported content. Please note that the exported content is limited to 10MB.</p>
<p class="toc_element">
  <code><a href="#generateIds">generateIds(maxResults=None, space=None, type=None)</a></code></p>
<p class="firstline">Generates a set of file IDs which can be provided in insert or copy requests.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, acknowledgeAbuse=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</a></code></p>
<p class="firstline">Gets a file's metadata or content by ID.</p>
<p class="toc_element">
  <code><a href="#get_media">get_media(fileId, acknowledgeAbuse=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</a></code></p>
<p class="firstline">Gets a file's metadata or content by ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, media_body=None, media_mime_type=None, ocr=None, ocrLanguage=None, pinned=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, useContentAsIndexableText=None, visibility=None)</a></code></p>
<p class="firstline">Insert a new file.</p>
<p class="toc_element">
  <code><a href="#list">list(corpora=None, corpus=None, driveId=None, includeItemsFromAllDrives=None, includePermissionsForView=None, includeTeamDriveItems=None, maxResults=None, orderBy=None, pageToken=None, projection=None, q=None, spaces=None, supportsAllDrives=None, supportsTeamDrives=None, teamDriveId=None)</a></code></p>
<p class="firstline">Lists the user's files.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(fileId, addParents=None, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, modifiedDateBehavior=None, newRevision=None, ocr=None, ocrLanguage=None, pinned=None, removeParents=None, setModifiedDate=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, updateViewedDate=None, useContentAsIndexableText=None)</a></code></p>
<p class="firstline">Updates file metadata and/or content. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#touch">touch(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</a></code></p>
<p class="firstline">Set the file's updated time to the current server time.</p>
<p class="toc_element">
  <code><a href="#trash">trash(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</a></code></p>
<p class="firstline">Moves a file to the trash. The currently authenticated user must own the file or be at least a fileOrganizer on the parent for shared drive files. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.</p>
<p class="toc_element">
  <code><a href="#untrash">untrash(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</a></code></p>
<p class="firstline">Restores a file from the trash. The currently authenticated user must own the file or be at least a fileOrganizer on the parent for shared drive files. Only the owner may untrash a file.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, addParents=None, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, media_body=None, media_mime_type=None, modifiedDateBehavior=None, newRevision=None, ocr=None, ocrLanguage=None, pinned=None, removeParents=None, setModifiedDate=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, updateViewedDate=None, useContentAsIndexableText=None)</a></code></p>
<p class="firstline">Updates file metadata and/or content.</p>
<p class="toc_element">
  <code><a href="#watch">watch(fileId, acknowledgeAbuse=None, body=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</a></code></p>
<p class="firstline">Subscribe to changes on a file</p>
<p class="toc_element">
  <code><a href="#watch_media">watch_media(fileId, acknowledgeAbuse=None, body=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</a></code></p>
<p class="firstline">Subscribe to changes on a file</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="copy">copy(fileId, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, ocr=None, ocrLanguage=None, pinned=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, visibility=None)</code>
  <pre>Creates a copy of the specified file. Folders cannot be copied.

Args:
  fileId: string, The ID of the file to copy. (required)
  body: object, The request body.
    The object takes the form of:

{ # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}

  convert: boolean, Whether to convert this file to the corresponding Docs Editors format.
  enforceSingleParent: boolean, Deprecated. Copying files into multiple folders is no longer supported. Use shortcuts instead.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
  pinned: boolean, Whether to pin the head revision of the new copy. A file can have a maximum of 200 pinned revisions.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  timedTextLanguage: string, The language of the timed text.
  timedTextTrackName: string, The timed text track name.
  visibility: string, The visibility of the new file. This parameter is only relevant when the source is not a native Google Doc and convert=false.
    Allowed values
      DEFAULT - The visibility of the new file is determined by the user&#x27;s default visibility/sharing policies.
      PRIVATE - The new file will be visible to only the owner.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(fileId, enforceSingleParent=None, supportsAllDrives=None, supportsTeamDrives=None)</code>
  <pre>Permanently deletes a file by ID. Skips the trash. The currently authenticated user must own the file or be an organizer on the parent for shared drive files.

Args:
  fileId: string, The ID of the file to delete. (required)
  enforceSingleParent: boolean, Deprecated. If an item is not in a shared drive and its last parent is deleted but the item itself is not, the item will be placed under its owner&#x27;s root.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
</pre>
</div>

<div class="method">
    <code class="details" id="emptyTrash">emptyTrash(enforceSingleParent=None)</code>
  <pre>Permanently deletes all of the user&#x27;s trashed files.

Args:
  enforceSingleParent: boolean, Deprecated. If an item is not in a shared drive and its last parent is deleted but the item itself is not, the item will be placed under its owner&#x27;s root.
</pre>
</div>

<div class="method">
    <code class="details" id="export">export(fileId, mimeType)</code>
  <pre>Exports a Google Doc to the requested MIME type and returns the exported content. Please note that the exported content is limited to 10MB.

Args:
  fileId: string, The ID of the file. (required)
  mimeType: string, The MIME type of the format requested for this export. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="export_media">export_media(fileId, mimeType)</code>
  <pre>Exports a Google Doc to the requested MIME type and returns the exported content. Please note that the exported content is limited to 10MB.

Args:
  fileId: string, The ID of the file. (required)
  mimeType: string, The MIME type of the format requested for this export. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="generateIds">generateIds(maxResults=None, space=None, type=None)</code>
  <pre>Generates a set of file IDs which can be provided in insert or copy requests.

Args:
  maxResults: integer, Maximum number of IDs to return.
  space: string, The space in which the IDs can be used to create new files. Supported values are &#x27;drive&#x27; and &#x27;appDataFolder&#x27;. (Default: &#x27;drive&#x27;)
  type: string, The type of items which the IDs can be used for. Supported values are &#x27;files&#x27; and &#x27;shortcuts&#x27;. Note that &#x27;shortcuts&#x27; are only supported in the drive &#x27;space&#x27;. (Default: &#x27;files&#x27;)

Returns:
  An object of the form:

    { # A list of generated IDs which can be provided in insert requests
  &quot;ids&quot;: [ # The IDs generated for the requesting user in the specified space.
    &quot;A String&quot;,
  ],
  &quot;kind&quot;: &quot;drive#generatedIds&quot;, # This is always drive#generatedIds
  &quot;space&quot;: &quot;A String&quot;, # The type of file that can be created with these IDs.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(fileId, acknowledgeAbuse=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</code>
  <pre>Gets a file&#x27;s metadata or content by ID.

Args:
  fileId: string, The ID for the file in question. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  projection: string, This parameter is deprecated and has no function.
    Allowed values
      BASIC - Deprecated
      FULL - Deprecated
  revisionId: string, Specifies the Revision ID that should be downloaded. Ignored unless alt=media is specified.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  updateViewedDate: boolean, Deprecated: Use files.update with modifiedDateBehavior=noChange, updateViewedDate=true and an empty request body.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="get_media">get_media(fileId, acknowledgeAbuse=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</code>
  <pre>Gets a file&#x27;s metadata or content by ID.

Args:
  fileId: string, The ID for the file in question. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  projection: string, This parameter is deprecated and has no function.
    Allowed values
      BASIC - Deprecated
      FULL - Deprecated
  revisionId: string, Specifies the Revision ID that should be downloaded. Ignored unless alt=media is specified.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  updateViewedDate: boolean, Deprecated: Use files.update with modifiedDateBehavior=noChange, updateViewedDate=true and an empty request body.

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, media_body=None, media_mime_type=None, ocr=None, ocrLanguage=None, pinned=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, useContentAsIndexableText=None, visibility=None)</code>
  <pre>Insert a new file.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}

  convert: boolean, Whether to convert this file to the corresponding Docs Editors format.
  enforceSingleParent: boolean, Deprecated. Creating files in multiple folders is no longer supported.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
  pinned: boolean, Whether to pin the head revision of the uploaded file. A file can have a maximum of 200 pinned revisions.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  timedTextLanguage: string, The language of the timed text.
  timedTextTrackName: string, The timed text track name.
  useContentAsIndexableText: boolean, Whether to use the content as indexable text.
  visibility: string, The visibility of the new file. This parameter is only relevant when convert=false.
    Allowed values
      DEFAULT - The visibility of the new file is determined by the user&#x27;s default visibility/sharing policies.
      PRIVATE - The new file will be visible to only the owner.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(corpora=None, corpus=None, driveId=None, includeItemsFromAllDrives=None, includePermissionsForView=None, includeTeamDriveItems=None, maxResults=None, orderBy=None, pageToken=None, projection=None, q=None, spaces=None, supportsAllDrives=None, supportsTeamDrives=None, teamDriveId=None)</code>
  <pre>Lists the user&#x27;s files.

Args:
  corpora: string, Groupings of files to which the query applies. Supported groupings are: &#x27;user&#x27; (files created by, opened by, or shared directly with the user), &#x27;drive&#x27; (files in the specified shared drive as indicated by the &#x27;driveId&#x27;), &#x27;domain&#x27; (files shared to the user&#x27;s domain), and &#x27;allDrives&#x27; (A combination of &#x27;user&#x27; and &#x27;drive&#x27; for all drives where the user is a member). When able, use &#x27;user&#x27; or &#x27;drive&#x27;, instead of &#x27;allDrives&#x27;, for efficiency.
  corpus: string, The body of items (files/documents) to which the query applies. Deprecated: use &#x27;corpora&#x27; instead.
    Allowed values
      DEFAULT - The items that the user has accessed.
      DOMAIN - Items shared to the user&#x27;s domain.
  driveId: string, ID of the shared drive to search.
  includeItemsFromAllDrives: boolean, Whether both My Drive and shared drive items should be included in results.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  includeTeamDriveItems: boolean, Deprecated use includeItemsFromAllDrives instead.
  maxResults: integer, The maximum number of files to return per page. Partial or empty result pages are possible even before the end of the files list has been reached.
  orderBy: string, A comma-separated list of sort keys. Valid keys are &#x27;createdDate&#x27;, &#x27;folder&#x27;, &#x27;lastViewedByMeDate&#x27;, &#x27;modifiedByMeDate&#x27;, &#x27;modifiedDate&#x27;, &#x27;quotaBytesUsed&#x27;, &#x27;recency&#x27;, &#x27;sharedWithMeDate&#x27;, &#x27;starred&#x27;, &#x27;title&#x27;, and &#x27;title_natural&#x27;. Each key sorts ascending by default, but may be reversed with the &#x27;desc&#x27; modifier. Example usage: ?orderBy=folder,modifiedDate desc,title. Please note that there is a current limitation for users with approximately one million files in which the requested sort order is ignored.
  pageToken: string, Page token for files.
  projection: string, This parameter is deprecated and has no function.
    Allowed values
      BASIC - Deprecated
      FULL - Deprecated
  q: string, Query string for searching files.
  spaces: string, A comma-separated list of spaces to query. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  teamDriveId: string, Deprecated use driveId instead.

Returns:
  An object of the form:

    { # A list of files.
  &quot;etag&quot;: &quot;A String&quot;, # The ETag of the list.
  &quot;incompleteSearch&quot;: True or False, # Whether the search process was incomplete. If true, then some search results may be missing, since all documents were not searched. This may occur when searching multiple drives with the &quot;allDrives&quot; corpora, but all corpora could not be searched. When this happens, it is suggested that clients narrow their query by choosing a different corpus such as &quot;default&quot; or &quot;drive&quot;.
  &quot;items&quot;: [ # The list of files. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
    { # The metadata for a file.
      &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
      &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
      &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
      &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
      &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
        &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
        &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
        &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
        &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
        &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
        &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
        &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
        &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
        &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
        &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
        &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
        &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
        &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
        &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
        &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
        &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
        &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
        &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
        &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
        &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
        &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
        &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
        &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
        &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
        &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
        &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
        &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
        &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
        &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
        &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
        &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
        &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
        &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
        &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
      },
      &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
        { # A restriction for accessing the content of the file.
          &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
          &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
          &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
            &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
            &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
            &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
            &quot;picture&quot;: { # The user&#x27;s profile picture.
              &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
            },
          },
          &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
          &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
        },
      ],
      &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
      &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
      &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
      &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
      &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
      &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
      &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
      &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
      &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
      &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
        &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
      },
      &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
      &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
      &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
      &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
      &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
      &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
        &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
        &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
        &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
        &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
        &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
        &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
        &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
        &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
        &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
        &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
        &quot;height&quot;: 42, # The height of the image in pixels.
        &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
        &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
        &quot;location&quot;: { # Geographic location information stored in the image.
          &quot;altitude&quot;: 3.14, # The altitude stored in the image.
          &quot;latitude&quot;: 3.14, # The latitude stored in the image.
          &quot;longitude&quot;: 3.14, # The longitude stored in the image.
        },
        &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
        &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
        &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
        &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
        &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
        &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
        &quot;width&quot;: 42, # The width of the image in pixels.
      },
      &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
        &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
      },
      &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
      &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
      &quot;labels&quot;: { # A group of labels for the file.
        &quot;hidden&quot;: True or False, # Deprecated.
        &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
        &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
        &quot;starred&quot;: True or False, # Whether this file is starred by the user.
        &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
        &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
      },
      &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
      &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
      &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
      &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
      &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
      &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
      &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
      &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
        &quot;A String&quot;,
      ],
      &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
        { # Information about a Drive user.
          &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
          &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
          &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
          &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
          &quot;picture&quot;: { # The user&#x27;s profile picture.
            &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
          },
        },
      ],
      &quot;parents&quot;: [ # Collection of parent folders which contain this file.
          # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
        { # A reference to a file&#x27;s parent.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
          &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
          &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
          &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
          &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
        },
      ],
      &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
        &quot;A String&quot;,
      ],
      &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
        { # A permission for a file.
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
          &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
          &quot;domain&quot;: &quot;A String&quot;, # 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.
          &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
          &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
          &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
              # - They cannot be set on shared drive items
              # - 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
          &quot;id&quot;: &quot;A String&quot;, # 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.
          &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
          &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
          &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
            {
              &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
                &quot;A String&quot;,
              ],
              &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
              &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
              &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
                  # - file
                  # - member
              &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
                  # - organizer
                  # - fileOrganizer
                  # - writer
                  # - reader
            },
          ],
          &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
          &quot;role&quot;: &quot;A String&quot;, # 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
          &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
          &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
            {
              &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
                &quot;A String&quot;,
              ],
              &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
              &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
              &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
              &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
              # - user
              # - group
              # - domain
              # - anyone
          &quot;value&quot;: &quot;A String&quot;, # 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.
          &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
          &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
        },
      ],
      &quot;properties&quot;: [ # The list of properties.
        { # A key-value pair attached to a file that is either public or private to an application.
            # The following limits apply to file properties:
            # - Maximum of 100 properties total per file
            # - Maximum of 30 private properties per app
            # - Maximum of 30 public properties
            # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
          &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
          &quot;key&quot;: &quot;A String&quot;, # The key of this property.
          &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
          &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
          &quot;value&quot;: &quot;A String&quot;, # The value of this property.
          &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
        },
      ],
      &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
      &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
      &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
      &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
      &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
        &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
        &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
      },
      &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
        &quot;A String&quot;,
      ],
      &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
      &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
        &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
        &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
      },
      &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
      &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
      &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
      &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
      &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
        &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
        &quot;domain&quot;: &quot;A String&quot;, # 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.
        &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
        &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
        &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
            # - They cannot be set on shared drive items
            # - 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
        &quot;id&quot;: &quot;A String&quot;, # 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.
        &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
        &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
        &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
          {
            &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
              &quot;A String&quot;,
            ],
            &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
            &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
            &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
                # - file
                # - member
            &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
                # - organizer
                # - fileOrganizer
                # - writer
                # - reader
          },
        ],
        &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
        &quot;role&quot;: &quot;A String&quot;, # 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
        &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
        &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
          {
            &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
              &quot;A String&quot;,
            ],
            &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
            &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
            &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
            &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
            # - user
            # - group
            # - domain
            # - anyone
        &quot;value&quot;: &quot;A String&quot;, # 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.
        &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
        &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
      },
      &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
      &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
        &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
        &quot;height&quot;: 42, # The height of the video in pixels.
        &quot;width&quot;: 42, # The width of the video in pixels.
      },
      &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
      &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
      &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
    },
  ],
  &quot;kind&quot;: &quot;drive#fileList&quot;, # This is always drive#fileList.
  &quot;nextLink&quot;: &quot;A String&quot;, # A link to the next page of files.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of files. This will be absent if the end of the files 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.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(fileId, addParents=None, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, modifiedDateBehavior=None, newRevision=None, ocr=None, ocrLanguage=None, pinned=None, removeParents=None, setModifiedDate=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, updateViewedDate=None, useContentAsIndexableText=None)</code>
  <pre>Updates file metadata and/or content. This method supports patch semantics.

Args:
  fileId: string, The ID of the file to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}

  addParents: string, Comma-separated list of parent IDs to add.
  convert: boolean, This parameter is deprecated and has no function.
  enforceSingleParent: boolean, Deprecated. Adding files to multiple folders is no longer supported. Use shortcuts instead.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  modifiedDateBehavior: string, Determines the behavior in which modifiedDate is updated. This overrides setModifiedDate.
    Allowed values
      fromBody - Set modifiedDate to the value provided in the body of the request. No change if no value was provided.
      fromBodyIfNeeded - Set modifiedDate to the value provided in the body of the request depending on other contents of the update.
      fromBodyOrNow - Set modifiedDate to the value provided in the body of the request, or to the current time if no value was provided.
      noChange - Maintain the previous value of modifiedDate.
      now - Set modifiedDate to the current time.
      nowIfNeeded - Set modifiedDate to the current time depending on contents of the update.
  newRevision: boolean, Whether a blob upload should create a new revision. If false, the blob data in the current head revision is replaced. If true or not set, a new blob is created as head revision, and previous unpinned revisions are preserved for a short period of time. Pinned revisions are stored indefinitely, using additional storage quota, up to a maximum of 200 revisions. For details on how revisions are retained, see the Drive Help Center. Note that this field is ignored if there is no payload in the request.
  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
  pinned: boolean, Whether to pin the new revision. A file can have a maximum of 200 pinned revisions. Note that this field is ignored if there is no payload in the request.
  removeParents: string, Comma-separated list of parent IDs to remove.
  setModifiedDate: boolean, Whether to set the modified date using the value supplied in the request body. Setting this field to true is equivalent to modifiedDateBehavior=fromBodyOrNow, and false is equivalent to modifiedDateBehavior=now. To prevent any changes to the modified date set modifiedDateBehavior=noChange.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  timedTextLanguage: string, The language of the timed text.
  timedTextTrackName: string, The timed text track name.
  updateViewedDate: boolean, Whether to update the view date after successfully updating the file.
  useContentAsIndexableText: boolean, Whether to use the content as indexable text.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="touch">touch(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</code>
  <pre>Set the file&#x27;s updated time to the current server time.

Args:
  fileId: string, The ID of the file to update. (required)
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="trash">trash(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</code>
  <pre>Moves a file to the trash. The currently authenticated user must own the file or be at least a fileOrganizer on the parent for shared drive files. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.

Args:
  fileId: string, The ID of the file to trash. (required)
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="untrash">untrash(fileId, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None)</code>
  <pre>Restores a file from the trash. The currently authenticated user must own the file or be at least a fileOrganizer on the parent for shared drive files. Only the owner may untrash a file.

Args:
  fileId: string, The ID of the file to untrash. (required)
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, addParents=None, body=None, convert=None, enforceSingleParent=None, includePermissionsForView=None, media_body=None, media_mime_type=None, modifiedDateBehavior=None, newRevision=None, ocr=None, ocrLanguage=None, pinned=None, removeParents=None, setModifiedDate=None, supportsAllDrives=None, supportsTeamDrives=None, timedTextLanguage=None, timedTextTrackName=None, updateViewedDate=None, useContentAsIndexableText=None)</code>
  <pre>Updates file metadata and/or content.

Args:
  fileId: string, The ID of the file to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}

  addParents: string, Comma-separated list of parent IDs to add.
  convert: boolean, This parameter is deprecated and has no function.
  enforceSingleParent: boolean, Deprecated. Adding files to multiple folders is no longer supported. Use shortcuts instead.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  modifiedDateBehavior: string, Determines the behavior in which modifiedDate is updated. This overrides setModifiedDate.
    Allowed values
      fromBody - Set modifiedDate to the value provided in the body of the request. No change if no value was provided.
      fromBodyIfNeeded - Set modifiedDate to the value provided in the body of the request depending on other contents of the update.
      fromBodyOrNow - Set modifiedDate to the value provided in the body of the request, or to the current time if no value was provided.
      noChange - Maintain the previous value of modifiedDate.
      now - Set modifiedDate to the current time.
      nowIfNeeded - Set modifiedDate to the current time depending on contents of the update.
  newRevision: boolean, Whether a blob upload should create a new revision. If false, the blob data in the current head revision is replaced. If true or not set, a new blob is created as head revision, and previous unpinned revisions are preserved for a short period of time. Pinned revisions are stored indefinitely, using additional storage quota, up to a maximum of 200 revisions. For details on how revisions are retained, see the Drive Help Center. Note that this field is ignored if there is no payload in the request.
  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
  pinned: boolean, Whether to pin the new revision. A file can have a maximum of 200 pinned revisions. Note that this field is ignored if there is no payload in the request.
  removeParents: string, Comma-separated list of parent IDs to remove.
  setModifiedDate: boolean, Whether to set the modified date using the value supplied in the request body. Setting this field to true is equivalent to modifiedDateBehavior=fromBodyOrNow, and false is equivalent to modifiedDateBehavior=now. To prevent any changes to the modified date set modifiedDateBehavior=noChange.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  timedTextLanguage: string, The language of the timed text.
  timedTextTrackName: string, The timed text track name.
  updateViewedDate: boolean, Whether to update the view date after successfully updating the file.
  useContentAsIndexableText: boolean, Whether to use the content as indexable text.

Returns:
  An object of the form:

    { # The metadata for a file.
  &quot;alternateLink&quot;: &quot;A String&quot;, # A link for opening the file in a relevant Google editor or viewer.
  &quot;appDataContents&quot;: True or False, # Whether this file is in the Application Data folder.
  &quot;canComment&quot;: True or False, # Deprecated: use capabilities/canComment.
  &quot;canReadRevisions&quot;: True or False, # Deprecated: use capabilities/canReadRevisions.
  &quot;capabilities&quot;: { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAddChildren&quot;: True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
    &quot;canAddFolderFromAnotherDrive&quot;: True or False, # Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canAddMyDriveParent&quot;: True or False, # Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.
    &quot;canChangeCopyRequiresWriterPermission&quot;: True or False, # Whether the current user can change the copyRequiresWriterPermission restriction of this file.
    &quot;canChangeRestrictedDownload&quot;: True or False, # Deprecated
    &quot;canComment&quot;: True or False, # Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
    &quot;canDelete&quot;: True or False, # Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canDownload&quot;: True or False, # Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see canChangeCopyRequiresWriterPermission or canModifyContent.
    &quot;canListChildren&quot;: True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
    &quot;canModifyContent&quot;: True or False, # Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Whether the current user can modify restrictions on content of this file.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canMoveChildrenOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenOutOfDrive instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user&#x27;s access to the child and to the destination folder.
    &quot;canMoveChildrenWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveChildrenWithinDrive instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.
    &quot;canMoveItemOutOfTeamDrive&quot;: True or False, # Deprecated - use canMoveItemOutOfDrive instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.
    &quot;canMoveItemWithinTeamDrive&quot;: True or False, # Deprecated - use canMoveItemWithinDrive instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive instead.
    &quot;canReadDrive&quot;: True or False, # Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadRevisions&quot;: True or False, # Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
    &quot;canReadTeamDrive&quot;: True or False, # Deprecated - use canReadDrive instead.
    &quot;canRemoveChildren&quot;: True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use canDeleteChildren or canTrashChildren instead.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.
    &quot;canRename&quot;: True or False, # Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.
    &quot;canUntrash&quot;: True or False, # Whether the current user can restore this file from trash.
  },
  &quot;contentRestrictions&quot;: [ # Restrictions for accessing the content of the file. Only populated if such a restriction exists.
    { # A restriction for accessing the content of the file.
      &quot;readOnly&quot;: True or False, # Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.
      &quot;reason&quot;: &quot;A String&quot;, # Reason for why the content of the file is restricted. This is only mutable on requests that also set readOnly=true.
      &quot;restrictingUser&quot;: { # Information about a Drive user. # The user who set the content restriction. Only populated if readOnly is true.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
        &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
        &quot;picture&quot;: { # The user&#x27;s profile picture.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
        },
      },
      &quot;restrictionDate&quot;: &quot;A String&quot;, # The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.
      &quot;type&quot;: &quot;A String&quot;, # The type of the content restriction. Currently the only possible value is globalContentRestriction.
    },
  ],
  &quot;copyRequiresWriterPermission&quot;: True or False, # Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
  &quot;copyable&quot;: True or False, # Deprecated: use capabilities/canCopy.
  &quot;createdDate&quot;: &quot;A String&quot;, # Create time for this file (formatted RFC 3339 timestamp).
  &quot;defaultOpenWithLink&quot;: &quot;A String&quot;, # A link to open this file with the user&#x27;s default app for this file. Only populated when the drive.apps.readonly scope is used.
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;downloadUrl&quot;: &quot;A String&quot;, # Short lived download URL for the file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;driveId&quot;: &quot;A String&quot;, # ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;editable&quot;: True or False, # Deprecated: use capabilities/canEdit.
  &quot;embedLink&quot;: &quot;A String&quot;, # A link for embedding the file.
  &quot;etag&quot;: &quot;A String&quot;, # ETag of the file.
  &quot;explicitlyTrashed&quot;: True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the file in bytes. This field is populated for files with content stored in Google Drive and for files in Docs Editors; it is not populated for shortcut files.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for items in shared drives.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;hasAugmentedPermissions&quot;: True or False, # Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
  &quot;headRevisionId&quot;: &quot;A String&quot;, # The ID of the file&#x27;s head revision. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;iconLink&quot;: &quot;A String&quot;, # A link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
    &quot;aperture&quot;: 3.14, # The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # The color space of the photo.
    &quot;date&quot;: &quot;A String&quot;, # The date and time the photo was taken (EXIF format timestamp).
    &quot;exposureBias&quot;: 3.14, # The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # The lens used to create the photo.
    &quot;location&quot;: { # Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
    &quot;meteringMode&quot;: &quot;A String&quot;, # The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # The distance to the subject of the photo, in meters.
    &quot;whiteBalance&quot;: &quot;A String&quot;, # The white balance mode used to create the photo.
    &quot;width&quot;: 42, # The width of the image in pixels.
  },
  &quot;indexableText&quot;: { # Indexable text attributes for the file (can only be written)
    &quot;text&quot;: &quot;A String&quot;, # The text to be indexed for this file.
  },
  &quot;isAppAuthorized&quot;: True or False, # Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # The type of file. This is always drive#file.
  &quot;labels&quot;: { # A group of labels for the file.
    &quot;hidden&quot;: True or False, # Deprecated.
    &quot;modified&quot;: True or False, # Whether the file has been modified by this user.
    &quot;restricted&quot;: True or False, # Deprecated - use copyRequiresWriterPermission instead.
    &quot;starred&quot;: True or False, # Whether this file is starred by the user.
    &quot;trashed&quot;: True or False, # Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file. The trashed item is excluded from all files.list responses returned for any user who does not own the file. However, all users with access to the file can see the trashed item metadata in an API response. All users with access can copy, download, export, and share the file.
    &quot;viewed&quot;: True or False, # Whether this file has been viewed by this user.
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this file.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this file.
  &quot;lastViewedByMeDate&quot;: &quot;A String&quot;, # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
  &quot;markedViewedByMeDate&quot;: &quot;A String&quot;, # Deprecated.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content&#x27;s MIME type.
  &quot;modifiedByMeDate&quot;: &quot;A String&quot;, # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
  &quot;openWithLinks&quot;: { # A map of the id of each of the user&#x27;s apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Whether the file is owned by the current user. Not populated for items in shared drives.
  &quot;ownerNames&quot;: [ # Name(s) of the owner(s) of this file. Not populated for items in shared drives.
    &quot;A String&quot;,
  ],
  &quot;owners&quot;: [ # The owner(s) of this file. Not populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
  ],
  &quot;parents&quot;: [ # Collection of parent folders which contain this file.
      # If not specified as part of an insert request, the file will be placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file will inherit any discoverable parents of the source file. Update requests can also use the addParents and removeParents parameters to modify the parents list.
    { # A reference to a file&#x27;s parent.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the parent.
      &quot;isRoot&quot;: True or False, # Whether or not the parent is the root folder.
      &quot;kind&quot;: &quot;drive#parentReference&quot;, # This is always drive#parentReference.
      &quot;parentLink&quot;: &quot;A String&quot;, # A link to the parent.
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this reference.
    },
  ],
  &quot;permissionIds&quot;: [ # List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # The list of permissions for users with access to this file. Not populated for items in shared drives.
    { # A permission for a file.
      &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
        &quot;A String&quot;,
      ],
      &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
      &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;domain&quot;: &quot;A String&quot;, # 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.
      &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
      &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
      &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
          # - They cannot be set on shared drive items
          # - 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
      &quot;id&quot;: &quot;A String&quot;, # 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.
      &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
      &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
      &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
        {
          &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
              # - file
              # - member
          &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
              # - organizer
              # - fileOrganizer
              # - writer
              # - reader
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # 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
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
      &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
        {
          &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
            &quot;A String&quot;,
          ],
          &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
          # - user
          # - group
          # - domain
          # - anyone
      &quot;value&quot;: &quot;A String&quot;, # 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.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
      &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
    },
  ],
  &quot;properties&quot;: [ # The list of properties.
    { # A key-value pair attached to a file that is either public or private to an application.
        # The following limits apply to file properties:
        # - Maximum of 100 properties total per file
        # - Maximum of 30 private properties per app
        # - Maximum of 30 public properties
        # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
      &quot;etag&quot;: &quot;A String&quot;, # ETag of the property.
      &quot;key&quot;: &quot;A String&quot;, # The key of this property.
      &quot;kind&quot;: &quot;drive#property&quot;, # This is always drive#property.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link back to this property.
      &quot;value&quot;: &quot;A String&quot;, # The value of this property.
      &quot;visibility&quot;: &quot;A String&quot;, # The visibility of this property. Allowed values are PRIVATE and PUBLIC. (Default: PRIVATE). Private properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.
    },
  ],
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # The number of quota bytes used by this file.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this file.
  &quot;shareable&quot;: True or False, # Deprecated: use capabilities/canShare.
  &quot;shared&quot;: True or False, # Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeDate&quot;: &quot;A String&quot;, # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
  &quot;sharingUser&quot;: { # Information about a Drive user. # User that shared the item with the current user, if available.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;shortcutDetails&quot;: { # Shortcut file details. Only populated for shortcut files, which have the mimeType field set to application/vnd.google-apps.shortcut.
    &quot;targetId&quot;: &quot;A String&quot;, # The ID of the file that this shortcut points to.
    &quot;targetMimeType&quot;: &quot;A String&quot;, # The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target&#x27;s MIME type, captured when the shortcut is created.
  },
  &quot;spaces&quot;: [ # The list of spaces which contain the file. Supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated - use driveId instead.
  &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if a standard thumbnail cannot be generated.
    &quot;image&quot;: &quot;A String&quot;, # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
  },
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # A short-lived link to the file&#x27;s thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file&#x27;s content. If the file isn&#x27;t shared publicly, the URL returned in Files.thumbnailLink must be fetched using a credentialed request.
  &quot;thumbnailVersion&quot;: &quot;A String&quot;, # The thumbnail version for use in thumbnail cache invalidation.
  &quot;title&quot;: &quot;A String&quot;, # The title of this file. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the title is constant.
  &quot;trashedDate&quot;: &quot;A String&quot;, # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;userPermission&quot;: { # A permission for a file. # The permissions for the authenticated user on this file.
    &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
      &quot;A String&quot;,
    ],
    &quot;authKey&quot;: &quot;A String&quot;, # Deprecated.
    &quot;deleted&quot;: True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
    &quot;domain&quot;: &quot;A String&quot;, # 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.
    &quot;emailAddress&quot;: &quot;A String&quot;, # 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.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the permission.
    &quot;expirationDate&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
        # - They cannot be set on shared drive items
        # - 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
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;kind&quot;: &quot;drive#permission&quot;, # This is always drive#permission.
    &quot;name&quot;: &quot;A String&quot;, # The name for this permission.
    &quot;permissionDetails&quot;: [ # Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.
      {
        &quot;additionalRoles&quot;: [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # The ID of the item from which this permission is inherited. This is an output-only field.
        &quot;permissionType&quot;: &quot;A String&quot;, # The permission type for this user. While new values may be added in future, the following are currently possible:
            # - file
            # - member
        &quot;role&quot;: &quot;A String&quot;, # The primary role for this user. While new values may be added in the future, the following are currently possible:
            # - organizer
            # - fileOrganizer
            # - writer
            # - reader
      },
    ],
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the profile photo, if available.
    &quot;role&quot;: &quot;A String&quot;, # 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
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this permission.
    &quot;teamDrivePermissionDetails&quot;: [ # Deprecated - use permissionDetails instead.
      {
        &quot;additionalRoles&quot;: [ # Deprecated - use permissionDetails/additionalRoles instead.
          &quot;A String&quot;,
        ],
        &quot;inherited&quot;: True or False, # Deprecated - use permissionDetails/inherited instead.
        &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/inheritedFrom instead.
        &quot;role&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/role instead.
        &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated - use permissionDetails/permissionType instead.
      },
    ],
    &quot;type&quot;: &quot;A String&quot;, # The account type. Allowed values are:
        # - user
        # - group
        # - domain
        # - anyone
    &quot;value&quot;: &quot;A String&quot;, # 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.
    &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. published is the only supported value.
    &quot;withLink&quot;: True or False, # Whether the link is required for this permission.
  },
  &quot;version&quot;: &quot;A String&quot;, # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
  &quot;videoMediaMetadata&quot;: { # Metadata about video media. This will only be present for video types.
    &quot;durationMillis&quot;: &quot;A String&quot;, # The duration of the video in milliseconds.
    &quot;height&quot;: 42, # The height of the video in pixels.
    &quot;width&quot;: 42, # The width of the video in pixels.
  },
  &quot;webContentLink&quot;: &quot;A String&quot;, # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
  &quot;webViewLink&quot;: &quot;A String&quot;, # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive&#x27;s Website Hosting.
  &quot;writersCanShare&quot;: True or False, # Whether writers can share the document with other users. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="watch">watch(fileId, acknowledgeAbuse=None, body=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</code>
  <pre>Subscribe to changes on a file

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

{ # An notification channel used to watch for resource changes.
  &quot;address&quot;: &quot;A String&quot;, # The address where notifications are delivered for this channel.
  &quot;expiration&quot;: &quot;A String&quot;, # Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
  &quot;id&quot;: &quot;A String&quot;, # A UUID or similar unique string that identifies this channel.
  &quot;kind&quot;: &quot;api#channel&quot;, # Identifies this as a notification channel used to watch for changes to a resource, which is &quot;api#channel&quot;.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;, # Declares a new parameter by name.
  },
  &quot;payload&quot;: True or False, # A Boolean value to indicate whether payload is wanted. Optional.
  &quot;resourceId&quot;: &quot;A String&quot;, # An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
  &quot;resourceUri&quot;: &quot;A String&quot;, # A version-specific identifier for the watched resource.
  &quot;token&quot;: &quot;A String&quot;, # An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
  &quot;type&quot;: &quot;A String&quot;, # The type of delivery mechanism used for this channel. Valid values are &quot;web_hook&quot; (or &quot;webhook&quot;). Both values refer to a channel where Http requests are used to deliver messages.
}

  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  projection: string, This parameter is deprecated and has no function.
    Allowed values
      BASIC - Deprecated
      FULL - Deprecated
  revisionId: string, Specifies the Revision ID that should be downloaded. Ignored unless alt=media is specified.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  updateViewedDate: boolean, Deprecated: Use files.update with modifiedDateBehavior=noChange, updateViewedDate=true and an empty request body.

Returns:
  An object of the form:

    { # An notification channel used to watch for resource changes.
  &quot;address&quot;: &quot;A String&quot;, # The address where notifications are delivered for this channel.
  &quot;expiration&quot;: &quot;A String&quot;, # Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
  &quot;id&quot;: &quot;A String&quot;, # A UUID or similar unique string that identifies this channel.
  &quot;kind&quot;: &quot;api#channel&quot;, # Identifies this as a notification channel used to watch for changes to a resource, which is &quot;api#channel&quot;.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;, # Declares a new parameter by name.
  },
  &quot;payload&quot;: True or False, # A Boolean value to indicate whether payload is wanted. Optional.
  &quot;resourceId&quot;: &quot;A String&quot;, # An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
  &quot;resourceUri&quot;: &quot;A String&quot;, # A version-specific identifier for the watched resource.
  &quot;token&quot;: &quot;A String&quot;, # An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
  &quot;type&quot;: &quot;A String&quot;, # The type of delivery mechanism used for this channel. Valid values are &quot;web_hook&quot; (or &quot;webhook&quot;). Both values refer to a channel where Http requests are used to deliver messages.
}</pre>
</div>

<div class="method">
    <code class="details" id="watch_media">watch_media(fileId, acknowledgeAbuse=None, body=None, includePermissionsForView=None, projection=None, revisionId=None, supportsAllDrives=None, supportsTeamDrives=None, updateViewedDate=None)</code>
  <pre>Subscribe to changes on a file

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

{ # An notification channel used to watch for resource changes.
  &quot;address&quot;: &quot;A String&quot;, # The address where notifications are delivered for this channel.
  &quot;expiration&quot;: &quot;A String&quot;, # Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.
  &quot;id&quot;: &quot;A String&quot;, # A UUID or similar unique string that identifies this channel.
  &quot;kind&quot;: &quot;api#channel&quot;, # Identifies this as a notification channel used to watch for changes to a resource, which is &quot;api#channel&quot;.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;, # Declares a new parameter by name.
  },
  &quot;payload&quot;: True or False, # A Boolean value to indicate whether payload is wanted. Optional.
  &quot;resourceId&quot;: &quot;A String&quot;, # An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.
  &quot;resourceUri&quot;: &quot;A String&quot;, # A version-specific identifier for the watched resource.
  &quot;token&quot;: &quot;A String&quot;, # An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.
  &quot;type&quot;: &quot;A String&quot;, # The type of delivery mechanism used for this channel. Valid values are &quot;web_hook&quot; (or &quot;webhook&quot;). Both values refer to a channel where Http requests are used to deliver messages.
}

  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  projection: string, This parameter is deprecated and has no function.
    Allowed values
      BASIC - Deprecated
      FULL - Deprecated
  revisionId: string, Specifies the Revision ID that should be downloaded. Ignored unless alt=media is specified.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated use supportsAllDrives instead.
  updateViewedDate: boolean, Deprecated: Use files.update with modifiedDateBehavior=noChange, updateViewedDate=true and an empty request body.

Returns:
  The media object as a string.

    </pre>
</div>

</body></html>