<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_v3.html">Google Drive API</a> . <a href="drive_v3.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, enforceSingleParent=None, ignoreDefaultVisibility=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, ocrLanguage=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a copy of a file and applies any requested updates with patch semantics.</p>
<p class="toc_element">
  <code><a href="#create">create(body=None, enforceSingleParent=None, ignoreDefaultVisibility=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, media_body=None, media_mime_type=None, ocrLanguage=None, supportsAllDrives=None, supportsTeamDrives=None, useContentAsIndexableText=None, x__xgafv=None)</a></code></p>
<p class="firstline"> Creates a new file. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads). Apps creating shortcuts with `files.create` must specify the MIME type `application/vnd.google-apps.shortcut`. Apps should specify a file extension in the `name` property when inserting files with the API. For example, an operation to insert a JPEG file should specify something like `"name": "cat.jpg"` in the metadata. Subsequent `GET` requests include the read-only `fileExtension` property populated with the extension originally specified in the `title` property. When a Google Drive user requests to download a file, or when the file is downloaded through the sync client, Drive builds a full filename (with extension) based on the title. In cases where the extension is missing, Drive attempts to determine the extension based on the file's MIME type.</p>
<p class="toc_element">
  <code><a href="#delete">delete(fileId, enforceSingleParent=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</a></code></p>
<p class="firstline">Permanently deletes a file owned by the user without moving it to the trash. If the file belongs to a shared drive, the user must be an `organizer` on the parent folder. If the target is a folder, all descendants owned by the user are also deleted.</p>
<p class="toc_element">
  <code><a href="#emptyTrash">emptyTrash(driveId=None, enforceSingleParent=None, x__xgafv=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, x__xgafv=None)</a></code></p>
<p class="firstline">Exports a Google Workspace document to the requested MIME type and returns exported byte content. Note that the exported content is limited to 10MB.</p>
<p class="toc_element">
  <code><a href="#export_media">export_media(fileId, mimeType, x__xgafv=None)</a></code></p>
<p class="firstline">Exports a Google Workspace document to the requested MIME type and returns exported byte content. Note that the exported content is limited to 10MB.</p>
<p class="toc_element">
  <code><a href="#generateIds">generateIds(count=None, space=None, type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Generates a set of file IDs which can be provided in create or copy requests.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, acknowledgeAbuse=None, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</a></code></p>
<p class="firstline"> Gets a file's metadata or content by ID. If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/drive/api/reference/rest/v3/files/export) instead. For more information, see [Download & export files](/drive/api/guides/manage-downloads).</p>
<p class="toc_element">
  <code><a href="#get_media">get_media(fileId, acknowledgeAbuse=None, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</a></code></p>
<p class="firstline"> Gets a file's metadata or content by ID. If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/drive/api/reference/rest/v3/files/export) instead. For more information, see [Download & export files](/drive/api/guides/manage-downloads).</p>
<p class="toc_element">
  <code><a href="#list">list(corpora=None, corpus=None, driveId=None, includeItemsFromAllDrives=None, includeLabels=None, includePermissionsForView=None, includeTeamDriveItems=None, orderBy=None, pageSize=None, pageToken=None, q=None, spaces=None, supportsAllDrives=None, supportsTeamDrives=None, teamDriveId=None, x__xgafv=None)</a></code></p>
<p class="firstline"> Lists the user's files. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for files & folders](/drive/api/guides/search-files) guide. *Note:* This method returns *all* files by default, including trashed files. If you don't want trashed files to appear in the list, use the `trashed=false` query parameter to remove trashed files from the results.</p>
<p class="toc_element">
  <code><a href="#listLabels">listLabels(fileId, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the labels on a file.</p>
<p class="toc_element">
  <code><a href="#listLabels_next">listLabels_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#modifyLabels">modifyLabels(fileId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Modifies the set of labels applied to a file. Returns a list of the labels that were added or modified.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, addParents=None, body=None, enforceSingleParent=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, media_body=None, media_mime_type=None, ocrLanguage=None, removeParents=None, supportsAllDrives=None, supportsTeamDrives=None, useContentAsIndexableText=None, x__xgafv=None)</a></code></p>
<p class="firstline"> Updates a file's metadata and/or content. When calling this method, only populate fields in the request that you want to modify. When updating fields, some fields might be changed automatically, such as `modifiedDate`. This method supports patch semantics. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads).</p>
<p class="toc_element">
  <code><a href="#watch">watch(fileId, acknowledgeAbuse=None, body=None, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</a></code></p>
<p class="firstline">Subscribes to changes to 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, enforceSingleParent=None, ignoreDefaultVisibility=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, ocrLanguage=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</code>
  <pre>Creates a copy of a file and applies any requested updates with patch semantics.

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

{ # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}

  enforceSingleParent: boolean, Deprecated. Copying files into multiple folders is no longer supported. Use shortcuts instead.
  ignoreDefaultVisibility: boolean, Whether to ignore the domain&#x27;s default visibility settings for the created file. Domain administrators can choose to make all uploaded files visible to the domain by default; this parameter bypasses that behavior for the request. Permissions are still inherited from parent folders.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  keepRevisionForever: boolean, Whether to set the &#x27;keepForever&#x27; field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.
  ocrLanguage: string, A language hint for OCR processing during image import (ISO 639-1 code).
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="create">create(body=None, enforceSingleParent=None, ignoreDefaultVisibility=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, media_body=None, media_mime_type=None, ocrLanguage=None, supportsAllDrives=None, supportsTeamDrives=None, useContentAsIndexableText=None, x__xgafv=None)</code>
  <pre> Creates a new file. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads). Apps creating shortcuts with `files.create` must specify the MIME type `application/vnd.google-apps.shortcut`. Apps should specify a file extension in the `name` property when inserting files with the API. For example, an operation to insert a JPEG file should specify something like `&quot;name&quot;: &quot;cat.jpg&quot;` in the metadata. Subsequent `GET` requests include the read-only `fileExtension` property populated with the extension originally specified in the `title` property. When a Google Drive user requests to download a file, or when the file is downloaded through the sync client, Drive builds a full filename (with extension) based on the title. In cases where the extension is missing, Drive attempts to determine the extension based on the file&#x27;s MIME type.

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

{ # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}

  enforceSingleParent: boolean, Deprecated. Creating files in multiple folders is no longer supported.
  ignoreDefaultVisibility: boolean, Whether to ignore the domain&#x27;s default visibility settings for the created file. Domain administrators can choose to make all uploaded files visible to the domain by default; this parameter bypasses that behavior for the request. Permissions are still inherited from parent folders.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  keepRevisionForever: boolean, Whether to set the &#x27;keepForever&#x27; field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.
  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.
  ocrLanguage: string, A language hint for OCR processing during image import (ISO 639-1 code).
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
  useContentAsIndexableText: boolean, Whether to use the uploaded content as indexable text.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. 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, x__xgafv=None)</code>
  <pre>Permanently deletes a file owned by the user without moving it to the trash. If the file belongs to a shared drive, the user must be an `organizer` on the parent folder. If the target is a folder, all descendants owned by the user are also deleted.

Args:
  fileId: string, The ID of the file. (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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

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

Args:
  driveId: string, If set, empties the trash of the provided shared drive.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  mimeType: string, Required. The MIME type of the format requested for this export. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  mimeType: string, Required. The MIME type of the format requested for this export. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

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

Args:
  count: integer, The 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;)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of generated file IDs which can be provided in create 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;, # Identifies what kind of resource this is. Value: the fixed string `&quot;drive#generatedIds&quot;`.
  &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, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</code>
  <pre> Gets a file&#x27;s metadata or content by ID. If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/drive/api/reference/rest/v3/files/export) instead. For more information, see [Download &amp; export files](/drive/api/guides/manage-downloads).

Args:
  fileId: string, The ID of the file. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when alt=media.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="get_media">get_media(fileId, acknowledgeAbuse=None, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</code>
  <pre> Gets a file&#x27;s metadata or content by ID. If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/drive/api/reference/rest/v3/files/export) instead. For more information, see [Download &amp; export files](/drive/api/guides/manage-downloads).

Args:
  fileId: string, The ID of the file. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when alt=media.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="list">list(corpora=None, corpus=None, driveId=None, includeItemsFromAllDrives=None, includeLabels=None, includePermissionsForView=None, includeTeamDriveItems=None, orderBy=None, pageSize=None, pageToken=None, q=None, spaces=None, supportsAllDrives=None, supportsTeamDrives=None, teamDriveId=None, x__xgafv=None)</code>
  <pre> Lists the user&#x27;s files. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for files &amp; folders](/drive/api/guides/search-files) guide. *Note:* This method returns *all* files by default, including trashed files. If you don&#x27;t want trashed files to appear in the list, use the `trashed=false` query parameter to remove trashed files from the results.

Args:
  corpora: string, Bodies of items (files/documents) to which the query applies. Supported bodies are &#x27;user&#x27;, &#x27;domain&#x27;, &#x27;drive&#x27;, and &#x27;allDrives&#x27;. Prefer &#x27;user&#x27; or &#x27;drive&#x27; to &#x27;allDrives&#x27; for efficiency. By default, corpora is set to &#x27;user&#x27;. However, this can change depending on the filter set through the &#x27;q&#x27; parameter.
  corpus: string, Deprecated: The source of files to list. Use &#x27;corpora&#x27; instead.
    Allowed values
      domain - Files shared to the user&#x27;s domain.
      user - Files owned by or shared to the user.
  driveId: string, ID of the shared drive to search.
  includeItemsFromAllDrives: boolean, Whether both My Drive and shared drive items should be included in results.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  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.
  orderBy: string, A comma-separated list of sort keys. Valid keys are &#x27;createdTime&#x27;, &#x27;folder&#x27;, &#x27;modifiedByMeTime&#x27;, &#x27;modifiedTime&#x27;, &#x27;name&#x27;, &#x27;name_natural&#x27;, &#x27;quotaBytesUsed&#x27;, &#x27;recency&#x27;, &#x27;sharedWithMeTime&#x27;, &#x27;starred&#x27;, and &#x27;viewedByMeTime&#x27;. Each key sorts ascending by default, but can be reversed with the &#x27;desc&#x27; modifier. Example usage: ?orderBy=folder,modifiedTime desc,name.
  pageSize: 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.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of &#x27;nextPageToken&#x27; from the previous response.
  q: string, A query for filtering the file results. See the &quot;Search for files &amp; folders&quot; guide for supported syntax.
  spaces: string, A comma-separated list of spaces to query within the corpora. Supported values are &#x27;drive&#x27; and &#x27;appDataFolder&#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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of files.
  &quot;files&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. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
      &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
          # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
      },
      &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
        &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
        &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
        &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
        &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
        &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
        &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
        &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
        &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
        &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
        &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
        &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
        &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
        &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
        &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
        &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
        &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
        &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
        &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
        &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
        &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
        &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
        &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
        &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
        &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
        &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
        &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
      },
      &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
        &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
        &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
          &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
          &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
        },
      },
      &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
          &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
            &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
            &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
            &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
            &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
            &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
            &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
          },
          &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
      &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
      &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
      &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
      &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
      &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
      &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
      &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
      &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
      &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
      &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
        &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
        &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
        &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
        &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
        &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
        &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
        &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
        &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
        &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
        &quot;height&quot;: 42, # Output only. The height of the image in pixels.
        &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
        &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
        &quot;location&quot;: { # Output only. Geographic location information stored in the image.
          &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
          &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
          &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
        },
        &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
        &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
        &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
        &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
        &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
        &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
        &quot;width&quot;: 42, # Output only. The width of the image in pixels.
      },
      &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
      &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
      &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
        &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
          { # Representation of label and label fields.
            &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
              &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
                &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
                  &quot;A String&quot;,
                ],
                &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
                &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
                  &quot;A String&quot;,
                ],
                &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
                &quot;selection&quot;: [ # Only present if `valueType` is `selection`
                  &quot;A String&quot;,
                ],
                &quot;text&quot;: [ # Only present if `valueType` is `text`.
                  &quot;A String&quot;,
                ],
                &quot;user&quot;: [ # Only present if `valueType` is `user`.
                  { # Information about a Drive user.
                    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
                  },
                ],
                &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
              },
            },
            &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
            &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
          },
        ],
      },
      &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
        &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
        &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
      },
      &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
      &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
      &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
      &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
      &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
      &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
      &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
      &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
        { # Information about a Drive user.
          &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
          &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
          &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
          &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
          &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
          &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
        },
      ],
      &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
        &quot;A String&quot;,
      ],
      &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
        &quot;A String&quot;,
      ],
      &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
        { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
          &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
          &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
          &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
          &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
          &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
          &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
          &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
          &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
          &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
          &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
              &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
              &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
            },
          ],
          &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
          &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
          &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
            {
              &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
              &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
              &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
              &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
          &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
        },
      ],
      &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
          # Entries with null values are cleared in update and copy requests.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
      &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
      &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
      &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
      &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
      &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
      },
      &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
      &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
        &quot;A String&quot;,
      ],
      &quot;starred&quot;: True or False, # Whether the user has starred the file.
      &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
      &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
      &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, and other users cannot see files in the owner&#x27;s trash.
      &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
      &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
      &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
        &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
        &quot;height&quot;: 42, # Output only. The height of the video in pixels.
        &quot;width&quot;: 42, # Output only. The width of the video in pixels.
      },
      &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
      &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
      &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
      &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
      &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
      &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
    },
  ],
  &quot;incompleteSearch&quot;: True or False, # Whether the search process was incomplete. If true, then some search results might be missing, since all documents were not searched. This can occur when searching multiple drives with the &#x27;allDrives&#x27; corpora, but all corpora couldn&#x27;t be searched. When this happens, it&#x27;s suggested that clients narrow their query by choosing a different corpus such as &#x27;user&#x27; or &#x27;drive&#x27;.
  &quot;kind&quot;: &quot;drive#fileList&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;drive#fileList&quot;`.
  &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. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.
}</pre>
</div>

