<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<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;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;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: - time: Uses numerical operators on date values either in terms of milliseconds since Jan 1, 1970 or in RFC 3339 format. Examples: - time &gt; 1452409200000 AND time &lt;= 1492812924310 - time &gt;= &quot;2016-01-10T01:02:03-05:00&quot; - detail.action_detail_case: Uses the &quot;has&quot; operator (:) and either a singular value or a list of allowed action types enclosed in parentheses. Examples: - detail.action_detail_case: RENAME - detail.action_detail_case:(CREATE EDIT) - -detail.action_detail_case:MOVE
    &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;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 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. # Details on how to consolidate related actions that make up the activity. If not set, then related actions are not consolidated.
      &quot;legacy&quot;: { # A strategy which consolidates activities using the grouping rules from the 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. # The individual activities are consolidated using the legacy strategy.
      },
      &quot;none&quot;: { # A strategy which does no consolidation of individual activities. # The individual activities are not consolidated.
      },
    },
    &quot;itemName&quot;: &quot;A String&quot;, # Return activities for this Drive item. The format is &quot;items/ITEM_ID&quot;.
  }

  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;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.
    &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;actions&quot;: [ # Details on all actions in this activity.
          { # Information about the action.
            &quot;timestamp&quot;: &quot;A String&quot;, # The action occurred at this specific time.
            &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;oldTitle&quot;: &quot;A String&quot;, # The previous title of the drive object.
                &quot;newTitle&quot;: &quot;A String&quot;, # The new title of the drive object.
              },
              &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &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;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
                  { # Information about an end user.
                    &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                ],
                &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;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;create&quot;: { # An object was created. # An object was created.
                &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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &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;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;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded to Drive.
                },
              },
              &quot;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
              },
              &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;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;delete&quot;: { # An object was deleted. # An object was deleted.
                &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
              },
              &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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &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;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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                      &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;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;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
                &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
                  { # The permission setting of an object.
                    &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;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;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, and comment on items.
                    &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                      &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                  },
                ],
                &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
                  { # The permission setting of an object.
                    &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;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;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, and comment on items.
                    &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                      &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                  },
                ],
              },
            },
            &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;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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                  &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    },
                    &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &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 shared drive.
              },
              &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  },
                  &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                },
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
              },
              &quot;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
                &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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                  &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    },
                    &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                },
              },
              &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
                &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` 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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                  &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    },
                    &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                      &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                  },
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                  },
                },
              },
            },
            &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;actor&quot;: { # The actor of a Drive activity. # The actor responsible for this action (or empty if all actors are responsible).
              &quot;user&quot;: { # Information about an end user. # An end user.
                &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
              &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated user should be anonymized. # An anonymous user.
              },
              &quot;impersonation&quot;: { # Information about an impersonation, where an admin acts on behalf of an end user. Information about the acting admin is not currently available. # An account acting on behalf of another.
                &quot;impersonatedUser&quot;: { # Information about an end user. # The impersonated user.
                  &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &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;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;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;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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  },
                  &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                },
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &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 shared drive.
            },
            &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
              &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                },
                &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                  &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
              },
              &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
              },
              &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
              &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
              },
            },
            &quot;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
              &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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  },
                  &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                },
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
              },
            },
            &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
              &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` 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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &quot;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  },
                  &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;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;user&quot;: { # Information about an end user. # The user that owns the Drive item.
                    &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                },
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field instead.
                },
              },
            },
          },
        ],
        &quot;actors&quot;: [ # All actor(s) responsible for the activity.
          { # The actor of a Drive activity.
            &quot;user&quot;: { # Information about an end user. # An end user.
              &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
              },
              &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
              },
            },
            &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated user should be anonymized. # An anonymous user.
            },
            &quot;impersonation&quot;: { # Information about an impersonation, where an admin acts on behalf of an end user. Information about the acting admin is not currently available. # An account acting on behalf of another.
              &quot;impersonatedUser&quot;: { # Information about an end user. # The impersonated user.
                &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &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;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;timestamp&quot;: &quot;A String&quot;, # The activity 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;oldTitle&quot;: &quot;A String&quot;, # The previous title of the drive object.
            &quot;newTitle&quot;: &quot;A String&quot;, # The new title of the drive object.
          },
          &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &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;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
              { # Information about an end user.
                &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            ],
            &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;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;create&quot;: { # An object was created. # An object was created.
            &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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &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;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;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded to Drive.
            },
          },
          &quot;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
          },
          &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;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;delete&quot;: { # An object was deleted. # An object was deleted.
            &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
          },
          &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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &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;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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &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;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;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
            &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
              { # The permission setting of an object.
                &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;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;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, and comment on items.
                &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                  &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
              },
            ],
            &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
              { # The permission setting of an object.
                &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;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;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, and comment on items.
                &quot;user&quot;: { # Information about an end user. # The user to whom this permission applies.
                  &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
              },
            ],
          },
        },
        &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.
        },
      },
    ],
  }</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>