<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="driveactivity_v2.html">Drive Activity API</a> . <a href="driveactivity_v2.activity.html">activity</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#query">query(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Query past activity in Google Drive.</p>
<p class="toc_element">
  <code><a href="#query_next">query_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="query">query(body=None, x__xgafv=None)</code>
  <pre>Query past activity in Google Drive.

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

{ # The request message for querying Drive activity.
    &quot;pageSize&quot;: 42, # The miminum number of activities desired in the response; the server will
        # attempt to return at least this quanitity. The server may also return fewer
        # activities if it has a partial response ready before the request times out.
        # If not set, a default value is used.
    &quot;filter&quot;: &quot;A String&quot;, # The filtering for items returned from this query request. The format of the
        # filter string is a sequence of expressions, joined by an optional &quot;AND&quot;,
        # where each expression is of the form &quot;field operator value&quot;.
        # 
        # Supported fields:
        # 
        #   - &lt;tt&gt;time&lt;/tt&gt;: Uses numerical operators on date values either in
        #     terms of milliseconds since Jan 1, 1970 or in RFC 3339 format.
        #     Examples:
        #       - &lt;tt&gt;time &gt; 1452409200000 AND time &lt;= 1492812924310&lt;/tt&gt;
        #       - &lt;tt&gt;time &gt;= &quot;2016-01-10T01:02:03-05:00&quot;&lt;/tt&gt;
        # 
        #   - &lt;tt&gt;detail.action_detail_case&lt;/tt&gt;: Uses the &quot;has&quot; operator (:) and
        #     either a singular value or a list of allowed action types enclosed in
        #     parentheses.
        #     Examples:
        #       - &lt;tt&gt;detail.action_detail_case: RENAME&lt;/tt&gt;
        #       - &lt;tt&gt;detail.action_detail_case:(CREATE EDIT)&lt;/tt&gt;
        #       - &lt;tt&gt;-detail.action_detail_case:MOVE&lt;/tt&gt;
    &quot;ancestorName&quot;: &quot;A String&quot;, # Return activities for this Drive folder and all children and descendants.
        # The format is &quot;items/ITEM_ID&quot;.
    &quot;itemName&quot;: &quot;A String&quot;, # Return activities for this Drive item. The format is
        # &quot;items/ITEM_ID&quot;.
    &quot;pageToken&quot;: &quot;A String&quot;, # The token identifying which page of results to return. Set this to the
        # next_page_token value returned from a previous query to obtain the
        # following page of results. If not set, the first page of results will be
        # returned.
    &quot;consolidationStrategy&quot;: { # How the individual activities are consolidated. A set of activities may be # Details on how to consolidate related actions that make up the activity. If
        # not set, then related actions are not consolidated.
        # consolidated into one combined activity if they are related in some way, such
        # as one actor performing the same action on multiple targets, or multiple
        # actors performing the same action on a single target. The strategy defines
        # the rules for which activities are related.
      &quot;legacy&quot;: { # A strategy which consolidates activities using the grouping rules from the # The individual activities are consolidated using the legacy strategy.
          # legacy V1 Activity API. Similar actions occurring within a window of time
          # can be grouped across multiple targets (such as moving a set of files at
          # once) or multiple actors (such as several users editing the same item).
          # Grouping rules for this strategy are specific to each type of action.
      },
      &quot;none&quot;: { # A strategy which does no consolidation of individual activities. # The individual activities are not consolidated.
      },
    },
  }

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

