<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="drive_v2.html">Drive API</a> . <a href="drive_v2.changes.html">changes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(changeId, supportsTeamDrives=None, teamDriveId=None)</a></code></p>
<p class="firstline">Gets a specific change.</p>
<p class="toc_element">
  <code><a href="#getStartPageToken">getStartPageToken(supportsTeamDrives=None, teamDriveId=None)</a></code></p>
<p class="firstline">Gets the starting pageToken for listing future changes.</p>
<p class="toc_element">
  <code><a href="#list">list(includeSubscribed=None, includeDeleted=None, includeTeamDriveItems=None, pageToken=None, supportsTeamDrives=None, maxResults=None, startChangeId=None, spaces=None, teamDriveId=None, includeCorpusRemovals=None)</a></code></p>
<p class="firstline">Lists the changes for a user or Team Drive.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#watch">watch(body, supportsTeamDrives=None, spaces=None, startChangeId=None, pageToken=None, includeSubscribed=None, includeDeleted=None, maxResults=None, teamDriveId=None, includeTeamDriveItems=None, includeCorpusRemovals=None)</a></code></p>
<p class="firstline">Subscribe to changes for a user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(changeId, supportsTeamDrives=None, teamDriveId=None)</code>
  <pre>Gets a specific change.

Args:
  changeId: string, The ID of the change. (required)
  supportsTeamDrives: boolean, Whether the requesting application supports Team Drives.
  teamDriveId: string, The Team Drive from which the change will be returned.

