<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="plus_v1.html">Google+ API</a> . <a href="plus_v1.activities.html">activities</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(activityId)</a></code></p>
<p class="firstline">Shut down. See https://developers.google.com/+/api-shutdown for more details.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, collection, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Shut down. See https://developers.google.com/+/api-shutdown for more details.</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>
<p class="toc_element">
  <code><a href="#search">search(query, language=None, maxResults=None, orderBy=None, pageToken=None)</a></code></p>
<p class="firstline">Shut down. See https://developers.google.com/+/api-shutdown for more details.</p>
<p class="toc_element">
  <code><a href="#search_next">search_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="get">get(activityId)</code>
  <pre>Shut down. See https://developers.google.com/+/api-shutdown for more details.

Args:
  activityId: string, The ID of the activity to get. (required)

Returns:
  An object of the form:

    {
    &quot;access&quot;: { # Identifies who has access to see this activity.
      &quot;description&quot;: &quot;A String&quot;, # Description of the access granted, suitable for display.
      &quot;items&quot;: [ # The list of access entries.
        {
          &quot;displayName&quot;: &quot;A String&quot;, # A descriptive name for this entry. Suitable for display.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the entry. For entries of type &quot;person&quot; or &quot;circle&quot;, this is the ID of the resource. For other types, this property is not set.
          &quot;type&quot;: &quot;A String&quot;, # The type of entry describing to whom access is granted. Possible values are:
              # - &quot;person&quot; - Access to an individual.
              # - &quot;circle&quot; - Access to members of a circle.
              # - &quot;myCircles&quot; - Access to members of all the person&#x27;s circles.
              # - &quot;extendedCircles&quot; - Access to members of all the person&#x27;s circles, plus all of the people in their circles.
              # - &quot;domain&quot; - Access to members of the person&#x27;s Google Apps domain.
              # - &quot;public&quot; - Access to anyone on the web.
        },
      ],
      &quot;kind&quot;: &quot;plus#acl&quot;, # Identifies this resource as a collection of access controls. Value: &quot;plus#acl&quot;.
    },
    &quot;actor&quot;: { # The person who performed this activity.
      &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
        &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
          &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
        },
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The name of the actor, suitable for display.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the actor&#x27;s Person resource.
      &quot;image&quot;: { # The image representation of the actor.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the actor&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
      },
      &quot;name&quot;: { # An object representation of the individual components of name.
        &quot;familyName&quot;: &quot;A String&quot;, # The family name (&quot;last name&quot;) of the actor.
        &quot;givenName&quot;: &quot;A String&quot;, # The given name (&quot;first name&quot;) of the actor.
      },
      &quot;url&quot;: &quot;A String&quot;, # The link to the actor&#x27;s Google profile.
      &quot;verification&quot;: { # Verification status of actor.
        &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
      },
    },
    &quot;address&quot;: &quot;A String&quot;, # Street address where this activity occurred.
    &quot;annotation&quot;: &quot;A String&quot;, # Additional content added by the person who shared this activity, applicable only when resharing an activity.
    &quot;crosspostSource&quot;: &quot;A String&quot;, # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;geocode&quot;: &quot;A String&quot;, # Latitude and longitude where this activity occurred. Format is latitude followed by longitude, space separated.
    &quot;id&quot;: &quot;A String&quot;, # The ID of this activity.
    &quot;kind&quot;: &quot;plus#activity&quot;, # Identifies this resource as an activity. Value: &quot;plus#activity&quot;.
    &quot;location&quot;: { # The location where this activity occurred.
      &quot;address&quot;: { # The physical address of the place.
        &quot;formatted&quot;: &quot;A String&quot;, # The formatted address for display.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the place.
      &quot;id&quot;: &quot;A String&quot;, # The id of the place.
      &quot;kind&quot;: &quot;plus#place&quot;, # Identifies this resource as a place. Value: &quot;plus#place&quot;.
      &quot;position&quot;: { # The position of the place.
        &quot;latitude&quot;: 3.14, # The latitude of this position.
        &quot;longitude&quot;: 3.14, # The longitude of this position.
      },
    },
    &quot;object&quot;: { # The object of this activity.
      &quot;actor&quot;: { # If this activity&#x27;s object is itself another activity, such as when a person reshares an activity, this property specifies the original activity&#x27;s actor.
        &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
          &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
            &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
          },
        },
        &quot;displayName&quot;: &quot;A String&quot;, # The original actor&#x27;s name, which is suitable for display.
        &quot;id&quot;: &quot;A String&quot;, # ID of the original actor.
        &quot;image&quot;: { # The image representation of the original actor.
          &quot;url&quot;: &quot;A String&quot;, # A URL that points to a thumbnail photo of the original actor.
        },
        &quot;url&quot;: &quot;A String&quot;, # A link to the original actor&#x27;s Google profile.
        &quot;verification&quot;: { # Verification status of actor.
          &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
        },
      },
      &quot;attachments&quot;: [ # The media objects attached to this activity.
        {
          &quot;content&quot;: &quot;A String&quot;, # If the attachment is an article, this property contains a snippet of text from the article. It can also include descriptions for other types.
          &quot;displayName&quot;: &quot;A String&quot;, # The title of the attachment, such as a photo caption or an article title.
          &quot;embed&quot;: { # If the attachment is a video, the embeddable link.
            &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
            &quot;url&quot;: &quot;A String&quot;, # URL of the link.
          },
          &quot;fullImage&quot;: { # The full image URL for photo attachments.
            &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
            &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
            &quot;url&quot;: &quot;A String&quot;, # URL of the image.
            &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
          },
          &quot;id&quot;: &quot;A String&quot;, # The ID of the attachment.
          &quot;image&quot;: { # The preview image for photos or videos.
            &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
            &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
            &quot;url&quot;: &quot;A String&quot;, # Image URL.
            &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
          },
          &quot;objectType&quot;: &quot;A String&quot;, # The type of media object. Possible values include, but are not limited to, the following values:
              # - &quot;photo&quot; - A photo.
              # - &quot;album&quot; - A photo album.
              # - &quot;video&quot; - A video.
              # - &quot;article&quot; - An article, specified by a link.
          &quot;thumbnails&quot;: [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
            {
              &quot;description&quot;: &quot;A String&quot;, # Potential name of the thumbnail.
              &quot;image&quot;: { # Image resource.
                &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # Image url.
                &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
              },
              &quot;url&quot;: &quot;A String&quot;, # URL of the webpage containing the image.
            },
          ],
          &quot;url&quot;: &quot;A String&quot;, # The link to the attachment, which should be of type text/html.
        },
      ],
      &quot;content&quot;: &quot;A String&quot;, # The HTML-formatted content, which is suitable for display.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
      &quot;objectType&quot;: &quot;A String&quot;, # The type of the object. Possible values include, but are not limited to, the following values:
          # - &quot;note&quot; - Textual content.
          # - &quot;activity&quot; - A Google+ activity.
      &quot;originalContent&quot;: &quot;A String&quot;, # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
      &quot;plusoners&quot;: { # People who +1&#x27;d this activity.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of people who +1&#x27;d this activity.
        &quot;totalItems&quot;: 42, # Total number of people who +1&#x27;d this activity.
      },
      &quot;replies&quot;: { # Comments in reply to this activity.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of comments in reply to this activity.
        &quot;totalItems&quot;: 42, # Total number of comments on this activity.
      },
      &quot;resharers&quot;: { # People who reshared this activity.
        &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of resharers.
        &quot;totalItems&quot;: 42, # Total number of people who reshared this activity.
      },
      &quot;url&quot;: &quot;A String&quot;, # The URL that points to the linked resource.
    },
    &quot;placeId&quot;: &quot;A String&quot;, # ID of the place where this activity occurred.
    &quot;placeName&quot;: &quot;A String&quot;, # Name of the place where this activity occurred.
    &quot;provider&quot;: { # The service provider that initially published this activity.
      &quot;title&quot;: &quot;A String&quot;, # Name of the service provider.
    },
    &quot;published&quot;: &quot;A String&quot;, # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
    &quot;radius&quot;: &quot;A String&quot;, # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
    &quot;title&quot;: &quot;A String&quot;, # Title of this activity.
    &quot;updated&quot;: &quot;A String&quot;, # The time at which this activity was last updated. Formatted as an RFC 3339 timestamp.
    &quot;url&quot;: &quot;A String&quot;, # The link to this activity.
    &quot;verb&quot;: &quot;A String&quot;, # This activity&#x27;s verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
        # - &quot;post&quot; - Publish content to the stream.
        # - &quot;share&quot; - Reshare an activity.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, collection, maxResults=None, pageToken=None)</code>
  <pre>Shut down. See https://developers.google.com/+/api-shutdown for more details.