<div class="method">
    <code class="details" id="listLabels">listLabels(fileId, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the labels on a file.

Args:
  fileId: string, The ID for the file. (required)
  maxResults: integer, The maximum number of labels to return per page. When not set, defaults to 100.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of &#x27;nextPageToken&#x27; from the previous response.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of labels applied to a file.
  &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelList
  &quot;labels&quot;: [ # The list of labels.
    { # Representation of label and label fields.
      &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
        &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
          &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
          &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
            &quot;A String&quot;,
          ],
          &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
          &quot;selection&quot;: [ # Only present if `valueType` is `selection`
            &quot;A String&quot;,
          ],
          &quot;text&quot;: [ # Only present if `valueType` is `text`.
            &quot;A String&quot;,
          ],
          &quot;user&quot;: [ # Only present if `valueType` is `user`.
            { # Information about a Drive user.
              &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
              &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
              &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
              &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
              &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
              &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
            },
          ],
          &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
      &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
      &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of labels. This field will be absent if the end of the 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. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.
}</pre>
</div>

<div class="method">
    <code class="details" id="listLabels_next">listLabels_next()</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="list_next">list_next()</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="modifyLabels">modifyLabels(fileId, body=None, x__xgafv=None)</code>
  <pre>Modifies the set of labels applied to a file. Returns a list of the labels that were added or modified.

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

{ # A request to modify the set of labels on a file. This request may contain many modifications that will either all succeed or all fail atomically.
  &quot;kind&quot;: &quot;A String&quot;, # This is always drive#modifyLabelsRequest.
  &quot;labelModifications&quot;: [ # The list of modifications to apply to the labels on the file.
    { # A modification to a label on a file. A LabelModification can be used to apply a label to a file, update an existing label on a file, or remove a label from a file.
      &quot;fieldModifications&quot;: [ # The list of modifications to this label&#x27;s fields.
        { # A modification to a label&#x27;s field.
          &quot;fieldId&quot;: &quot;A String&quot;, # The ID of the field to be modified.
          &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelFieldModification.
          &quot;setDateValues&quot;: [ # Replaces the value of a dateString Field with these new values. The string must be in the RFC 3339 full-date format: YYYY-MM-DD.
            &quot;A String&quot;,
          ],
          &quot;setIntegerValues&quot;: [ # Replaces the value of an `integer` field with these new values.
            &quot;A String&quot;,
          ],
          &quot;setSelectionValues&quot;: [ # Replaces a `selection` field with these new values.
            &quot;A String&quot;,
          ],
          &quot;setTextValues&quot;: [ # Sets the value of a `text` field.
            &quot;A String&quot;,
          ],
          &quot;setUserValues&quot;: [ # Replaces a `user` field with these new values. The values must be valid email addresses.
            &quot;A String&quot;,
          ],
          &quot;unsetValues&quot;: True or False, # Unsets the values for this field.
        },
      ],
      &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelModification.
      &quot;labelId&quot;: &quot;A String&quot;, # The ID of the label to modify.
      &quot;removeLabel&quot;: True or False, # If true, the label will be removed from the file.
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to a ModifyLabels request. This contains only those labels which were added or updated by the request.
  &quot;kind&quot;: &quot;A String&quot;, # This is always drive#modifyLabelsResponse
  &quot;modifiedLabels&quot;: [ # The list of labels which were added or updated by the request.
    { # Representation of label and label fields.
      &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
        &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
          &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
          &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
            &quot;A String&quot;,
          ],
          &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
          &quot;selection&quot;: [ # Only present if `valueType` is `selection`
            &quot;A String&quot;,
          ],
          &quot;text&quot;: [ # Only present if `valueType` is `text`.
            &quot;A String&quot;,
          ],
          &quot;user&quot;: [ # Only present if `valueType` is `user`.
            { # Information about a Drive user.
              &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
              &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
              &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
              &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
              &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
              &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
            },
          ],
          &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
      &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
      &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, addParents=None, body=None, enforceSingleParent=None, includeLabels=None, includePermissionsForView=None, keepRevisionForever=None, media_body=None, media_mime_type=None, ocrLanguage=None, removeParents=None, supportsAllDrives=None, supportsTeamDrives=None, useContentAsIndexableText=None, x__xgafv=None)</code>
  <pre> Updates a file&#x27;s metadata and/or content. When calling this method, only populate fields in the request that you want to modify. When updating fields, some fields might be changed automatically, such as `modifiedDate`. This method supports patch semantics. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads).

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

{ # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}

  addParents: string, A comma-separated list of parent IDs to add.
  enforceSingleParent: boolean, Deprecated: Adding files to multiple folders is no longer supported. Use shortcuts instead.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  includePermissionsForView: string, Specifies which additional view&#x27;s permissions to include in the response. Only &#x27;published&#x27; is supported.
  keepRevisionForever: boolean, Whether to set the &#x27;keepForever&#x27; field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.
  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.
  ocrLanguage: string, A language hint for OCR processing during image import (ISO 639-1 code).
  removeParents: string, A comma-separated list of parent IDs to remove.
  supportsAllDrives: boolean, Whether the requesting application supports both My Drives and shared drives.
  supportsTeamDrives: boolean, Deprecated: Use `supportsAllDrives` instead.
  useContentAsIndexableText: boolean, Whether to use the uploaded content as indexable text.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.
  &quot;appProperties&quot;: { # A collection of arbitrary key-value pairs which are private to the requesting app.
      # Entries with null values are cleared in update and copy requests. These 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;a_key&quot;: &quot;A String&quot;,
  },
  &quot;capabilities&quot;: { # Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
    &quot;canAcceptOwnership&quot;: True or False, # Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.
    &quot;canAddChildren&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. 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, # Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.
    &quot;canChangeSecurityUpdateEnabled&quot;: True or False, # Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.
    &quot;canChangeViewersCanCopyContent&quot;: True or False, # Deprecated: Output only.
    &quot;canComment&quot;: True or False, # Output only. Whether the current user can comment on this file.
    &quot;canCopy&quot;: True or False, # Output only. 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, # Output only. Whether the current user can delete this file.
    &quot;canDeleteChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can download this file.
    &quot;canEdit&quot;: True or False, # Output only. 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, # Output only. 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, # Output only. Whether the current user can modify the content of this file.
    &quot;canModifyContentRestriction&quot;: True or False, # Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.
    &quot;canModifyEditorContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.
    &quot;canModifyLabels&quot;: True or False, # Output only. Whether the current user can modify the labels on the file.
    &quot;canModifyOwnerContentRestriction&quot;: True or False, # Output only. Whether the current user can add or modify content restrictions which are owner restricted.
    &quot;canMoveChildrenOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenOutOfDrive` instead.
    &quot;canMoveChildrenWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveChildrenWithinDrive` instead.
    &quot;canMoveItemIntoTeamDrive&quot;: True or False, # Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemOutOfDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemOutOfDrive` instead.
    &quot;canMoveItemWithinDrive&quot;: True or False, # Output only. 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: Output only. Use `canMoveItemWithinDrive` instead.
    &quot;canMoveTeamDriveItem&quot;: True or False, # Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.
    &quot;canReadDrive&quot;: True or False, # Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.
    &quot;canReadLabels&quot;: True or False, # Output only. Whether the current user can read the labels on the file.
    &quot;canReadRevisions&quot;: True or False, # Output only. 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: Output only. Use `canReadDrive` instead.
    &quot;canRemoveChildren&quot;: True or False, # Output only. 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;canRemoveContentRestriction&quot;: True or False, # Output only. Whether there is a content restriction on the file that can be removed by the current user.
    &quot;canRemoveMyDriveParent&quot;: True or False, # Output only. 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, # Output only. Whether the current user can rename this file.
    &quot;canShare&quot;: True or False, # Output only. Whether the current user can modify the sharing settings for this file.
    &quot;canTrash&quot;: True or False, # Output only. Whether the current user can move this file to trash.
    &quot;canTrashChildren&quot;: True or False, # Output only. 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, # Output only. Whether the current user can restore this file from trash.
  },
  &quot;contentHints&quot;: { # Additional information about the content of the file. These fields are never populated in responses.
    &quot;indexableText&quot;: &quot;A String&quot;, # Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.
    &quot;thumbnail&quot;: { # A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.
      &quot;image&quot;: &quot;A String&quot;, # The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the thumbnail.
    },
  },
  &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;ownerRestricted&quot;: True or False, # Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.
      &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. # Output only. The user who set the content restriction. Only populated if `readOnly` is true.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      },
      &quot;restrictionTime&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;, # Output only. 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;createdTime&quot;: &quot;A String&quot;, # The time at which the file was created (RFC 3339 date-time).
  &quot;description&quot;: &quot;A String&quot;, # A short description of the file.
  &quot;driveId&quot;: &quot;A String&quot;, # Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.
  &quot;explicitlyTrashed&quot;: True or False, # Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
  &quot;exportLinks&quot;: { # Output only. Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;fileExtension&quot;: &quot;A String&quot;, # Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.
  &quot;folderColorRgb&quot;: &quot;A String&quot;, # The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.
  &quot;fullFileExtension&quot;: &quot;A String&quot;, # Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as &quot;tar.gz&quot;. This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.
  &quot;hasAugmentedPermissions&quot;: True or False, # Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.
  &quot;hasThumbnail&quot;: True or False, # Output only. 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;, # Output only. The ID of the file&#x27;s head revision. This is currently only available for files with binary content in Google Drive.
  &quot;iconLink&quot;: &quot;A String&quot;, # Output only. A static, unauthenticated link to the file&#x27;s icon.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the file.
  &quot;imageMediaMetadata&quot;: { # Output only. Additional metadata about image media, if available.
    &quot;aperture&quot;: 3.14, # Output only. The aperture used to create the photo (f-number).
    &quot;cameraMake&quot;: &quot;A String&quot;, # Output only. The make of the camera used to create the photo.
    &quot;cameraModel&quot;: &quot;A String&quot;, # Output only. The model of the camera used to create the photo.
    &quot;colorSpace&quot;: &quot;A String&quot;, # Output only. The color space of the photo.
    &quot;exposureBias&quot;: 3.14, # Output only. The exposure bias of the photo (APEX value).
    &quot;exposureMode&quot;: &quot;A String&quot;, # Output only. The exposure mode used to create the photo.
    &quot;exposureTime&quot;: 3.14, # Output only. The length of the exposure, in seconds.
    &quot;flashUsed&quot;: True or False, # Output only. Whether a flash was used to create the photo.
    &quot;focalLength&quot;: 3.14, # Output only. The focal length used to create the photo, in millimeters.
    &quot;height&quot;: 42, # Output only. The height of the image in pixels.
    &quot;isoSpeed&quot;: 42, # Output only. The ISO speed used to create the photo.
    &quot;lens&quot;: &quot;A String&quot;, # Output only. The lens used to create the photo.
    &quot;location&quot;: { # Output only. Geographic location information stored in the image.
      &quot;altitude&quot;: 3.14, # Output only. The altitude stored in the image.
      &quot;latitude&quot;: 3.14, # Output only. The latitude stored in the image.
      &quot;longitude&quot;: 3.14, # Output only. The longitude stored in the image.
    },
    &quot;maxApertureValue&quot;: 3.14, # Output only. 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;, # Output only. The metering mode used to create the photo.
    &quot;rotation&quot;: 42, # Output only. The number of clockwise 90 degree rotations applied from the image&#x27;s original orientation.
    &quot;sensor&quot;: &quot;A String&quot;, # Output only. The type of sensor used to create the photo.
    &quot;subjectDistance&quot;: 42, # Output only. The distance to the subject of the photo, in meters.
    &quot;time&quot;: &quot;A String&quot;, # Output only. The date and time the photo was taken (EXIF DateTime).
    &quot;whiteBalance&quot;: &quot;A String&quot;, # Output only. The white balance mode used to create the photo.
    &quot;width&quot;: 42, # Output only. The width of the image in pixels.
  },
  &quot;isAppAuthorized&quot;: True or False, # Output only. Whether the file was created or opened by the requesting app.
  &quot;kind&quot;: &quot;drive#file&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#file&quot;`.
  &quot;labelInfo&quot;: { # Output only. An overview of the labels on the file.
    &quot;labels&quot;: [ # Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.
      { # Representation of label and label fields.
        &quot;fields&quot;: { # A map of the fields on the label, keyed by the field&#x27;s ID.
          &quot;a_key&quot;: { # Representation of field, which is a typed key-value pair.
            &quot;dateString&quot;: [ # Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # The identifier of this label field.
            &quot;integer&quot;: [ # Only present if `valueType` is `integer`.
              &quot;A String&quot;,
            ],
            &quot;kind&quot;: &quot;A String&quot;, # This is always drive#labelField.
            &quot;selection&quot;: [ # Only present if `valueType` is `selection`
              &quot;A String&quot;,
            ],
            &quot;text&quot;: [ # Only present if `valueType` is `text`.
              &quot;A String&quot;,
            ],
            &quot;user&quot;: [ # Only present if `valueType` is `user`.
              { # Information about a Drive user.
                &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
                &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
                &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
              },
            ],
            &quot;valueType&quot;: &quot;A String&quot;, # The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # The ID of the label.
        &quot;kind&quot;: &quot;A String&quot;, # This is always drive#label
        &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the label.
      },
    ],
  },
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # Output only. The last user to modify the file.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;linkShareMetadata&quot;: { # Contains details about the link URLs that clients are using to refer to this item.
    &quot;securityUpdateEligible&quot;: True or False, # Output only. Whether the file is eligible for security update.
    &quot;securityUpdateEnabled&quot;: True or False, # Output only. Whether the security update is enabled for this file.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.
  &quot;modifiedByMe&quot;: True or False, # Output only. Whether the file has been modified by this user.
  &quot;modifiedByMeTime&quot;: &quot;A String&quot;, # The last time the file was modified by the user (RFC 3339 date-time).
  &quot;modifiedTime&quot;: &quot;A String&quot;, # he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.
  &quot;name&quot;: &quot;A String&quot;, # The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.
  &quot;ownedByMe&quot;: True or False, # Output only. Whether the user owns the file. Not populated for items in shared drives.
  &quot;owners&quot;: [ # Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn&#x27;t populated for items in shared drives.
    { # Information about a Drive user.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
      &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
      &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
    },
  ],
  &quot;parents&quot;: [ # The IDs of the parent folders which contain the file. If not specified as part of a create request, the file is placed directly in the user&#x27;s My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parents of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.
    &quot;A String&quot;,
  ],
  &quot;permissionIds&quot;: [ # Output only. List of permission IDs for users with access to this file.
    &quot;A String&quot;,
  ],
  &quot;permissions&quot;: [ # Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.
    { # A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.
      &quot;allowFileDiscovery&quot;: True or False, # Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.
      &quot;deleted&quot;: True or False, # Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The &quot;pretty&quot; name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User&#x27;s full name, as defined for their Google account, such as &quot;Joe Smith.&quot; * `group` - Name of the Google Group, such as &quot;The Company Administrators.&quot; * `domain` - String domain name, such as &quot;thecompany.com.&quot; * `anyone` - No `displayName` is present.
      &quot;domain&quot;: &quot;A String&quot;, # The domain to which this permission refers.
      &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user or group to which this permission refers.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.
      &quot;kind&quot;: &quot;drive#permission&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#permission&quot;`.
      &quot;pendingOwner&quot;: True or False, # Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.
      &quot;permissionDetails&quot;: [ # Output only. 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;inherited&quot;: True or False, # Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Output only. The ID of the item from which this permission is inherited. This is an output-only field.
          &quot;permissionType&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
        },
      ],
      &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
      &quot;role&quot;: &quot;A String&quot;, # The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`
      &quot;teamDrivePermissionDetails&quot;: [ # Output only. Deprecated: Output only. Use `permissionDetails` instead.
        {
          &quot;inherited&quot;: True or False, # Deprecated: Output only. Use `permissionDetails/inherited` instead.
          &quot;inheritedFrom&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.
          &quot;role&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/role` instead.
          &quot;teamDrivePermissionType&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `permissionDetails/permissionType` instead.
        },
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn&#x27;t extra information required for an `anyone` type.
      &quot;view&quot;: &quot;A String&quot;, # Indicates the view for this permission. Only populated for permissions that belong to a view. &#x27;published&#x27; is the only supported value.
    },
  ],
  &quot;properties&quot;: { # A collection of arbitrary key-value pairs which are visible to all apps.
      # Entries with null values are cleared in update and copy requests.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;quotaBytesUsed&quot;: &quot;A String&quot;, # Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.
  &quot;resourceKey&quot;: &quot;A String&quot;, # Output only. A key needed to access the item via a shared link.
  &quot;sha1Checksum&quot;: &quot;A String&quot;, # Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;sha256Checksum&quot;: &quot;A String&quot;, # Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.
  &quot;shared&quot;: True or False, # Output only. Whether the file has been shared. Not populated for items in shared drives.
  &quot;sharedWithMeTime&quot;: &quot;A String&quot;, # The time at which the file was shared with the user, if applicable (RFC 3339 date-time).
  &quot;sharingUser&quot;: { # Information about a Drive user. # Output only. The user who shared the file with the requesting user, if applicable.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &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;, # Output only. 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;targetResourceKey&quot;: &quot;A String&quot;, # Output only. The ResourceKey for the target file.
  },
  &quot;size&quot;: &quot;A String&quot;, # Output only. Size in bytes of blobs and first party editor files. Won&#x27;t be populated for files that have no size, like shortcuts and folders.
  &quot;spaces&quot;: [ # Output only. The list of spaces which contain the file. The currently supported values are &#x27;drive&#x27;, &#x27;appDataFolder&#x27; and &#x27;photos&#x27;.
    &quot;A String&quot;,
  ],
  &quot;starred&quot;: True or False, # Whether the user has starred the file.
  &quot;teamDriveId&quot;: &quot;A String&quot;, # Deprecated: Output only. Use `driveId` instead.
  &quot;thumbnailLink&quot;: &quot;A String&quot;, # Output only. A short-lived link to the file&#x27;s thumbnail, if available. 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;, # Output only. The thumbnail version for use in thumbnail cache invalidation.
  &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, and other users cannot see files in the owner&#x27;s trash.
  &quot;trashedTime&quot;: &quot;A String&quot;, # The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.
  &quot;trashingUser&quot;: { # Information about a Drive user. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. A link to the user&#x27;s profile photo, if available.
  },
  &quot;version&quot;: &quot;A String&quot;, # Output only. 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 user.
  &quot;videoMediaMetadata&quot;: { # Output only. Additional metadata about video media. This may not be available immediately upon upload.
    &quot;durationMillis&quot;: &quot;A String&quot;, # Output only. The duration of the video in milliseconds.
    &quot;height&quot;: 42, # Output only. The height of the video in pixels.
    &quot;width&quot;: 42, # Output only. The width of the video in pixels.
  },
  &quot;viewedByMe&quot;: True or False, # Output only. Whether the file has been viewed by this user.
  &quot;viewedByMeTime&quot;: &quot;A String&quot;, # The last time the file was viewed by the user (RFC 3339 date-time).
  &quot;viewersCanCopyContent&quot;: True or False, # Deprecated: Use `copyRequiresWriterPermission` instead.
  &quot;webContentLink&quot;: &quot;A String&quot;, # Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.
  &quot;webViewLink&quot;: &quot;A String&quot;, # Output only. A link for opening the file in a relevant Google editor or viewer in a browser.
  &quot;writersCanShare&quot;: True or False, # Whether users with only `writer` permission can modify the file&#x27;s permissions. Not populated for items in shared drives.
}</pre>
</div>

<div class="method">
    <code class="details" id="watch">watch(fileId, acknowledgeAbuse=None, body=None, includeLabels=None, includePermissionsForView=None, supportsAllDrives=None, supportsTeamDrives=None, x__xgafv=None)</code>
  <pre>Subscribes to changes to a file.

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

{ # A 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 `api#channel`.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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.
}

  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when alt=media.
  includeLabels: string, A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A 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 `api#channel`.
  &quot;params&quot;: { # Additional parameters controlling delivery channel behavior. Optional.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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.
}</pre>
</div>

</body></html>