Returns:
  An object of the form:

    { # Representation of a change to a file or Team Drive.
    "teamDrive": { # Representation of a Team Drive. # The updated state of the Team Drive. Present if the type is teamDrive, the user is still a member of the Team Drive, and the Team Drive has not been deleted.
      "kind": "drive#teamDrive", # This is always drive#teamDrive
      "backgroundImageLink": "A String", # A short-lived link to this Team Drive's background image.
      "name": "A String", # The name of this Team Drive.
      "themeId": "A String", # The ID of the theme from which the background image and color will be set. The set of possible teamDriveThemes can be retrieved from a drive.about.get response. When not specified on a drive.teamdrives.insert request, a random theme is chosen from which the background image and color are set. This is a write-only field; it can only be set on requests that don't set colorRgb or backgroundImageFile.
      "colorRgb": "A String", # The color of this Team Drive as an RGB hex string. It can only be set on a drive.teamdrives.update request that does not set themeId.
      "capabilities": { # Capabilities the current user has on this Team Drive.
        "canReadRevisions": True or False, # Whether the current user can read the revisions resource of files in this Team Drive.
        "canCopy": True or False, # Whether the current user can copy files in this Team Drive.
        "canRename": True or False, # Whether the current user can rename files or folders in this Team Drive.
        "canListChildren": True or False, # Whether the current user can list the children of folders in this Team Drive.
        "canShare": True or False, # Whether the current user can share files or folders in this Team Drive.
        "canManageMembers": True or False, # Whether the current user can add members to this Team Drive or remove them or change their role.
        "canDownload": True or False, # Whether the current user can download files in this Team Drive.
        "canComment": True or False, # Whether the current user can comment on files in this Team Drive.
        "canChangeTeamDriveBackground": True or False, # Whether the current user can change the background of this Team Drive.
        "canDeleteTeamDrive": True or False, # Whether the current user can delete this Team Drive. Attempting to delete the Team Drive may still fail if there are untrashed items inside the Team Drive.
        "canRenameTeamDrive": True or False, # Whether the current user can rename this Team Drive.
        "canRemoveChildren": True or False, # Whether the current user can remove children from folders in this Team Drive.
        "canAddChildren": True or False, # Whether the current user can add children to folders in this Team Drive.
        "canEdit": True or False, # Whether the current user can edit files in this Team Drive
      },
      "backgroundImageFile": { # An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
        "width": 3.14, # The width of the cropped image in the closed range of 0 to 1. This value represents the width of the cropped image divided by the width of the entire image. The height is computed by applying a width to height aspect ratio of 80 to 9. The resulting image must be at least 1280 pixels wide and 144 pixels high.
        "yCoordinate": 3.14, # The Y coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the vertical distance from the top side of the entire image to the top side of the cropping area divided by the height of the entire image.
        "id": "A String", # The ID of an image file in Drive to use for the background image.
        "xCoordinate": 3.14, # The X coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the horizontal distance from the left side of the entire image to the left side of the cropping area divided by the width of the entire image.
      },
      "id": "A String", # The ID of this Team Drive which is also the ID of the top level folder for this Team Drive.
    },
    "kind": "drive#change", # This is always drive#change.
    "deleted": True or False, # Whether the file or Team Drive has been removed from this list of changes, for example by deletion or loss of access.
    "file": { # The metadata for a file. # The updated state of the file. Present if the type is file and the file has not been removed from this list of changes.
      "hasThumbnail": True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
      "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
      "trashedDate": "A String", # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for Team Drive files.
      "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
      "appDataContents": True or False, # Whether this file is in the Application Data folder.
      "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
      "labels": { # A group of labels for the file.
        "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
        "modified": True or False, # Whether the file has been modified by this user.
        "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
        "hidden": True or False, # Deprecated.
        "starred": True or False, # Whether this file is starred by the user.
        "viewed": True or False, # Whether this file has been viewed by this user.
      },
      "indexableText": { # Indexable text attributes for the file (can only be written)
        "text": "A String", # The text to be indexed for this file.
      },
      "thumbnailVersion": "A String", # The thumbnail version for use in thumbnail cache invalidation.
      "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
      "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
      "lastModifyingUserName": "A String", # Name of the last user to modify this file.
      "writersCanShare": True or False, # Whether writers can share the document with other users. Not populated for Team Drive files.
      "owners": [ # The owner(s) of this file. Not populated for Team Drive files.
        { # Information about a Drive user.
          "picture": { # The user's profile picture.
            "url": "A String", # A URL that points to a profile picture of this user.
          },
          "kind": "drive#user", # This is always drive#user.
          "displayName": "A String", # A plain text displayable name for this user.
          "permissionId": "A String", # The user's ID as visible in the permissions collection.
          "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          "emailAddress": "A String", # The email address of the user.
        },
      ],
      "ownedByMe": True or False, # Whether the file is owned by the current user. Not populated for Team Drive files.
      "id": "A String", # The ID of the file.
      "sharingUser": { # Information about a Drive user. # User that shared the item with the current user, if available.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "trashingUser": { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for Team Drive files.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
      "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "copyable": True or False, # Deprecated: use capabilities/canCopy.
      "folderColorRgb": "A String", # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for Team Drive files.
      "markedViewedByMeDate": "A String", # Deprecated.
      "ownerNames": [ # Name(s) of the owner(s) of this file. Not populated for Team Drive files.
        "A String",
      ],
      "capabilities": { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
        "canReadRevisions": True or False, # Whether the current user can read the revisions resource of this file. For a Team Drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
        "canTrash": True or False, # Whether the current user can move this file to trash.
        "canCopy": True or False, # Whether the current user can copy this file. For a Team Drive item, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
        "canShare": True or False, # Whether the current user can modify the sharing settings for this file.
        "canDelete": True or False, # Whether the current user can delete this file.
        "canMoveTeamDriveItem": True or False, # Whether the current user can move this Team Drive item by changing its parent. Note that a request to change the parent for this item may still fail depending on the new parent that is being added. Only populated for Team Drive files.
        "canRename": True or False, # Whether the current user can rename this file.
        "canListChildren": True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
        "canChangeRestrictedDownload": True or False, # Whether the current user can change the restricted download label of this file.
        "canMoveItemIntoTeamDrive": True or False, # Whether the current user can move this item into a Team Drive. If the item is in a Team Drive, this field is equivalent to canMoveTeamDriveItem.
        "canDownload": True or False, # Whether the current user can download this file.
        "canComment": True or False, # Whether the current user can comment on this file.
        "canRemoveChildren": True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder.
        "canReadTeamDrive": True or False, # Whether the current user can read the Team Drive to which this file belongs. Only populated for Team Drive files.
        "canAddChildren": True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
        "canEdit": True or False, # Whether the current user can edit this file.
        "canUntrash": True or False, # Whether the current user can restore this file from trash.
      },
      "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
      "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
      "etag": "A String", # ETag of the file.
      "parents": [ # Collection of parent folders which contain this file.
          # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
        { # A reference to a file's parent.
          "selfLink": "A String", # A link back to this reference.
          "kind": "drive#parentReference", # This is always drive#parentReference.
          "id": "A String", # The ID of the parent.
          "isRoot": True or False, # Whether or not the parent is the root folder.
          "parentLink": "A String", # A link to the parent.
        },
      ],
      "exportLinks": { # Links for exporting Google Docs to specific formats.
        "a_key": "A String", # A mapping from export format to URL
      },
      "shared": True or False, # Whether the file has been shared. Not populated for Team Drive files.
      "permissions": [ # The list of permissions for users with access to this file. Not populated for Team Drive files.
        { # A permission for a file.
          "withLink": True or False, # Whether the link is required for this permission.
          "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
          "name": "A String", # The name for this permission.
          "teamDrivePermissionDetails": [ # Details of whether the permissions on this Team Drive item are inherited or directly on this item. This is an output-only field which is present only for Team Drive items.
            {
              "inheritedFrom": "A String", # The ID of the item from which this permission is inherited. This is an output-only field and is only populated for members of the Team Drive.
              "role": "A String", # The primary role for this user. While new values may be added in the future, the following are currently possible:
                  # - organizer
                  # - reader
                  # - writer
              "additionalRoles": [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
                "A String",
              ],
              "teamDrivePermissionType": "A String", # The Team Drive permission type for this user. While new values may be added in future, the following are currently possible:
                  # - file
                  # - member
              "inherited": True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
            },
          ],
          "deleted": True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
          "kind": "drive#permission", # This is always drive#permission.
          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
          "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
          "authKey": "A String", # The authkey parameter required for this permission.
          "etag": "A String", # The ETag of the permission.
          "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
          "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
              # - They can only be set on user and group permissions
              # - The date must be in the future
              # - The date cannot be more than a year in the future
              # - The date can only be set on drive.permissions.update requests
          "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed:
              # - organizer
              # - owner
              # - reader
              # - writer
          "type": "A String", # The account type. Allowed values are:
              # - user
              # - group
              # - domain
              # - anyone
          "additionalRoles": [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
            "A String",
          ],
          "selfLink": "A String", # A link back to this permission.
          "photoLink": "A String", # A link to the profile photo, if available.
        },
      ],
      "fullFileExtension": "A String", # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as "tar.gz". Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
      "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
        "a_key": "A String",
      },
      "canReadRevisions": True or False, # Deprecated: use capabilities/canReadRevisions.
      "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
        "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
        "exposureTime": 3.14, # The length of the exposure, in seconds.
        "cameraMake": "A String", # The make of the camera used to create the photo.
        "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
        "isoSpeed": 42, # The ISO speed used to create the photo.
        "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
        "exposureMode": "A String", # The exposure mode used to create the photo.
        "colorSpace": "A String", # The color space of the photo.
        "location": { # Geographic location information stored in the image.
          "latitude": 3.14, # The latitude stored in the image.
          "altitude": 3.14, # The altitude stored in the image.
          "longitude": 3.14, # The longitude stored in the image.
        },
        "subjectDistance": 42, # The distance to the subject of the photo, in meters.
        "height": 42, # The height of the image in pixels.
        "lens": "A String", # The lens used to create the photo.
        "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
        "width": 42, # The width of the image in pixels.
        "meteringMode": "A String", # The metering mode used to create the photo.
        "flashUsed": True or False, # Whether a flash was used to create the photo.
        "aperture": 3.14, # The aperture used to create the photo (f-number).
        "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
        "sensor": "A String", # The type of sensor used to create the photo.
        "whiteBalance": "A String", # The white balance mode used to create the photo.
        "cameraModel": "A String", # The model of the camera used to create the photo.
      },
      "description": "A String", # A short description of the file.
      "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
      "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
        "width": 42, # The width of the video in pixels.
        "durationMillis": "A String", # The duration of the video in milliseconds.
        "height": 42, # The height of the video in pixels.
      },
      "editable": True or False, # Deprecated: use capabilities/canEdit.
      "kind": "drive#file", # The type of file. This is always drive#file.
      "canComment": True or False, # Deprecated: use capabilities/canComment.
      "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
      "fileSize": "A String", # The size of the file in bytes. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
      "createdDate": "A String", # Create time for this file (formatted RFC 3339 timestamp).
      "teamDriveId": "A String", # ID of the Team Drive the file resides in.
      "properties": [ # The list of properties.
        { # A key-value pair attached to a file that is either public or private to an application.
            # The following limits apply to file properties:
            # - Maximum of 100 properties total per file
            # - Maximum of 30 private properties per app
            # - Maximum of 30 public properties
            # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
          "kind": "drive#property", # This is always drive#property.
          "value": "A String", # The value of this property.
          "etag": "A String", # ETag of the property.
          "visibility": "A String", # The visibility of this property.
          "key": "A String", # The key of this property.
          "selfLink": "A String", # The link back to this property.
        },
      ],
      "md5Checksum": "A String", # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
      "iconLink": "A String", # A link to the file's icon.
      "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
      "embedLink": "A String", # A link for embedding the file.
      "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
      "title": "A String", # The title of this file. Note that for immutable items such as the top level folders of Team Drives, My Drive root folder, and Application Data folder the title is constant.
      "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
      "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
        "mimeType": "A String", # The MIME type of the thumbnail.
        "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
      },
      "downloadUrl": "A String",
      "userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
        "withLink": True or False, # Whether the link is required for this permission.
        "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
        "name": "A String", # The name for this permission.
        "teamDrivePermissionDetails": [ # Details of whether the permissions on this Team Drive item are inherited or directly on this item. This is an output-only field which is present only for Team Drive items.
          {
            "inheritedFrom": "A String", # The ID of the item from which this permission is inherited. This is an output-only field and is only populated for members of the Team Drive.
            "role": "A String", # The primary role for this user. While new values may be added in the future, the following are currently possible:
                # - organizer
                # - reader
                # - writer
            "additionalRoles": [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
              "A String",
            ],
            "teamDrivePermissionType": "A String", # The Team Drive permission type for this user. While new values may be added in future, the following are currently possible:
                # - file
                # - member
            "inherited": True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
          },
        ],
        "deleted": True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
        "kind": "drive#permission", # This is always drive#permission.
        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
        "authKey": "A String", # The authkey parameter required for this permission.
        "etag": "A String", # The ETag of the permission.
        "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
        "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
            # - They can only be set on user and group permissions
            # - The date must be in the future
            # - The date cannot be more than a year in the future
            # - The date can only be set on drive.permissions.update requests
        "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed:
            # - organizer
            # - owner
            # - reader
            # - writer
        "type": "A String", # The account type. Allowed values are:
            # - user
            # - group
            # - domain
            # - anyone
        "additionalRoles": [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
          "A String",
        ],
        "selfLink": "A String", # A link back to this permission.
        "photoLink": "A String", # A link to the profile photo, if available.
      },
      "spaces": [ # The list of spaces which contain the file. Supported values are 'drive', 'appDataFolder' and 'photos'.
        "A String",
      ],
      "shareable": True or False, # Deprecated: use capabilities/canShare.
      "originalFilename": "A String", # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Drive.
      "fileExtension": "A String", # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
      "hasAugmentedPermissions": True or False, # Whether any users are granted file access directly on this file. This field is only populated for Team Drive files.
      "headRevisionId": "A String", # The ID of the file's head revision. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
      "selfLink": "A String", # A link back to this file.
      "modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
    },
    "modificationDate": "A String", # The time of this modification.
    "teamDriveId": "A String", # The ID of the Team Drive associated with this change.
    "type": "A String", # The type of the change. Possible values are file and teamDrive.
    "id": "A String", # The ID of the change.
    "selfLink": "A String", # A link back to this change.
    "fileId": "A String", # The ID of the file associated with this change.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getStartPageToken">getStartPageToken(supportsTeamDrives=None, teamDriveId=None)</code>
  <pre>Gets the starting pageToken for listing future changes.