Returns:
  An object of the form:

    { # Response message for querying Drive activity.
    &quot;activities&quot;: [ # List of activity requested.
      { # A single Drive activity comprising one or more Actions by one or more
          # Actors on one or more Targets. Some Action groupings occur spontaneously,
          # such as moving an item into a shared folder triggering a permission change.
          # Other groupings of related Actions, such as multiple Actors editing one item
          # or moving multiple files into a new folder, are controlled by the selection
          # of a ConsolidationStrategy in the QueryDriveActivityRequest.
        &quot;timeRange&quot;: { # Information about time ranges. # The activity occurred over this time range.
          &quot;startTime&quot;: &quot;A String&quot;, # The start of the time range.
          &quot;endTime&quot;: &quot;A String&quot;, # The end of the time range.
        },
        &quot;actions&quot;: [ # Details on all actions in this activity.
          { # Information about the action.
            &quot;detail&quot;: { # Data describing the type and additional information of an action. # The type and detailed information about the action.
              &quot;rename&quot;: { # An object was renamed. # An object was renamed.
                &quot;newTitle&quot;: &quot;A String&quot;, # The new title of the drive object.
                &quot;oldTitle&quot;: &quot;A String&quot;, # The previous title of the drive object.
              },
              &quot;move&quot;: { # An object was moved. # An object was moved.
                &quot;removedParents&quot;: [ # The removed parent object(s).
                  { # A lightweight reference to the target of activity.
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                      },
                      &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                        &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                      },
                      &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                          # folder.
                        &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                      },
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                  },
                ],
                &quot;addedParents&quot;: [ # The added parent object(s).
                  { # A lightweight reference to the target of activity.
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                      },
                      &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                        &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                      },
                      &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                          # folder.
                        &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                      },
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                  },
                ],
              },
              &quot;reference&quot;: { # Activity in applications other than Drive. # An object was referenced in an application outside of Drive/Docs.
                &quot;type&quot;: &quot;A String&quot;, # The reference type corresponding to this event.
              },
              &quot;create&quot;: { # An object was created. # An object was created.
                &quot;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded
                    # to Drive.
                },
                &quot;new&quot;: { # An object was created from scratch. # If present, indicates the object was newly created (e.g. as a blank
                    # document), not derived from a Drive object or external object.
                },
                &quot;copy&quot;: { # An object was created by copying an existing object. # If present, indicates the object was created by copying an existing Drive
                    # object.
                  &quot;originalObject&quot;: { # A lightweight reference to the target of activity. # The the original object.
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                      },
                      &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                        &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                      },
                      &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                          # folder.
                        &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                      },
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                  },
                },
              },
              &quot;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
                &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
                  { # The permission setting of an object.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the
                        # &lt;a href=&quot;/drive/web/manage-sharing#roles&quot;&gt;Google Drive permissions
                        # role&lt;/a&gt;. The role determines a user&#x27;s ability to read, write, and
                        # comment on items.
                    &quot;allowDiscovery&quot;: True or False, # If true, the item can be discovered (e.g. in the user&#x27;s &quot;Shared with me&quot;
                        # collection) without needing a link to the item.
                    &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;group&quot;: { # Information about a group. # The group to whom this permission applies.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                      &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                    &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                            # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                            # https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                  },
                ],
                &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
                  { # The permission setting of an object.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the
                        # &lt;a href=&quot;/drive/web/manage-sharing#roles&quot;&gt;Google Drive permissions
                        # role&lt;/a&gt;. The role determines a user&#x27;s ability to read, write, and
                        # comment on items.
                    &quot;allowDiscovery&quot;: True or False, # If true, the item can be discovered (e.g. in the user&#x27;s &quot;Shared with me&quot;
                        # collection) without needing a link to the item.
                    &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;group&quot;: { # Information about a group. # The group to whom this permission applies.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                      &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                    &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                            # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                            # https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                  },
                ],
              },
              &quot;settingsChange&quot;: { # Information about settings changes. # Settings were changed.
                &quot;restrictionChanges&quot;: [ # The set of changes made to restrictions.
                  { # Information about restriction policy changes to a feature.
                    &quot;newRestriction&quot;: &quot;A String&quot;, # The restriction in place after the change.
                    &quot;feature&quot;: &quot;A String&quot;, # The feature which had a change in restriction policy.
                  },
                ],
              },
              &quot;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
              },
              &quot;delete&quot;: { # An object was deleted. # An object was deleted.
                &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
              },
              &quot;dlpChange&quot;: { # A change in the object&#x27;s data leak prevention status. # A change happened in data leak prevention status.
                &quot;type&quot;: &quot;A String&quot;, # The type of Data Leak Prevention (DLP) change.
              },
              &quot;restore&quot;: { # A deleted object was restored. # A deleted object was restored.
                &quot;type&quot;: &quot;A String&quot;, # The type of restore action taken.
              },
              &quot;comment&quot;: { # A change about comments on an object. # A change about comments was made.
                &quot;assignment&quot;: { # A comment with an assignment. # A change on an assignment.
                  &quot;assignedUser&quot;: { # Information about an end user. # The user to whom the comment was assigned.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;post&quot;: { # A regular posted comment. # A change on a regular posted comment.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
                  { # Information about an end user.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                ],
              },
            },
            &quot;target&quot;: { # Information about the target of activity. # The target this action affects (or empty if affecting all targets). This
                # represents the state of the target immediately after this action occurred.
              &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
                &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.title` instead.
                &quot;root&quot;: { # A Drive item, such as a file or folder. # This field is deprecated; please see `Drive.root` instead.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                            # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                            # https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                      # https://developers.google.com/drive/v3/web/mime-types.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                },
                &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` instead.
              },
              &quot;drive&quot;: { # Information about a shared drive. # The target is a shared drive.
                &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                    # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                    # ID for this resource name.
                &quot;root&quot;: { # A Drive item, such as a file or folder. # The root of this shared drive.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                            # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                            # https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                      # https://developers.google.com/drive/v3/web/mime-types.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
              },
              &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                    &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                    &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                  },
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                        # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                        # ID for this resource name.
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                },
                &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                  &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                },
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                    # https://developers.google.com/drive/v3/web/mime-types.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                    # folder.
                  &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                },
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
              },
              &quot;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
                &quot;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                            # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                            # https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                      &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                      &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                    },
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                      &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                          # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                          # ID for this resource name.
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                      # https://developers.google.com/drive/v3/web/mime-types.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                },
                &quot;legacyCommentId&quot;: &quot;A String&quot;, # The comment in the discussion thread. This identifier is an opaque string
                    # compatible with the Drive API; see
                    # https://developers.google.com/drive/v3/reference/comments/get
                &quot;legacyDiscussionId&quot;: &quot;A String&quot;, # The discussion thread to which the comment was added. This identifier is an
                    # opaque string compatible with the Drive API and references the first
                    # comment in a discussion; see
                    # https://developers.google.com/drive/v3/reference/comments/get
                &quot;linkToDiscussion&quot;: &quot;A String&quot;, # The link to the discussion thread containing this comment, for example,
                    # &quot;https://docs.google.com/DOCUMENT_ID/edit?disco=THREAD_ID&quot;.
              },
            },
            &quot;actor&quot;: { # The actor of a Drive activity. # The actor responsible for this action (or empty if all actors are
                # responsible).
              &quot;impersonation&quot;: { # Information about an impersonation, where an admin acts on behalf of an end # An account acting on behalf of another.
                  # user. Information about the acting admin is not currently available.
                &quot;impersonatedUser&quot;: { # Information about an end user. # The impersonated user.
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                        # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                        # https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
              },
              &quot;system&quot;: { # Event triggered by system operations instead of end users. # A non-user actor (i.e. system triggered).
                &quot;type&quot;: &quot;A String&quot;, # The type of the system event that may triggered activity.
              },
              &quot;user&quot;: { # Information about an end user. # An end user.
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                      # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                      # https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
              &quot;administrator&quot;: { # Empty message representing an administrator. # An administrator.
              },
              &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated # An anonymous user.
                  # user should be anonymized.
              },
            },
            &quot;timeRange&quot;: { # Information about time ranges. # The action occurred over this time range.
              &quot;startTime&quot;: &quot;A String&quot;, # The start of the time range.
              &quot;endTime&quot;: &quot;A String&quot;, # The end of the time range.
            },
            &quot;timestamp&quot;: &quot;A String&quot;, # The action occurred at this specific time.
          },
        ],
        &quot;primaryActionDetail&quot;: { # Data describing the type and additional information of an action. # Key information about the primary action for this activity. This is either
            # representative, or the most important, of all actions in the activity,
            # according to the ConsolidationStrategy in the request.
          &quot;rename&quot;: { # An object was renamed. # An object was renamed.
            &quot;newTitle&quot;: &quot;A String&quot;, # The new title of the drive object.
            &quot;oldTitle&quot;: &quot;A String&quot;, # The previous title of the drive object.
          },
          &quot;move&quot;: { # An object was moved. # An object was moved.
            &quot;removedParents&quot;: [ # The removed parent object(s).
              { # A lightweight reference to the target of activity.
                &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                  &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                  &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                },
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                },
                &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                      # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                      # ID for this resource name.
                },
              },
            ],
            &quot;addedParents&quot;: [ # The added parent object(s).
              { # A lightweight reference to the target of activity.
                &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                  &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                  &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                },
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                },
                &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                      # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                      # ID for this resource name.
                },
              },
            ],
          },
          &quot;reference&quot;: { # Activity in applications other than Drive. # An object was referenced in an application outside of Drive/Docs.
            &quot;type&quot;: &quot;A String&quot;, # The reference type corresponding to this event.
          },
          &quot;create&quot;: { # An object was created. # An object was created.
            &quot;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded
                # to Drive.
            },
            &quot;new&quot;: { # An object was created from scratch. # If present, indicates the object was newly created (e.g. as a blank
                # document), not derived from a Drive object or external object.
            },
            &quot;copy&quot;: { # An object was created by copying an existing object. # If present, indicates the object was created by copying an existing Drive
                # object.
              &quot;originalObject&quot;: { # A lightweight reference to the target of activity. # The the original object.
                &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                  &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                  &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                },
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                  &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                    &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                  },
                  &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                      # folder.
                    &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                },
                &quot;drive&quot;: { # A lightweight reference to a shared drive. # The target is a shared drive.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                      # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                      # ID for this resource name.
                },
              },
            },
          },
          &quot;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
            &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
              { # The permission setting of an object.
                &quot;role&quot;: &quot;A String&quot;, # Indicates the
                    # &lt;a href=&quot;/drive/web/manage-sharing#roles&quot;&gt;Google Drive permissions
                    # role&lt;/a&gt;. The role determines a user&#x27;s ability to read, write, and
                    # comment on items.
                &quot;allowDiscovery&quot;: True or False, # If true, the item can be discovered (e.g. in the user&#x27;s &quot;Shared with me&quot;
                    # collection) without needing a link to the item.
                &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
                &quot;group&quot;: { # Information about a group. # The group to whom this permission applies.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                  &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
                &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                        # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                        # https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
              },
            ],
            &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
              { # The permission setting of an object.
                &quot;role&quot;: &quot;A String&quot;, # Indicates the
                    # &lt;a href=&quot;/drive/web/manage-sharing#roles&quot;&gt;Google Drive permissions
                    # role&lt;/a&gt;. The role determines a user&#x27;s ability to read, write, and
                    # comment on items.
                &quot;allowDiscovery&quot;: True or False, # If true, the item can be discovered (e.g. in the user&#x27;s &quot;Shared with me&quot;
                    # collection) without needing a link to the item.
                &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
                &quot;group&quot;: { # Information about a group. # The group to whom this permission applies.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                  &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
                &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                        # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                        # https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
              },
            ],
          },
          &quot;settingsChange&quot;: { # Information about settings changes. # Settings were changed.
            &quot;restrictionChanges&quot;: [ # The set of changes made to restrictions.
              { # Information about restriction policy changes to a feature.
                &quot;newRestriction&quot;: &quot;A String&quot;, # The restriction in place after the change.
                &quot;feature&quot;: &quot;A String&quot;, # The feature which had a change in restriction policy.
              },
            ],
          },
          &quot;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
          },
          &quot;delete&quot;: { # An object was deleted. # An object was deleted.
            &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
          },
          &quot;dlpChange&quot;: { # A change in the object&#x27;s data leak prevention status. # A change happened in data leak prevention status.
            &quot;type&quot;: &quot;A String&quot;, # The type of Data Leak Prevention (DLP) change.
          },
          &quot;restore&quot;: { # A deleted object was restored. # A deleted object was restored.
            &quot;type&quot;: &quot;A String&quot;, # The type of restore action taken.
          },
          &quot;comment&quot;: { # A change about comments on an object. # A change about comments was made.
            &quot;assignment&quot;: { # A comment with an assignment. # A change on an assignment.
              &quot;assignedUser&quot;: { # Information about an end user. # The user to whom the comment was assigned.
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                      # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                      # https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;post&quot;: { # A regular posted comment. # A change on a regular posted comment.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
              { # Information about an end user.
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                      # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                      # https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            ],
          },
        },
        &quot;timestamp&quot;: &quot;A String&quot;, # The activity occurred at this specific time.
        &quot;actors&quot;: [ # All actor(s) responsible for the activity.
          { # The actor of a Drive activity.
            &quot;impersonation&quot;: { # Information about an impersonation, where an admin acts on behalf of an end # An account acting on behalf of another.
                # user. Information about the acting admin is not currently available.
              &quot;impersonatedUser&quot;: { # Information about an end user. # The impersonated user.
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                      # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                      # https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            },
            &quot;system&quot;: { # Event triggered by system operations instead of end users. # A non-user actor (i.e. system triggered).
              &quot;type&quot;: &quot;A String&quot;, # The type of the system event that may triggered activity.
            },
            &quot;user&quot;: { # Information about an end user. # An end user.
              &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
              },
              &quot;knownUser&quot;: { # A known user. # A known user.
                &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                    # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                    # https://developers.google.com/people/.
              },
              &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
              },
            },
            &quot;administrator&quot;: { # Empty message representing an administrator. # An administrator.
            },
            &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated # An anonymous user.
                # user should be anonymized.
            },
          },
        ],
        &quot;targets&quot;: [ # All Google Drive objects this activity is about (e.g. file, folder, drive).
            # This represents the state of the target immediately after the actions
            # occurred.
          { # Information about the target of activity.
            &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
              &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.title` instead.
              &quot;root&quot;: { # A Drive item, such as a file or folder. # This field is deprecated; please see `Drive.root` instead.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                    &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                    &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                  },
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                        # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                        # ID for this resource name.
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                },
                &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                  &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                },
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                    # https://developers.google.com/drive/v3/web/mime-types.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                    # folder.
                  &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                },
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
              },
              &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` instead.
            },
            &quot;drive&quot;: { # Information about a shared drive. # The target is a shared drive.
              &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                  # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                  # ID for this resource name.
              &quot;root&quot;: { # A Drive item, such as a file or folder. # The root of this shared drive.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                    &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                    &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                  },
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                        # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                        # ID for this resource name.
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                },
                &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                  &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                },
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                    # https://developers.google.com/drive/v3/web/mime-types.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                    # folder.
                  &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                },
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
              },
              &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
            },
            &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
              &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
              },
              &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                        # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                        # https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                  &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                  &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                },
                &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                      # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                      # ID for this resource name.
                },
                &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
              },
              &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
              },
              &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                  # https://developers.google.com/drive/v3/web/mime-types.
              &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
              },
              &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
              &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                  # folder.
                &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
              },
              &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
            },
            &quot;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
              &quot;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get
                          # more information. The format is &quot;people/ACCOUNT_ID&quot;. See
                          # https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;teamDrive&quot;: { # This item is deprecated; please see `DriveReference` instead. # This field is deprecated; please use the `drive` field instead.
                    &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.name` instead.
                    &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveReference.title` instead.
                  },
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &quot;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    &quot;name&quot;: &quot;A String&quot;, # The resource name of the shared drive. The format is
                        # &quot;COLLECTION_ID/DRIVE_ID&quot;. Clients should not assume a specific collection
                        # ID for this resource name.
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                },
                &quot;folder&quot;: { # This item is deprecated; please see `DriveFolder` instead. # This field is deprecated; please use the `driveFolder` field instead.
                  &quot;type&quot;: &quot;A String&quot;, # This field is deprecated; please see `DriveFolder.type` instead.
                },
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item.  See
                    # https://developers.google.com/drive/v3/web/mime-types.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFolder&quot;: { # A Drive item which is a folder. # The Drive item is a folder. Includes information about the type of
                    # folder.
                  &quot;type&quot;: &quot;A String&quot;, # The type of Drive folder.
                },
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
              },
              &quot;legacyCommentId&quot;: &quot;A String&quot;, # The comment in the discussion thread. This identifier is an opaque string
                  # compatible with the Drive API; see
                  # https://developers.google.com/drive/v3/reference/comments/get
              &quot;legacyDiscussionId&quot;: &quot;A String&quot;, # The discussion thread to which the comment was added. This identifier is an
                  # opaque string compatible with the Drive API and references the first
                  # comment in a discussion; see
                  # https://developers.google.com/drive/v3/reference/comments/get
              &quot;linkToDiscussion&quot;: &quot;A String&quot;, # The link to the discussion thread containing this comment, for example,
                  # &quot;https://docs.google.com/DOCUMENT_ID/edit?disco=THREAD_ID&quot;.
            },
          },
        ],
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or
        # empty if there are no more results in the list.
  }</pre>
</div>

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

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

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>