<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="appsactivity_v1.html">Drive Activity API</a> . <a href="appsactivity_v1.activities.html">activities</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(drive_ancestorId=None, drive_fileId=None, groupingStrategy=None, pageSize=None, pageToken=None, source=None, userId=None)</a></code></p>
<p class="firstline">Returns a list of activities visible to the current logged in user. Visible activities are determined by the visibility settings of the object that was acted on, e.g. Drive files a user can see. An activity is a record of past events. Multiple events may be merged if they are similar. A request is scoped to activities from a given Google service using the source parameter.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(drive_ancestorId=None, drive_fileId=None, groupingStrategy=None, pageSize=None, pageToken=None, source=None, userId=None)</code>
  <pre>Returns a list of activities visible to the current logged in user. Visible activities are determined by the visibility settings of the object that was acted on, e.g. Drive files a user can see. An activity is a record of past events. Multiple events may be merged if they are similar. A request is scoped to activities from a given Google service using the source parameter.

Args:
  drive_ancestorId: string, Identifies the Drive folder containing the items for which to return activities.
  drive_fileId: string, Identifies the Drive item to return activities for.
  groupingStrategy: string, Indicates the strategy to use when grouping singleEvents items in the associated combinedEvent object.
    Allowed values
      driveUi - 
      none - 
  pageSize: integer, The maximum number of events to return on a page. The response includes a continuation token if there are more events.
  pageToken: string, A token to retrieve a specific page of results.
  source: string, The Google service from which to return activities. Possible values of source are: 
- drive.google.com
  userId: string, The ID used for ACL checks (does not filter the resulting event list by the assigned value). Use the special value me to indicate the currently authenticated user.