Args:
  supportsTeamDrives: boolean, Whether the requesting application supports Team Drives.
  teamDriveId: string, The ID of the Team Drive for which the starting pageToken for listing future changes from that Team Drive will be returned.

Returns:
  An object of the form:

    {
    "kind": "drive#startPageToken", # Identifies what kind of resource this is. Value: the fixed string "drive#startPageToken".
    "startPageToken": "A String", # The starting page token for listing changes.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(includeSubscribed=None, includeDeleted=None, includeTeamDriveItems=None, pageToken=None, supportsTeamDrives=None, maxResults=None, startChangeId=None, spaces=None, teamDriveId=None, includeCorpusRemovals=None)</code>
  <pre>Lists the changes for a user or Team Drive.

Args:
  includeSubscribed: boolean, Whether to include public files the user has opened and shared files. When set to false, the list only includes owned files plus any shared or public files the user has explicitly added to a folder they own.
  includeDeleted: boolean, Whether to include changes indicating that items have been removed from the list of changes, for example by deletion or loss of access.
  includeTeamDriveItems: boolean, Whether Team Drive files or changes should be included in results.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response or to the response from the getStartPageToken method.
  supportsTeamDrives: boolean, Whether the requesting application supports Team Drives.
  maxResults: integer, Maximum number of changes to return.
  startChangeId: string, Change ID to start listing changes from.
  spaces: string, A comma-separated list of spaces to query. Supported values are 'drive', 'appDataFolder' and 'photos'.
  teamDriveId: string, The Team Drive from which changes will be returned. If specified the change IDs will be reflective of the Team Drive; use the combined Team Drive ID and change ID as an identifier.
  includeCorpusRemovals: boolean, Whether changes should include the file resource if the file is still accessible by the user at the time of the request, even when a file was removed from the list of changes and there will be no further change entries for this file.

Returns:
  An object of the form:

    { # A list of changes for a user.
    "nextPageToken": "A String", # The page token for the next page of changes. This will be absent if the end of the changes 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.
    "kind": "drive#changeList", # This is always drive#changeList.
    "items": [ # The list of changes. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
      { # Representation of a change to a file or Team Drive.
        "teamDrive": { # Representation of a Team Drive. # The updated state of the Team Drive. Present if the type is teamDrive, the user is still a member of the Team Drive, and the Team Drive has not been deleted.
          "kind": "drive#teamDrive", # This is always drive#teamDrive
          "backgroundImageLink": "A String", # A short-lived link to this Team Drive's background image.
          "name": "A String", # The name of this Team Drive.
          "themeId": "A String", # The ID of the theme from which the background image and color will be set. The set of possible teamDriveThemes can be retrieved from a drive.about.get response. When not specified on a drive.teamdrives.insert request, a random theme is chosen from which the background image and color are set. This is a write-only field; it can only be set on requests that don't set colorRgb or backgroundImageFile.
          "colorRgb": "A String", # The color of this Team Drive as an RGB hex string. It can only be set on a drive.teamdrives.update request that does not set themeId.
          "capabilities": { # Capabilities the current user has on this Team Drive.
            "canReadRevisions": True or False, # Whether the current user can read the revisions resource of files in this Team Drive.
            "canCopy": True or False, # Whether the current user can copy files in this Team Drive.
            "canRename": True or False, # Whether the current user can rename files or folders in this Team Drive.
            "canListChildren": True or False, # Whether the current user can list the children of folders in this Team Drive.
            "canShare": True or False, # Whether the current user can share files or folders in this Team Drive.
            "canManageMembers": True or False, # Whether the current user can add members to this Team Drive or remove them or change their role.
            "canDownload": True or False, # Whether the current user can download files in this Team Drive.
            "canComment": True or False, # Whether the current user can comment on files in this Team Drive.
            "canChangeTeamDriveBackground": True or False, # Whether the current user can change the background of this Team Drive.
            "canDeleteTeamDrive": True or False, # Whether the current user can delete this Team Drive. Attempting to delete the Team Drive may still fail if there are untrashed items inside the Team Drive.
            "canRenameTeamDrive": True or False, # Whether the current user can rename this Team Drive.
            "canRemoveChildren": True or False, # Whether the current user can remove children from folders in this Team Drive.
            "canAddChildren": True or False, # Whether the current user can add children to folders in this Team Drive.
            "canEdit": True or False, # Whether the current user can edit files in this Team Drive
          },
          "backgroundImageFile": { # An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on drive.teamdrives.update requests that don't set themeId. When specified, all fields of the backgroundImageFile must be set.
            "width": 3.14, # The width of the cropped image in the closed range of 0 to 1. This value represents the width of the cropped image divided by the width of the entire image. The height is computed by applying a width to height aspect ratio of 80 to 9. The resulting image must be at least 1280 pixels wide and 144 pixels high.
            "yCoordinate": 3.14, # The Y coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the vertical distance from the top side of the entire image to the top side of the cropping area divided by the height of the entire image.
            "id": "A String", # The ID of an image file in Drive to use for the background image.
            "xCoordinate": 3.14, # The X coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the horizontal distance from the left side of the entire image to the left side of the cropping area divided by the width of the entire image.
          },
          "id": "A String", # The ID of this Team Drive which is also the ID of the top level folder for this Team Drive.
        },
        "kind": "drive#change", # This is always drive#change.
        "deleted": True or False, # Whether the file or Team Drive has been removed from this list of changes, for example by deletion or loss of access.
        "file": { # The metadata for a file. # The updated state of the file. Present if the type is file and the file has not been removed from this list of changes.
          "hasThumbnail": True or False, # Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.
          "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
          "trashedDate": "A String", # The time that the item was trashed (formatted RFC 3339 timestamp). Only populated for Team Drive files.
          "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
          "appDataContents": True or False, # Whether this file is in the Application Data folder.
          "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
          "labels": { # A group of labels for the file.
            "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
            "modified": True or False, # Whether the file has been modified by this user.
            "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
            "hidden": True or False, # Deprecated.
            "starred": True or False, # Whether this file is starred by the user.
            "viewed": True or False, # Whether this file has been viewed by this user.
          },
          "indexableText": { # Indexable text attributes for the file (can only be written)
            "text": "A String", # The text to be indexed for this file.
          },
          "thumbnailVersion": "A String", # The thumbnail version for use in thumbnail cache invalidation.
          "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
          "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
          "lastModifyingUserName": "A String", # Name of the last user to modify this file.
          "writersCanShare": True or False, # Whether writers can share the document with other users. Not populated for Team Drive files.
          "owners": [ # The owner(s) of this file. Not populated for Team Drive files.
            { # Information about a Drive user.
              "picture": { # The user's profile picture.
                "url": "A String", # A URL that points to a profile picture of this user.
              },
              "kind": "drive#user", # This is always drive#user.
              "displayName": "A String", # A plain text displayable name for this user.
              "permissionId": "A String", # The user's ID as visible in the permissions collection.
              "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
              "emailAddress": "A String", # The email address of the user.
            },
          ],
          "ownedByMe": True or False, # Whether the file is owned by the current user. Not populated for Team Drive files.
          "id": "A String", # The ID of the file.
          "sharingUser": { # Information about a Drive user. # User that shared the item with the current user, if available.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "trashingUser": { # Information about a Drive user. # If the file has been explicitly trashed, the user who trashed it. Only populated for Team Drive files.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
          "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "copyable": True or False, # Deprecated: use capabilities/canCopy.
          "folderColorRgb": "A String", # Folder color as an RGB hex string if the file is a folder. The list of supported colors is available in the folderColorPalette field of the About resource. If an unsupported color is specified, it will be changed to the closest color in the palette. Not populated for Team Drive files.
          "markedViewedByMeDate": "A String", # Deprecated.
          "ownerNames": [ # Name(s) of the owner(s) of this file. Not populated for Team Drive files.
            "A String",
          ],
          "capabilities": { # Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.
            "canReadRevisions": True or False, # Whether the current user can read the revisions resource of this file. For a Team Drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.
            "canTrash": True or False, # Whether the current user can move this file to trash.
            "canCopy": True or False, # Whether the current user can copy this file. For a Team Drive item, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.
            "canShare": True or False, # Whether the current user can modify the sharing settings for this file.
            "canDelete": True or False, # Whether the current user can delete this file.
            "canMoveTeamDriveItem": True or False, # Whether the current user can move this Team Drive item by changing its parent. Note that a request to change the parent for this item may still fail depending on the new parent that is being added. Only populated for Team Drive files.
            "canRename": True or False, # Whether the current user can rename this file.
            "canListChildren": True or False, # Whether the current user can list the children of this folder. This is always false when the item is not a folder.
            "canChangeRestrictedDownload": True or False, # Whether the current user can change the restricted download label of this file.
            "canMoveItemIntoTeamDrive": True or False, # Whether the current user can move this item into a Team Drive. If the item is in a Team Drive, this field is equivalent to canMoveTeamDriveItem.
            "canDownload": True or False, # Whether the current user can download this file.
            "canComment": True or False, # Whether the current user can comment on this file.
            "canRemoveChildren": True or False, # Whether the current user can remove children from this folder. This is always false when the item is not a folder.
            "canReadTeamDrive": True or False, # Whether the current user can read the Team Drive to which this file belongs. Only populated for Team Drive files.
            "canAddChildren": True or False, # Whether the current user can add children to this folder. This is always false when the item is not a folder.
            "canEdit": True or False, # Whether the current user can edit this file.
            "canUntrash": True or False, # Whether the current user can restore this file from trash.
          },
          "sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
          "webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
          "etag": "A String", # ETag of the file.
          "parents": [ # Collection of parent folders which contain this file.
              # Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
            { # A reference to a file's parent.
              "selfLink": "A String", # A link back to this reference.
              "kind": "drive#parentReference", # This is always drive#parentReference.
              "id": "A String", # The ID of the parent.
              "isRoot": True or False, # Whether or not the parent is the root folder.
              "parentLink": "A String", # A link to the parent.
            },
          ],
          "exportLinks": { # Links for exporting Google Docs to specific formats.
            "a_key": "A String", # A mapping from export format to URL
          },
          "shared": True or False, # Whether the file has been shared. Not populated for Team Drive files.
          "permissions": [ # The list of permissions for users with access to this file. Not populated for Team Drive files.
            { # A permission for a file.
              "withLink": True or False, # Whether the link is required for this permission.
              "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
              "name": "A String", # The name for this permission.
              "teamDrivePermissionDetails": [ # Details of whether the permissions on this Team Drive item are inherited or directly on this item. This is an output-only field which is present only for Team Drive items.
                {
                  "inheritedFrom": "A String", # The ID of the item from which this permission is inherited. This is an output-only field and is only populated for members of the Team Drive.
                  "role": "A String", # The primary role for this user. While new values may be added in the future, the following are currently possible:
                      # - organizer
                      # - reader
                      # - writer
                  "additionalRoles": [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
                    "A String",
                  ],
                  "teamDrivePermissionType": "A String", # The Team Drive permission type for this user. While new values may be added in future, the following are currently possible:
                      # - file
                      # - member
                  "inherited": True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
                },
              ],
              "deleted": True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
              "kind": "drive#permission", # This is always drive#permission.
              "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
              "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
              "authKey": "A String", # The authkey parameter required for this permission.
              "etag": "A String", # The ETag of the permission.
              "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
              "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
                  # - They can only be set on user and group permissions
                  # - The date must be in the future
                  # - The date cannot be more than a year in the future
                  # - The date can only be set on drive.permissions.update requests
              "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed:
                  # - organizer
                  # - owner
                  # - reader
                  # - writer
              "type": "A String", # The account type. Allowed values are:
                  # - user
                  # - group
                  # - domain
                  # - anyone
              "additionalRoles": [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
                "A String",
              ],
              "selfLink": "A String", # A link back to this permission.
              "photoLink": "A String", # A link to the profile photo, if available.
            },
          ],
          "fullFileExtension": "A String", # The full file extension; extracted from the title. May contain multiple concatenated extensions, such as "tar.gz". Removing an extension from the title does not clear this field; however, changing the extension on the title does update this field. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
          "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
            "a_key": "A String",
          },
          "canReadRevisions": True or False, # Deprecated: use capabilities/canReadRevisions.
          "imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
            "exposureBias": 3.14, # The exposure bias of the photo (APEX value).
            "exposureTime": 3.14, # The length of the exposure, in seconds.
            "cameraMake": "A String", # The make of the camera used to create the photo.
            "maxApertureValue": 3.14, # The smallest f-number of the lens at the focal length used to create the photo (APEX value).
            "isoSpeed": 42, # The ISO speed used to create the photo.
            "focalLength": 3.14, # The focal length used to create the photo, in millimeters.
            "exposureMode": "A String", # The exposure mode used to create the photo.
            "colorSpace": "A String", # The color space of the photo.
            "location": { # Geographic location information stored in the image.
              "latitude": 3.14, # The latitude stored in the image.
              "altitude": 3.14, # The altitude stored in the image.
              "longitude": 3.14, # The longitude stored in the image.
            },
            "subjectDistance": 42, # The distance to the subject of the photo, in meters.
            "height": 42, # The height of the image in pixels.
            "lens": "A String", # The lens used to create the photo.
            "date": "A String", # The date and time the photo was taken (EXIF format timestamp).
            "width": 42, # The width of the image in pixels.
            "meteringMode": "A String", # The metering mode used to create the photo.
            "flashUsed": True or False, # Whether a flash was used to create the photo.
            "aperture": 3.14, # The aperture used to create the photo (f-number).
            "rotation": 42, # The rotation in clockwise degrees from the image's original orientation.
            "sensor": "A String", # The type of sensor used to create the photo.
            "whiteBalance": "A String", # The white balance mode used to create the photo.
            "cameraModel": "A String", # The model of the camera used to create the photo.
          },
          "description": "A String", # A short description of the file.
          "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
          "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
            "width": 42, # The width of the video in pixels.
            "durationMillis": "A String", # The duration of the video in milliseconds.
            "height": 42, # The height of the video in pixels.
          },
          "editable": True or False, # Deprecated: use capabilities/canEdit.
          "kind": "drive#file", # The type of file. This is always drive#file.
          "canComment": True or False, # Deprecated: use capabilities/canComment.
          "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
          "fileSize": "A String", # The size of the file in bytes. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
          "createdDate": "A String", # Create time for this file (formatted RFC 3339 timestamp).
          "teamDriveId": "A String", # ID of the Team Drive the file resides in.
          "properties": [ # The list of properties.
            { # A key-value pair attached to a file that is either public or private to an application.
                # The following limits apply to file properties:
                # - Maximum of 100 properties total per file
                # - Maximum of 30 private properties per app
                # - Maximum of 30 public properties
                # - Maximum of 124 bytes size limit on (key + value) string in UTF-8 encoding for a single property.
              "kind": "drive#property", # This is always drive#property.
              "value": "A String", # The value of this property.
              "etag": "A String", # ETag of the property.
              "visibility": "A String", # The visibility of this property.
              "key": "A String", # The key of this property.
              "selfLink": "A String", # The link back to this property.
            },
          ],
          "md5Checksum": "A String", # An MD5 checksum for the content of this file. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
          "iconLink": "A String", # A link to the file's icon.
          "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
          "embedLink": "A String", # A link for embedding the file.
          "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
          "title": "A String", # The title of this file. Note that for immutable items such as the top level folders of Team Drives, My Drive root folder, and Application Data folder the title is constant.
          "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
          "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
            "mimeType": "A String", # The MIME type of the thumbnail.
            "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
          },
          "downloadUrl": "A String",
          "userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
            "withLink": True or False, # Whether the link is required for this permission.
            "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
            "name": "A String", # The name for this permission.
            "teamDrivePermissionDetails": [ # Details of whether the permissions on this Team Drive item are inherited or directly on this item. This is an output-only field which is present only for Team Drive items.
              {
                "inheritedFrom": "A String", # The ID of the item from which this permission is inherited. This is an output-only field and is only populated for members of the Team Drive.
                "role": "A String", # The primary role for this user. While new values may be added in the future, the following are currently possible:
                    # - organizer
                    # - reader
                    # - writer
                "additionalRoles": [ # Additional roles for this user. Only commenter is currently possible, though more may be supported in the future.
                  "A String",
                ],
                "teamDrivePermissionType": "A String", # The Team Drive permission type for this user. While new values may be added in future, the following are currently possible:
                    # - file
                    # - member
                "inherited": True or False, # Whether this permission is inherited. This field is always populated. This is an output-only field.
              },
            ],
            "deleted": True or False, # Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.
            "kind": "drive#permission", # This is always drive#permission.
            "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
            "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
            "authKey": "A String", # The authkey parameter required for this permission.
            "etag": "A String", # The ETag of the permission.
            "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
            "expirationDate": "A String", # The time at which this permission will expire (RFC 3339 date-time). Expiration dates have the following restrictions:
                # - They can only be set on user and group permissions
                # - The date must be in the future
                # - The date cannot be more than a year in the future
                # - The date can only be set on drive.permissions.update requests
            "role": "A String", # The primary role for this user. While new values may be supported in the future, the following are currently allowed:
                # - organizer
                # - owner
                # - reader
                # - writer
            "type": "A String", # The account type. Allowed values are:
                # - user
                # - group
                # - domain
                # - anyone
            "additionalRoles": [ # Additional roles for this user. Only commenter is currently allowed, though more may be supported in the future.
              "A String",
            ],
            "selfLink": "A String", # A link back to this permission.
            "photoLink": "A String", # A link to the profile photo, if available.
          },
          "spaces": [ # The list of spaces which contain the file. Supported values are 'drive', 'appDataFolder' and 'photos'.
            "A String",
          ],
          "shareable": True or False, # Deprecated: use capabilities/canShare.
          "originalFilename": "A String", # The original filename of the uploaded content if available, or else the original value of the title field. This is only available for files with binary content in Drive.
          "fileExtension": "A String", # The final component of fullFileExtension with trailing text that does not appear to be part of the extension removed. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
          "hasAugmentedPermissions": True or False, # Whether any users are granted file access directly on this file. This field is only populated for Team Drive files.
          "headRevisionId": "A String", # The ID of the file's head revision. This field is only populated for files with content stored in Drive; it is not populated for Google Docs or shortcut files.
          "selfLink": "A String", # A link back to this file.
          "modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
        },
        "modificationDate": "A String", # The time of this modification.
        "teamDriveId": "A String", # The ID of the Team Drive associated with this change.
        "type": "A String", # The type of the change. Possible values are file and teamDrive.
        "id": "A String", # The ID of the change.
        "selfLink": "A String", # A link back to this change.
        "fileId": "A String", # The ID of the file associated with this change.
      },
    ],
    "nextLink": "A String", # A link to the next page of changes.
    "etag": "A String", # The ETag of the list.
    "newStartPageToken": "A String", # The starting page token for future changes. This will be present only if the end of the current changes list has been reached.
    "largestChangeId": "A String", # The current largest change ID.
    "selfLink": "A String", # A link back to this list.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

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