Args:
  userId: string, The ID of the user to get activities for. The special value &quot;me&quot; can be used to indicate the authenticated user. (required)
  collection: string, The collection of activities to list. (required)
    Allowed values
      public - All public activities created by the specified user.
  maxResults: integer, The maximum number of activities to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID of this collection of activities. Deprecated.
    &quot;items&quot;: [ # The activities in this page of results.
      {
        &quot;access&quot;: { # Identifies who has access to see this activity.
          &quot;description&quot;: &quot;A String&quot;, # Description of the access granted, suitable for display.
          &quot;items&quot;: [ # The list of access entries.
            {
              &quot;displayName&quot;: &quot;A String&quot;, # A descriptive name for this entry. Suitable for display.
              &quot;id&quot;: &quot;A String&quot;, # The ID of the entry. For entries of type &quot;person&quot; or &quot;circle&quot;, this is the ID of the resource. For other types, this property is not set.
              &quot;type&quot;: &quot;A String&quot;, # The type of entry describing to whom access is granted. Possible values are:
                  # - &quot;person&quot; - Access to an individual.
                  # - &quot;circle&quot; - Access to members of a circle.
                  # - &quot;myCircles&quot; - Access to members of all the person&#x27;s circles.
                  # - &quot;extendedCircles&quot; - Access to members of all the person&#x27;s circles, plus all of the people in their circles.
                  # - &quot;domain&quot; - Access to members of the person&#x27;s Google Apps domain.
                  # - &quot;public&quot; - Access to anyone on the web.
            },
          ],
          &quot;kind&quot;: &quot;plus#acl&quot;, # Identifies this resource as a collection of access controls. Value: &quot;plus#acl&quot;.
        },
        &quot;actor&quot;: { # The person who performed this activity.
          &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
            &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
              &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
            },
          },
          &quot;displayName&quot;: &quot;A String&quot;, # The name of the actor, suitable for display.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the actor&#x27;s Person resource.
          &quot;image&quot;: { # The image representation of the actor.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the actor&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
          },
          &quot;name&quot;: { # An object representation of the individual components of name.
            &quot;familyName&quot;: &quot;A String&quot;, # The family name (&quot;last name&quot;) of the actor.
            &quot;givenName&quot;: &quot;A String&quot;, # The given name (&quot;first name&quot;) of the actor.
          },
          &quot;url&quot;: &quot;A String&quot;, # The link to the actor&#x27;s Google profile.
          &quot;verification&quot;: { # Verification status of actor.
            &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
          },
        },
        &quot;address&quot;: &quot;A String&quot;, # Street address where this activity occurred.
        &quot;annotation&quot;: &quot;A String&quot;, # Additional content added by the person who shared this activity, applicable only when resharing an activity.
        &quot;crosspostSource&quot;: &quot;A String&quot;, # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
        &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
        &quot;geocode&quot;: &quot;A String&quot;, # Latitude and longitude where this activity occurred. Format is latitude followed by longitude, space separated.
        &quot;id&quot;: &quot;A String&quot;, # The ID of this activity.
        &quot;kind&quot;: &quot;plus#activity&quot;, # Identifies this resource as an activity. Value: &quot;plus#activity&quot;.
        &quot;location&quot;: { # The location where this activity occurred.
          &quot;address&quot;: { # The physical address of the place.
            &quot;formatted&quot;: &quot;A String&quot;, # The formatted address for display.
          },
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of the place.
          &quot;id&quot;: &quot;A String&quot;, # The id of the place.
          &quot;kind&quot;: &quot;plus#place&quot;, # Identifies this resource as a place. Value: &quot;plus#place&quot;.
          &quot;position&quot;: { # The position of the place.
            &quot;latitude&quot;: 3.14, # The latitude of this position.
            &quot;longitude&quot;: 3.14, # The longitude of this position.
          },
        },
        &quot;object&quot;: { # The object of this activity.
          &quot;actor&quot;: { # If this activity&#x27;s object is itself another activity, such as when a person reshares an activity, this property specifies the original activity&#x27;s actor.
            &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
              &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
                &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
              },
            },
            &quot;displayName&quot;: &quot;A String&quot;, # The original actor&#x27;s name, which is suitable for display.
            &quot;id&quot;: &quot;A String&quot;, # ID of the original actor.
            &quot;image&quot;: { # The image representation of the original actor.
              &quot;url&quot;: &quot;A String&quot;, # A URL that points to a thumbnail photo of the original actor.
            },
            &quot;url&quot;: &quot;A String&quot;, # A link to the original actor&#x27;s Google profile.
            &quot;verification&quot;: { # Verification status of actor.
              &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
            },
          },
          &quot;attachments&quot;: [ # The media objects attached to this activity.
            {
              &quot;content&quot;: &quot;A String&quot;, # If the attachment is an article, this property contains a snippet of text from the article. It can also include descriptions for other types.
              &quot;displayName&quot;: &quot;A String&quot;, # The title of the attachment, such as a photo caption or an article title.
              &quot;embed&quot;: { # If the attachment is a video, the embeddable link.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # URL of the link.
              },
              &quot;fullImage&quot;: { # The full image URL for photo attachments.
                &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # URL of the image.
                &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
              },
              &quot;id&quot;: &quot;A String&quot;, # The ID of the attachment.
              &quot;image&quot;: { # The preview image for photos or videos.
                &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # Image URL.
                &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
              },
              &quot;objectType&quot;: &quot;A String&quot;, # The type of media object. Possible values include, but are not limited to, the following values:
                  # - &quot;photo&quot; - A photo.
                  # - &quot;album&quot; - A photo album.
                  # - &quot;video&quot; - A video.
                  # - &quot;article&quot; - An article, specified by a link.
              &quot;thumbnails&quot;: [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
                {
                  &quot;description&quot;: &quot;A String&quot;, # Potential name of the thumbnail.
                  &quot;image&quot;: { # Image resource.
                    &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                    &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                    &quot;url&quot;: &quot;A String&quot;, # Image url.
                    &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
                  },
                  &quot;url&quot;: &quot;A String&quot;, # URL of the webpage containing the image.
                },
              ],
              &quot;url&quot;: &quot;A String&quot;, # The link to the attachment, which should be of type text/html.
            },
          ],
          &quot;content&quot;: &quot;A String&quot;, # The HTML-formatted content, which is suitable for display.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
          &quot;objectType&quot;: &quot;A String&quot;, # The type of the object. Possible values include, but are not limited to, the following values:
              # - &quot;note&quot; - Textual content.
              # - &quot;activity&quot; - A Google+ activity.
          &quot;originalContent&quot;: &quot;A String&quot;, # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
          &quot;plusoners&quot;: { # People who +1&#x27;d this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of people who +1&#x27;d this activity.
            &quot;totalItems&quot;: 42, # Total number of people who +1&#x27;d this activity.
          },
          &quot;replies&quot;: { # Comments in reply to this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of comments in reply to this activity.
            &quot;totalItems&quot;: 42, # Total number of comments on this activity.
          },
          &quot;resharers&quot;: { # People who reshared this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of resharers.
            &quot;totalItems&quot;: 42, # Total number of people who reshared this activity.
          },
          &quot;url&quot;: &quot;A String&quot;, # The URL that points to the linked resource.
        },
        &quot;placeId&quot;: &quot;A String&quot;, # ID of the place where this activity occurred.
        &quot;placeName&quot;: &quot;A String&quot;, # Name of the place where this activity occurred.
        &quot;provider&quot;: { # The service provider that initially published this activity.
          &quot;title&quot;: &quot;A String&quot;, # Name of the service provider.
        },
        &quot;published&quot;: &quot;A String&quot;, # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
        &quot;radius&quot;: &quot;A String&quot;, # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
        &quot;title&quot;: &quot;A String&quot;, # Title of this activity.
        &quot;updated&quot;: &quot;A String&quot;, # The time at which this activity was last updated. Formatted as an RFC 3339 timestamp.
        &quot;url&quot;: &quot;A String&quot;, # The link to this activity.
        &quot;verb&quot;: &quot;A String&quot;, # This activity&#x27;s verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
            # - &quot;post&quot; - Publish content to the stream.
            # - &quot;share&quot; - Reshare an activity.
      },
    ],
    &quot;kind&quot;: &quot;plus#activityFeed&quot;, # Identifies this resource as a collection of activities. Value: &quot;plus#activityFeed&quot;.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to the next page of activities.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link to this activity resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of this collection of activities, which is a truncated portion of the content.
    &quot;updated&quot;: &quot;A String&quot;, # The time at which this collection of activities was last updated. Formatted as an RFC 3339 timestamp.
  }</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>

