<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;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;itemName&quot;: &quot;A String&quot;, # Return activities for this Drive item. The format is &quot;items/ITEM_ID&quot;.
    &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;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;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;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.
  }

  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;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;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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                },
                &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;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;move&quot;: { # An object was moved. # An object was moved.
            &quot;addedParents&quot;: [ # The added parent object(s).
              { # A lightweight reference to the target of activity.
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                },
                &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;removedParents&quot;: [ # The removed parent object(s).
              { # A lightweight reference to the target of activity.
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                },
                &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;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;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;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;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
                &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;group&quot;: { # Information about a group. # The group to whom this permission applies.
                  &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                },
                &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                },
                &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;removedPermissions&quot;: [ # The set of permissions removed by this change.
              { # The permission setting of an object.
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
                &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;group&quot;: { # Information about a group. # The group to whom this permission applies.
                  &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                },
                &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                },
                &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;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;comment&quot;: { # A change about comments on an object. # A change about comments was made.
            &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
              },
            ],
            &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;assignment&quot;: { # A comment with an assignment. # A change on an assignment.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
              &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
              },
            },
            &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;delete&quot;: { # An object was deleted. # An object was deleted.
            &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
          },
          &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;timeRange&quot;: { # Information about time ranges. # The activity occurred over this time range.
          &quot;endTime&quot;: &quot;A String&quot;, # The end of the time range.
          &quot;startTime&quot;: &quot;A String&quot;, # The start of the time range.
        },
        &quot;actors&quot;: [ # All actor(s) responsible for the activity.
          { # The actor of a Drive activity.
            &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;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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
              },
            },
            &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated user should be anonymized. # An anonymous user.
            },
            &quot;administrator&quot;: { # Empty message representing an administrator. # An administrator.
            },
            &quot;user&quot;: { # Information about an end user. # An end user.
              &quot;knownUser&quot;: { # A known user. # A known user.
                &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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
              },
              &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
              },
              &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
              },
            },
          },
        ],
        &quot;timestamp&quot;: &quot;A String&quot;, # The activity occurred at this specific time.
        &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;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
              &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;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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                &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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  },
                  &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                  &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
              },
              &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;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;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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  },
                  &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                  &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;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;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 shared drive.
            },
            &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
              &quot;root&quot;: { # A Drive item, such as a file or folder. # This field is deprecated; please see `Drive.root` 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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  },
                  &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                  &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
              },
              &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.title` instead.
              &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` instead.
            },
            &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
              &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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
              &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                  &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                },
                &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                },
                &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
              },
            },
          },
        ],
        &quot;actions&quot;: [ # Details on all actions in this activity.
          { # Information about the action.
            &quot;timeRange&quot;: { # Information about time ranges. # The action occurred over this time range.
              &quot;endTime&quot;: &quot;A String&quot;, # The end of the time range.
              &quot;startTime&quot;: &quot;A String&quot;, # The start of the time range.
            },
            &quot;detail&quot;: { # Data describing the type and additional information of an action. # The type and detailed information about the action.
              &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;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;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;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;move&quot;: { # An object was moved. # An object was moved.
                &quot;addedParents&quot;: [ # The added parent object(s).
                  { # A lightweight reference to the target of activity.
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;removedParents&quot;: [ # The removed parent object(s).
                  { # A lightweight reference to the target of activity.
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &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;file&quot;: { # This item is deprecated; please see `DriveFile` instead. # This field is deprecated; please use the `driveFile` field 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;drive&quot;: { # A lightweight reference to 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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;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;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;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;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                    &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;group&quot;: { # Information about a group. # The group to whom this permission applies.
                      &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                    },
                    &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                    },
                    &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;removedPermissions&quot;: [ # The set of permissions removed by this change.
                  { # The permission setting of an object.
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                    &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;group&quot;: { # Information about a group. # The group to whom this permission applies.
                      &quot;email&quot;: &quot;A String&quot;, # The email address of the group.
                      &quot;title&quot;: &quot;A String&quot;, # The title of the group.
                    },
                    &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                    },
                    &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;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;comment&quot;: { # A change about comments on an object. # A change about comments was made.
                &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                ],
                &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;assignment&quot;: { # A comment with an assignment. # A change on an assignment.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                  &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                },
                &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;delete&quot;: { # An object was deleted. # An object was deleted.
                &quot;type&quot;: &quot;A String&quot;, # The type of delete action taken.
              },
              &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;actor&quot;: { # The actor of a Drive activity. # The actor responsible for this action (or empty if all actors are responsible).
              &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;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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                  &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                },
              },
              &quot;anonymous&quot;: { # Empty message representing an anonymous user or indicating the authenticated user should be anonymized. # An anonymous user.
              },
              &quot;administrator&quot;: { # Empty message representing an administrator. # An administrator.
              },
              &quot;user&quot;: { # Information about an end user. # An end user.
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
              },
            },
            &quot;timestamp&quot;: &quot;A String&quot;, # The action occurred at this specific time.
            &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;fileComment&quot;: { # A comment on a file. # The target is a comment on a Drive file.
                &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;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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                  &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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                  &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                    },
                    &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                },
                &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;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;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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                  &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                    },
                    &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;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;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 shared drive.
              },
              &quot;teamDrive&quot;: { # This item is deprecated; please see `Drive` instead. # This field is deprecated; please use the `drive` field instead.
                &quot;root&quot;: { # A Drive item, such as a file or folder. # This field is deprecated; please see `Drive.root` 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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                  &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                    &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                      &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                    },
                    &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                      &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                    },
                    &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                },
                &quot;title&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.title` instead.
                &quot;name&quot;: &quot;A String&quot;, # This field is deprecated; please see `Drive.name` instead.
              },
              &quot;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
                &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;mimeType&quot;: &quot;A String&quot;, # The MIME type of the Drive item. See https://developers.google.com/drive/v3/web/mime-types.
                &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;owner&quot;: { # Information about the owner of a Drive item. # Information about the owner of this Drive item.
                  &quot;drive&quot;: { # A lightweight reference to a shared drive. # The drive that owns the item.
                    &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;title&quot;: &quot;A String&quot;, # The title of the shared drive.
                  },
                  &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;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;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                  },
                  &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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
              },
            },
          },
        ],
      },
    ],
    &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>