Returns:
  A request object that you can call 'execute()' 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="watch">watch(body, supportsTeamDrives=None, spaces=None, startChangeId=None, pageToken=None, includeSubscribed=None, includeDeleted=None, maxResults=None, teamDriveId=None, includeTeamDriveItems=None, includeCorpusRemovals=None)</code>
  <pre>Subscribe to changes for a user.

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

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

  supportsTeamDrives: boolean, Whether the requesting application supports Team Drives.
  spaces: string, A comma-separated list of spaces to query. Supported values are 'drive', 'appDataFolder' and 'photos'.
  startChangeId: string, Change ID to start listing changes from.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response or to the response from the getStartPageToken method.
  includeSubscribed: boolean, Whether to include public files the user has opened and shared files. When set to false, the list only includes owned files plus any shared or public files the user has explicitly added to a folder they own.
  includeDeleted: boolean, Whether to include changes indicating that items have been removed from the list of changes, for example by deletion or loss of access.
  maxResults: integer, Maximum number of changes to return.
  teamDriveId: string, The Team Drive from which changes will be returned. If specified the change IDs will be reflective of the Team Drive; use the combined Team Drive ID and change ID as an identifier.
  includeTeamDriveItems: boolean, Whether Team Drive files or changes should be included in results.
  includeCorpusRemovals: boolean, Whether changes should include the file resource if the file is still accessible by the user at the time of the request, even when a file was removed from the list of changes and there will be no further change entries for this file.

Returns:
  An object of the form:

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

</body></html>