<div class="method">
    <code class="details" id="search">search(query, language=None, maxResults=None, orderBy=None, pageToken=None)</code>
  <pre>Shut down. See https://developers.google.com/+/api-shutdown for more details.

Args:
  query: string, Full-text search query string. (required)
  language: string, Specify the preferred language to search with. See search language codes for available values.
  maxResults: integer, The maximum number of activities to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  orderBy: string, Specifies how to order search results.
    Allowed values
      best - Sort activities by relevance to the user, most relevant first.
      recent - Sort activities by published date, most recent first.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response. This token can be of any length.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID of this collection of activities. Deprecated.
    &quot;items&quot;: [ # The activities in this page of results.
      {
        &quot;access&quot;: { # Identifies who has access to see this activity.
          &quot;description&quot;: &quot;A String&quot;, # Description of the access granted, suitable for display.
          &quot;items&quot;: [ # The list of access entries.
            {
              &quot;displayName&quot;: &quot;A String&quot;, # A descriptive name for this entry. Suitable for display.
              &quot;id&quot;: &quot;A String&quot;, # The ID of the entry. For entries of type &quot;person&quot; or &quot;circle&quot;, this is the ID of the resource. For other types, this property is not set.
              &quot;type&quot;: &quot;A String&quot;, # The type of entry describing to whom access is granted. Possible values are:
                  # - &quot;person&quot; - Access to an individual.
                  # - &quot;circle&quot; - Access to members of a circle.
                  # - &quot;myCircles&quot; - Access to members of all the person&#x27;s circles.
                  # - &quot;extendedCircles&quot; - Access to members of all the person&#x27;s circles, plus all of the people in their circles.
                  # - &quot;domain&quot; - Access to members of the person&#x27;s Google Apps domain.
                  # - &quot;public&quot; - Access to anyone on the web.
            },
          ],
          &quot;kind&quot;: &quot;plus#acl&quot;, # Identifies this resource as a collection of access controls. Value: &quot;plus#acl&quot;.
        },
        &quot;actor&quot;: { # The person who performed this activity.
          &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
            &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
              &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
            },
          },
          &quot;displayName&quot;: &quot;A String&quot;, # The name of the actor, suitable for display.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the actor&#x27;s Person resource.
          &quot;image&quot;: { # The image representation of the actor.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the actor&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
          },
          &quot;name&quot;: { # An object representation of the individual components of name.
            &quot;familyName&quot;: &quot;A String&quot;, # The family name (&quot;last name&quot;) of the actor.
            &quot;givenName&quot;: &quot;A String&quot;, # The given name (&quot;first name&quot;) of the actor.
          },
          &quot;url&quot;: &quot;A String&quot;, # The link to the actor&#x27;s Google profile.
          &quot;verification&quot;: { # Verification status of actor.
            &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
          },
        },
        &quot;address&quot;: &quot;A String&quot;, # Street address where this activity occurred.
        &quot;annotation&quot;: &quot;A String&quot;, # Additional content added by the person who shared this activity, applicable only when resharing an activity.
        &quot;crosspostSource&quot;: &quot;A String&quot;, # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
        &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
        &quot;geocode&quot;: &quot;A String&quot;, # Latitude and longitude where this activity occurred. Format is latitude followed by longitude, space separated.
        &quot;id&quot;: &quot;A String&quot;, # The ID of this activity.
        &quot;kind&quot;: &quot;plus#activity&quot;, # Identifies this resource as an activity. Value: &quot;plus#activity&quot;.
        &quot;location&quot;: { # The location where this activity occurred.
          &quot;address&quot;: { # The physical address of the place.
            &quot;formatted&quot;: &quot;A String&quot;, # The formatted address for display.
          },
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of the place.
          &quot;id&quot;: &quot;A String&quot;, # The id of the place.
          &quot;kind&quot;: &quot;plus#place&quot;, # Identifies this resource as a place. Value: &quot;plus#place&quot;.
          &quot;position&quot;: { # The position of the place.
            &quot;latitude&quot;: 3.14, # The latitude of this position.
            &quot;longitude&quot;: 3.14, # The longitude of this position.
          },
        },
        &quot;object&quot;: { # The object of this activity.
          &quot;actor&quot;: { # If this activity&#x27;s object is itself another activity, such as when a person reshares an activity, this property specifies the original activity&#x27;s actor.
            &quot;clientSpecificActorInfo&quot;: { # Actor info specific to particular clients.
              &quot;youtubeActorInfo&quot;: { # Actor info specific to YouTube clients.
                &quot;channelId&quot;: &quot;A String&quot;, # ID of the YouTube channel owned by the Actor.
              },
            },
            &quot;displayName&quot;: &quot;A String&quot;, # The original actor&#x27;s name, which is suitable for display.
            &quot;id&quot;: &quot;A String&quot;, # ID of the original actor.
            &quot;image&quot;: { # The image representation of the original actor.
              &quot;url&quot;: &quot;A String&quot;, # A URL that points to a thumbnail photo of the original actor.
            },
            &quot;url&quot;: &quot;A String&quot;, # A link to the original actor&#x27;s Google profile.
            &quot;verification&quot;: { # Verification status of actor.
              &quot;adHocVerified&quot;: &quot;A String&quot;, # Verification for one-time or manual processes.
            },
          },
          &quot;attachments&quot;: [ # The media objects attached to this activity.
            {
              &quot;content&quot;: &quot;A String&quot;, # If the attachment is an article, this property contains a snippet of text from the article. It can also include descriptions for other types.
              &quot;displayName&quot;: &quot;A String&quot;, # The title of the attachment, such as a photo caption or an article title.
              &quot;embed&quot;: { # If the attachment is a video, the embeddable link.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # URL of the link.
              },
              &quot;fullImage&quot;: { # The full image URL for photo attachments.
                &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # URL of the image.
                &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
              },
              &quot;id&quot;: &quot;A String&quot;, # The ID of the attachment.
              &quot;image&quot;: { # The preview image for photos or videos.
                &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                &quot;url&quot;: &quot;A String&quot;, # Image URL.
                &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
              },
              &quot;objectType&quot;: &quot;A String&quot;, # The type of media object. Possible values include, but are not limited to, the following values:
                  # - &quot;photo&quot; - A photo.
                  # - &quot;album&quot; - A photo album.
                  # - &quot;video&quot; - A video.
                  # - &quot;article&quot; - An article, specified by a link.
              &quot;thumbnails&quot;: [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
                {
                  &quot;description&quot;: &quot;A String&quot;, # Potential name of the thumbnail.
                  &quot;image&quot;: { # Image resource.
                    &quot;height&quot;: 42, # The height, in pixels, of the linked resource.
                    &quot;type&quot;: &quot;A String&quot;, # Media type of the link.
                    &quot;url&quot;: &quot;A String&quot;, # Image url.
                    &quot;width&quot;: 42, # The width, in pixels, of the linked resource.
                  },
                  &quot;url&quot;: &quot;A String&quot;, # URL of the webpage containing the image.
                },
              ],
              &quot;url&quot;: &quot;A String&quot;, # The link to the attachment, which should be of type text/html.
            },
          ],
          &quot;content&quot;: &quot;A String&quot;, # The HTML-formatted content, which is suitable for display.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
          &quot;objectType&quot;: &quot;A String&quot;, # The type of the object. Possible values include, but are not limited to, the following values:
              # - &quot;note&quot; - Textual content.
              # - &quot;activity&quot; - A Google+ activity.
          &quot;originalContent&quot;: &quot;A String&quot;, # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
          &quot;plusoners&quot;: { # People who +1&#x27;d this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of people who +1&#x27;d this activity.
            &quot;totalItems&quot;: 42, # Total number of people who +1&#x27;d this activity.
          },
          &quot;replies&quot;: { # Comments in reply to this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of comments in reply to this activity.
            &quot;totalItems&quot;: 42, # Total number of comments on this activity.
          },
          &quot;resharers&quot;: { # People who reshared this activity.
            &quot;selfLink&quot;: &quot;A String&quot;, # The URL for the collection of resharers.
            &quot;totalItems&quot;: 42, # Total number of people who reshared this activity.
          },
          &quot;url&quot;: &quot;A String&quot;, # The URL that points to the linked resource.
        },
        &quot;placeId&quot;: &quot;A String&quot;, # ID of the place where this activity occurred.
        &quot;placeName&quot;: &quot;A String&quot;, # Name of the place where this activity occurred.
        &quot;provider&quot;: { # The service provider that initially published this activity.
          &quot;title&quot;: &quot;A String&quot;, # Name of the service provider.
        },
        &quot;published&quot;: &quot;A String&quot;, # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
        &quot;radius&quot;: &quot;A String&quot;, # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
        &quot;title&quot;: &quot;A String&quot;, # Title of this activity.
        &quot;updated&quot;: &quot;A String&quot;, # The time at which this activity was last updated. Formatted as an RFC 3339 timestamp.
        &quot;url&quot;: &quot;A String&quot;, # The link to this activity.
        &quot;verb&quot;: &quot;A String&quot;, # This activity&#x27;s verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
            # - &quot;post&quot; - Publish content to the stream.
            # - &quot;share&quot; - Reshare an activity.
      },
    ],
    &quot;kind&quot;: &quot;plus#activityFeed&quot;, # Identifies this resource as a collection of activities. Value: &quot;plus#activityFeed&quot;.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to the next page of activities.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link to this activity resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of this collection of activities, which is a truncated portion of the content.
    &quot;updated&quot;: &quot;A String&quot;, # The time at which this collection of activities was last updated. Formatted as an RFC 3339 timestamp.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_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>