<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;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;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;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;none&quot;: { # A strategy which does no consolidation of individual activities. # The individual activities 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;itemName&quot;: &quot;A String&quot;, # Return activities for this Drive item. 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.
  }

  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;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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                  &quot;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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                  &quot;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;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;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;drive&quot;: { # Information about 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;root&quot;: { # A Drive item, such as a file or folder. # The root of this shared drive.
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                },
                &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                  &quot;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;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;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;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
              &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
              &quot;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;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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
                &quot;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;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;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;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;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;feature&quot;: &quot;A String&quot;, # The feature which had a change in restriction policy.
                &quot;newRestriction&quot;: &quot;A String&quot;, # The restriction in place after the 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;comment&quot;: { # A change about comments on an object. # A change about comments was made.
            &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;post&quot;: { # A regular posted comment. # A change on a regular posted comment.
              &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
            },
            &quot;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
              { # Information about an end user.
                &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            ],
            &quot;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            },
          },
          &quot;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;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
            &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
              { # The permission setting of an object.
                &quot;role&quot;: &quot;A String&quot;, # Indicates the 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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;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;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;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
              },
            ],
            &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
              { # The permission setting of an object.
                &quot;role&quot;: &quot;A String&quot;, # Indicates the 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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
                &quot;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;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;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                  &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                },
                &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                },
              },
            ],
          },
          &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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;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;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;reference&quot;: { # Activity in applications other than Drive. # An object was referenced in an application outside of Drive/Docs.
            &quot;type&quot;: &quot;A String&quot;, # The reference type corresponding to this event.
          },
          &quot;create&quot;: { # An object was created. # An object was created.
            &quot;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded to Drive.
            },
            &quot;new&quot;: { # An object was created from scratch. # If present, indicates the object was newly created (e.g. as a blank document), not derived from a Drive object or external object.
            },
            &quot;copy&quot;: { # An object was created by copying an existing object. # If present, indicates the object was created by copying an existing Drive object.
              &quot;originalObject&quot;: { # A lightweight reference to the target of activity. # The the original object.
                &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &quot;title&quot;: &quot;A String&quot;, # The title of the 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;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;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;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
          },
          &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;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;actions&quot;: [ # Details on all actions in this activity.
          { # Information about the action.
            &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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
              &quot;system&quot;: { # Event triggered by system operations instead of end users. # A non-user actor (i.e. system triggered).
                &quot;type&quot;: &quot;A String&quot;, # The type of the system event that may triggered activity.
              },
              &quot;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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                  },
                  &quot;knownUser&quot;: { # A known user. # A known user.
                    &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                    &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                  },
                  &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                  },
                },
              },
            },
            &quot;target&quot;: { # Information about the target of activity. # The target this action affects (or empty if affecting all targets). This represents the state of the target immediately after this action occurred.
              &quot;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;parent&quot;: { # A Drive item, such as a file or folder. # The Drive item containing this comment.
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;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;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;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;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;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;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;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;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;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;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;drive&quot;: { # Information about 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;root&quot;: { # A Drive item, such as a file or folder. # The root of this shared drive.
                  &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                  &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                  &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                  },
                  &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;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;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;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;driveItem&quot;: { # A Drive item, such as a file or folder. # The target is a Drive item.
                &quot;name&quot;: &quot;A String&quot;, # The target Drive item. The format is &quot;items/ITEM_ID&quot;.
                &quot;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;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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                  &quot;domain&quot;: { # Information about a domain. # The domain of the Drive item owner.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                    &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                  },
                  &quot;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;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;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;detail&quot;: { # Data describing the type and additional information of an action. # The type and detailed information about the action.
              &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;feature&quot;: &quot;A String&quot;, # The feature which had a change in restriction policy.
                    &quot;newRestriction&quot;: &quot;A String&quot;, # The restriction in place after the 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;comment&quot;: { # A change about comments on an object. # A change about comments was made.
                &quot;suggestion&quot;: { # A suggestion. # A change on a suggestion.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;post&quot;: { # A regular posted comment. # A change on a regular posted comment.
                  &quot;subtype&quot;: &quot;A String&quot;, # The sub-type of this event.
                },
                &quot;mentionedUsers&quot;: [ # Users who are mentioned in this comment.
                  { # Information about an end user.
                    &quot;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                ],
                &quot;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                    },
                    &quot;knownUser&quot;: { # A known user. # A known user.
                      &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                      &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                    },
                    &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                    },
                  },
                },
              },
              &quot;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;permissionChange&quot;: { # A change of the permission setting on an item. # The permission on an object was changed.
                &quot;removedPermissions&quot;: [ # The set of permissions removed by this change.
                  { # The permission setting of an object.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the 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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;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;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;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                  },
                ],
                &quot;addedPermissions&quot;: [ # The set of permissions added by this change.
                  { # The permission setting of an object.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the 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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                      },
                      &quot;knownUser&quot;: { # A known user. # A known user.
                        &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                        &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                      },
                      &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                      },
                    },
                    &quot;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;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;domain&quot;: { # Information about a domain. # The domain to whom this permission applies.
                      &quot;name&quot;: &quot;A String&quot;, # The name of the domain, e.g. &quot;google.com&quot;.
                      &quot;legacyId&quot;: &quot;A String&quot;, # An opaque string used to identify this domain.
                    },
                    &quot;anyone&quot;: { # Represents any user (including a logged out user). # If set, this permission applies to anyone, even logged out users.
                    },
                  },
                ],
              },
              &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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                      &quot;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;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;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the Drive item.
                      &quot;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;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;reference&quot;: { # Activity in applications other than Drive. # An object was referenced in an application outside of Drive/Docs.
                &quot;type&quot;: &quot;A String&quot;, # The reference type corresponding to this event.
              },
              &quot;create&quot;: { # An object was created. # An object was created.
                &quot;upload&quot;: { # An object was uploaded into Drive. # If present, indicates the object originated externally and was uploaded to Drive.
                },
                &quot;new&quot;: { # An object was created from scratch. # If present, indicates the object was newly created (e.g. as a blank document), not derived from a Drive object or external object.
                },
                &quot;copy&quot;: { # An object was created by copying an existing object. # If present, indicates the object was created by copying an existing Drive object.
                  &quot;originalObject&quot;: { # A lightweight reference to the target of activity. # The the original object.
                    &quot;driveItem&quot;: { # A lightweight reference to a Drive item, such as a file or folder. # The target is a Drive item.
                      &quot;driveFile&quot;: { # A Drive item which is a file. # The Drive item is a file.
                      },
                      &quot;title&quot;: &quot;A String&quot;, # The title of the 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;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;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;edit&quot;: { # An empty message indicating an object was edited. # An object was edited.
              },
              &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;timestamp&quot;: &quot;A String&quot;, # The action occurred at this specific time.
            &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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
              },
              &quot;knownUser&quot;: { # A known user. # A known user.
                &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
              },
              &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
              },
            },
            &quot;system&quot;: { # Event triggered by system operations instead of end users. # A non-user actor (i.e. system triggered).
              &quot;type&quot;: &quot;A String&quot;, # The type of the system event that may triggered activity.
            },
            &quot;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;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;deletedUser&quot;: { # A user whose account has since been deleted. # A user whose account has since been deleted.
                },
                &quot;knownUser&quot;: { # A known user. # A known user.
                  &quot;isCurrentUser&quot;: True or False, # True if this is the user making the request.
                  &quot;personName&quot;: &quot;A String&quot;, # The identifier for this user that can be used with the People API to get more information. The format is &quot;people/ACCOUNT_ID&quot;. See https://developers.google.com/people/.
                },
                &quot;unknownUser&quot;: { # A user about whom nothing is currently known. # A user about whom nothing is currently known.
                },
              },
            },
          },
        ],
      },
    ],
  }</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>