Returns:
  An object of the form:

    { # The response from the list request. Contains a list of activities and a token to retrieve the next page of results.
    &quot;activities&quot;: [ # List of activities.
      { # An Activity resource is a combined view of multiple events. An activity has a list of individual events and a combined view of the common fields among all events.
        &quot;combinedEvent&quot;: { # Represents the changes associated with an action taken by a user. # The fields common to all of the singleEvents that make up the Activity.
          &quot;additionalEventTypes&quot;: [ # Additional event types. Some events may have multiple types when multiple actions are part of a single event. For example, creating a document, renaming it, and sharing it may be part of a single file-creation event.
            &quot;A String&quot;,
          ],
          &quot;eventTimeMillis&quot;: &quot;A String&quot;, # The time at which the event occurred formatted as Unix time in milliseconds.
          &quot;fromUserDeletion&quot;: True or False, # Whether this event is caused by a user being deleted.
          &quot;move&quot;: { # Contains information about changes in an object&#x27;s parents as a result of a move type event. # Extra information for move type events, such as changes in an object&#x27;s parents.
            &quot;addedParents&quot;: [ # The added parent(s).
              { # Contains information about a parent object. For example, a folder in Drive is a parent for all files within it.
                &quot;id&quot;: &quot;A String&quot;, # The parent&#x27;s ID.
                &quot;isRoot&quot;: True or False, # Whether this is the root folder.
                &quot;title&quot;: &quot;A String&quot;, # The parent&#x27;s title.
              },
            ],
            &quot;removedParents&quot;: [ # The removed parent(s).
              { # Contains information about a parent object. For example, a folder in Drive is a parent for all files within it.
                &quot;id&quot;: &quot;A String&quot;, # The parent&#x27;s ID.
                &quot;isRoot&quot;: True or False, # Whether this is the root folder.
                &quot;title&quot;: &quot;A String&quot;, # The parent&#x27;s title.
              },
            ],
          },
          &quot;permissionChanges&quot;: [ # Extra information for permissionChange type events, such as the user or group the new permission applies to.
            { # Contains information about a Drive object&#x27;s permissions that changed as a result of a permissionChange type event.
              &quot;addedPermissions&quot;: [ # Lists all Permission objects added.
                { # Contains information about the permissions and type of access allowed with regards to a Google Drive object. This is a subset of the fields contained in a corresponding Drive Permissions object.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the user or group the permission applies to.
                  &quot;permissionId&quot;: &quot;A String&quot;, # The ID for this permission. Corresponds to the Drive API&#x27;s permission ID returned as part of the Drive Permissions resource.
                  &quot;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, or comment on the file.
                  &quot;type&quot;: &quot;A String&quot;, # Indicates how widely permissions are granted.
                  &quot;user&quot;: { # A representation of a user. # The user&#x27;s information if the type is USER.
                    &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
                    &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
                    &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
                    &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
                    &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
                      &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
                    },
                  },
                  &quot;withLink&quot;: True or False, # Whether the permission requires a link to the file.
                },
              ],
              &quot;removedPermissions&quot;: [ # Lists all Permission objects removed.
                { # Contains information about the permissions and type of access allowed with regards to a Google Drive object. This is a subset of the fields contained in a corresponding Drive Permissions object.
                  &quot;name&quot;: &quot;A String&quot;, # The name of the user or group the permission applies to.
                  &quot;permissionId&quot;: &quot;A String&quot;, # The ID for this permission. Corresponds to the Drive API&#x27;s permission ID returned as part of the Drive Permissions resource.
                  &quot;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, or comment on the file.
                  &quot;type&quot;: &quot;A String&quot;, # Indicates how widely permissions are granted.
                  &quot;user&quot;: { # A representation of a user. # The user&#x27;s information if the type is USER.
                    &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
                    &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
                    &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
                    &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
                    &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
                      &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
                    },
                  },
                  &quot;withLink&quot;: True or False, # Whether the permission requires a link to the file.
                },
              ],
            },
          ],
          &quot;primaryEventType&quot;: &quot;A String&quot;, # The main type of event that occurred.
          &quot;rename&quot;: { # Contains information about a renametype event. # Extra information for rename type events, such as the old and new names.
            &quot;newTitle&quot;: &quot;A String&quot;, # The new title.
            &quot;oldTitle&quot;: &quot;A String&quot;, # The old title.
          },
          &quot;target&quot;: { # Information about the object modified by the event. # Information specific to the Target object modified by the event.
            &quot;id&quot;: &quot;A String&quot;, # The ID of the target. For example, in Google Drive, this is the file or folder ID.
            &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the target.
            &quot;name&quot;: &quot;A String&quot;, # The name of the target. For example, in Google Drive, this is the title of the file.
          },
          &quot;user&quot;: { # A representation of a user. # Represents the user responsible for the event.
            &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
            &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
            &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
            &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
              &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
            },
          },
        },
        &quot;singleEvents&quot;: [ # A list of all the Events that make up the Activity.
          { # Represents the changes associated with an action taken by a user.
            &quot;additionalEventTypes&quot;: [ # Additional event types. Some events may have multiple types when multiple actions are part of a single event. For example, creating a document, renaming it, and sharing it may be part of a single file-creation event.
              &quot;A String&quot;,
            ],
            &quot;eventTimeMillis&quot;: &quot;A String&quot;, # The time at which the event occurred formatted as Unix time in milliseconds.
            &quot;fromUserDeletion&quot;: True or False, # Whether this event is caused by a user being deleted.
            &quot;move&quot;: { # Contains information about changes in an object&#x27;s parents as a result of a move type event. # Extra information for move type events, such as changes in an object&#x27;s parents.
              &quot;addedParents&quot;: [ # The added parent(s).
                { # Contains information about a parent object. For example, a folder in Drive is a parent for all files within it.
                  &quot;id&quot;: &quot;A String&quot;, # The parent&#x27;s ID.
                  &quot;isRoot&quot;: True or False, # Whether this is the root folder.
                  &quot;title&quot;: &quot;A String&quot;, # The parent&#x27;s title.
                },
              ],
              &quot;removedParents&quot;: [ # The removed parent(s).
                { # Contains information about a parent object. For example, a folder in Drive is a parent for all files within it.
                  &quot;id&quot;: &quot;A String&quot;, # The parent&#x27;s ID.
                  &quot;isRoot&quot;: True or False, # Whether this is the root folder.
                  &quot;title&quot;: &quot;A String&quot;, # The parent&#x27;s title.
                },
              ],
            },
            &quot;permissionChanges&quot;: [ # Extra information for permissionChange type events, such as the user or group the new permission applies to.
              { # Contains information about a Drive object&#x27;s permissions that changed as a result of a permissionChange type event.
                &quot;addedPermissions&quot;: [ # Lists all Permission objects added.
                  { # Contains information about the permissions and type of access allowed with regards to a Google Drive object. This is a subset of the fields contained in a corresponding Drive Permissions object.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the user or group the permission applies to.
                    &quot;permissionId&quot;: &quot;A String&quot;, # The ID for this permission. Corresponds to the Drive API&#x27;s permission ID returned as part of the Drive Permissions resource.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, or comment on the file.
                    &quot;type&quot;: &quot;A String&quot;, # Indicates how widely permissions are granted.
                    &quot;user&quot;: { # A representation of a user. # The user&#x27;s information if the type is USER.
                      &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
                      &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
                      &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
                      &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
                      &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
                        &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
                      },
                    },
                    &quot;withLink&quot;: True or False, # Whether the permission requires a link to the file.
                  },
                ],
                &quot;removedPermissions&quot;: [ # Lists all Permission objects removed.
                  { # Contains information about the permissions and type of access allowed with regards to a Google Drive object. This is a subset of the fields contained in a corresponding Drive Permissions object.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the user or group the permission applies to.
                    &quot;permissionId&quot;: &quot;A String&quot;, # The ID for this permission. Corresponds to the Drive API&#x27;s permission ID returned as part of the Drive Permissions resource.
                    &quot;role&quot;: &quot;A String&quot;, # Indicates the Google Drive permissions role. The role determines a user&#x27;s ability to read, write, or comment on the file.
                    &quot;type&quot;: &quot;A String&quot;, # Indicates how widely permissions are granted.
                    &quot;user&quot;: { # A representation of a user. # The user&#x27;s information if the type is USER.
                      &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
                      &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
                      &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
                      &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
                      &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
                        &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
                      },
                    },
                    &quot;withLink&quot;: True or False, # Whether the permission requires a link to the file.
                  },
                ],
              },
            ],
            &quot;primaryEventType&quot;: &quot;A String&quot;, # The main type of event that occurred.
            &quot;rename&quot;: { # Contains information about a renametype event. # Extra information for rename type events, such as the old and new names.
              &quot;newTitle&quot;: &quot;A String&quot;, # The new title.
              &quot;oldTitle&quot;: &quot;A String&quot;, # The old title.
            },
            &quot;target&quot;: { # Information about the object modified by the event. # Information specific to the Target object modified by the event.
              &quot;id&quot;: &quot;A String&quot;, # The ID of the target. For example, in Google Drive, this is the file or folder ID.
              &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the target.
              &quot;name&quot;: &quot;A String&quot;, # The name of the target. For example, in Google Drive, this is the title of the file.
            },
            &quot;user&quot;: { # A representation of a user. # Represents the user responsible for the event.
              &quot;isDeleted&quot;: True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
              &quot;isMe&quot;: True or False, # Whether the user is the authenticated user.
              &quot;name&quot;: &quot;A String&quot;, # The displayable name of the user.
              &quot;permissionId&quot;: &quot;A String&quot;, # The permission ID associated with this user. Equivalent to the Drive API&#x27;s permission ID for this user, returned as part of the Drive Permissions resource.
              &quot;photo&quot;: { # Photo information for a user. # The profile photo of the user. Not present if the user has no profile photo.
                &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
              },
            },
          },
        ],
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token for the next page of results.
  }</pre>
</div>

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

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

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

</body></html>