<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.moments.html">moments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#insert">insert(userId, collection, body, debug=None)</a></code></p>
<p class="firstline">Record a moment representing a user's activity such as making a purchase or commenting on a blog.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, collection, pageToken=None, maxResults=None, targetUrl=None, type=None)</a></code></p>
<p class="firstline">List all of the moments for a particular user.</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="#remove">remove(id)</a></code></p>
<p class="firstline">Delete a moment.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="insert">insert(userId, collection, body, debug=None)</code>
  <pre>Record a moment representing a user's activity such as making a purchase or commenting on a blog.

Args:
  userId: string, The ID of the user to record activities for. The only valid values are "me" and the ID of the authenticated user. (required)
  collection: string, The collection to which to write moments. (required)
    Allowed values
      vault - The default collection for writing new moments.
  body: object, The request body. (required)
    The object takes the form of:

{
    "startDate": "A String", # Time stamp of when the action occurred in RFC3339 format.
    "kind": "plus#moment", # Identifies this resource as a moment.
    "target": { # The object on which the action was performed.
      "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
      "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
      "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
      "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
      "address": # Object with schema name: ItemScope # Postal address.
      "birthDate": "A String", # Date of birth.
      "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
      "addressLocality": "A String", # Address locality.
      "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
      "additionalName": [ # An additional name for a Person, can be used for a middle name.
        "A String",
      ],
      "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
      "contributor": [ # A list of contributors to this result.
        # Object with schema name: ItemScope
      ],
      "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
      "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
      "postOfficeBoxNumber": "A String", # Post office box number.
      "attendees": [ # A person attending the event.
        # Object with schema name: ItemScope
      ],
      "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
        # Object with schema name: ItemScope
      ],
      "associated_media": [ # The encoding.
        # Object with schema name: ItemScope
      ],
      "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
      "addressCountry": "A String", # Address country.
      "width": "A String", # The width of the media object.
      "streetAddress": "A String", # Street address.
      "location": # Object with schema name: ItemScope # The location of the event or organization.
      "latitude": 3.14, # Latitude.
      "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
      "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
      "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
      "contentSize": "A String", # File size in (mega/kilo) bytes.
      "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
      "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
      "description": "A String", # The string that describes the content of the result.
      "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
      "kind": "plus#itemScope", # Identifies this resource as an itemScope.
      "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
      "postalCode": "A String", # Postal code.
      "attendeeCount": 42, # Number of attendees.
      "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
      "addressRegion": "A String", # Address region.
      "height": "A String", # The height of the media object.
      "geo": # Object with schema name: ItemScope # Geo coordinates.
      "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
      "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
      "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
      "about": # Object with schema name: ItemScope # The subject matter of the content.
      "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
      "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
      "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
        # Object with schema name: ItemScope
      ],
      "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
      "gender": "A String", # Gender of the person.
      "longitude": 3.14, # Longitude.
      "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
      "caption": "A String", # The caption for this object.
      "ratingValue": "A String", # Rating value.
      "reviewRating": # Object with schema name: ItemScope # Review rating.
      "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
    },
    "result": { # The object generated by performing the action on the target. For example, a user writes a review of a restaurant, the target is the restaurant and the result is the review.
      "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
      "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
      "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
      "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
      "address": # Object with schema name: ItemScope # Postal address.
      "birthDate": "A String", # Date of birth.
      "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
      "addressLocality": "A String", # Address locality.
      "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
      "additionalName": [ # An additional name for a Person, can be used for a middle name.
        "A String",
      ],
      "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
      "contributor": [ # A list of contributors to this result.
        # Object with schema name: ItemScope
      ],
      "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
      "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
      "postOfficeBoxNumber": "A String", # Post office box number.
      "attendees": [ # A person attending the event.
        # Object with schema name: ItemScope
      ],
      "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
        # Object with schema name: ItemScope
      ],
      "associated_media": [ # The encoding.
        # Object with schema name: ItemScope
      ],
      "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
      "addressCountry": "A String", # Address country.
      "width": "A String", # The width of the media object.
      "streetAddress": "A String", # Street address.
      "location": # Object with schema name: ItemScope # The location of the event or organization.
      "latitude": 3.14, # Latitude.
      "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
      "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
      "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
      "contentSize": "A String", # File size in (mega/kilo) bytes.
      "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
      "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
      "description": "A String", # The string that describes the content of the result.
      "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
      "kind": "plus#itemScope", # Identifies this resource as an itemScope.
      "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
      "postalCode": "A String", # Postal code.
      "attendeeCount": 42, # Number of attendees.
      "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
      "addressRegion": "A String", # Address region.
      "height": "A String", # The height of the media object.
      "geo": # Object with schema name: ItemScope # Geo coordinates.
      "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
      "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
      "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
      "about": # Object with schema name: ItemScope # The subject matter of the content.
      "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
      "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
      "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
        # Object with schema name: ItemScope
      ],
      "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
      "gender": "A String", # Gender of the person.
      "longitude": 3.14, # Longitude.
      "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
      "caption": "A String", # The caption for this object.
      "ratingValue": "A String", # Rating value.
      "reviewRating": # Object with schema name: ItemScope # Review rating.
      "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
    },
    "type": "A String", # The Google schema for the type of moment to write. For example, http://schemas.google.com/AddActivity.
    "id": "A String", # The moment ID.
  }

  debug: boolean, Return the moment as written. Should be used only for debugging.

Returns:
  An object of the form:

    {
      "startDate": "A String", # Time stamp of when the action occurred in RFC3339 format.
      "kind": "plus#moment", # Identifies this resource as a moment.
      "target": { # The object on which the action was performed.
        "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
        "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
        "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
        "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
        "address": # Object with schema name: ItemScope # Postal address.
        "birthDate": "A String", # Date of birth.
        "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
        "addressLocality": "A String", # Address locality.
        "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
        "additionalName": [ # An additional name for a Person, can be used for a middle name.
          "A String",
        ],
        "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
        "contributor": [ # A list of contributors to this result.
          # Object with schema name: ItemScope
        ],
        "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
        "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
        "postOfficeBoxNumber": "A String", # Post office box number.
        "attendees": [ # A person attending the event.
          # Object with schema name: ItemScope
        ],
        "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
          # Object with schema name: ItemScope
        ],
        "associated_media": [ # The encoding.
          # Object with schema name: ItemScope
        ],
        "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
        "addressCountry": "A String", # Address country.
        "width": "A String", # The width of the media object.
        "streetAddress": "A String", # Street address.
        "location": # Object with schema name: ItemScope # The location of the event or organization.
        "latitude": 3.14, # Latitude.
        "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
        "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
        "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
        "contentSize": "A String", # File size in (mega/kilo) bytes.
        "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
        "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
        "description": "A String", # The string that describes the content of the result.
        "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
        "kind": "plus#itemScope", # Identifies this resource as an itemScope.
        "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
        "postalCode": "A String", # Postal code.
        "attendeeCount": 42, # Number of attendees.
        "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
        "addressRegion": "A String", # Address region.
        "height": "A String", # The height of the media object.
        "geo": # Object with schema name: ItemScope # Geo coordinates.
        "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
        "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
        "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
        "about": # Object with schema name: ItemScope # The subject matter of the content.
        "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
        "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
        "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
          # Object with schema name: ItemScope
        ],
        "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
        "gender": "A String", # Gender of the person.
        "longitude": 3.14, # Longitude.
        "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
        "caption": "A String", # The caption for this object.
        "ratingValue": "A String", # Rating value.
        "reviewRating": # Object with schema name: ItemScope # Review rating.
        "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
      },
      "result": { # The object generated by performing the action on the target. For example, a user writes a review of a restaurant, the target is the restaurant and the result is the review.
        "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
        "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
        "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
        "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
        "address": # Object with schema name: ItemScope # Postal address.
        "birthDate": "A String", # Date of birth.
        "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
        "addressLocality": "A String", # Address locality.
        "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
        "additionalName": [ # An additional name for a Person, can be used for a middle name.
          "A String",
        ],
        "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
        "contributor": [ # A list of contributors to this result.
          # Object with schema name: ItemScope
        ],
        "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
        "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
        "postOfficeBoxNumber": "A String", # Post office box number.
        "attendees": [ # A person attending the event.
          # Object with schema name: ItemScope
        ],
        "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
          # Object with schema name: ItemScope
        ],
        "associated_media": [ # The encoding.
          # Object with schema name: ItemScope
        ],
        "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
        "addressCountry": "A String", # Address country.
        "width": "A String", # The width of the media object.
        "streetAddress": "A String", # Street address.
        "location": # Object with schema name: ItemScope # The location of the event or organization.
        "latitude": 3.14, # Latitude.
        "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
        "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
        "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
        "contentSize": "A String", # File size in (mega/kilo) bytes.
        "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
        "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
        "description": "A String", # The string that describes the content of the result.
        "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
        "kind": "plus#itemScope", # Identifies this resource as an itemScope.
        "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
        "postalCode": "A String", # Postal code.
        "attendeeCount": 42, # Number of attendees.
        "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
        "addressRegion": "A String", # Address region.
        "height": "A String", # The height of the media object.
        "geo": # Object with schema name: ItemScope # Geo coordinates.
        "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
        "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
        "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
        "about": # Object with schema name: ItemScope # The subject matter of the content.
        "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
        "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
        "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
          # Object with schema name: ItemScope
        ],
        "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
        "gender": "A String", # Gender of the person.
        "longitude": 3.14, # Longitude.
        "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
        "caption": "A String", # The caption for this object.
        "ratingValue": "A String", # Rating value.
        "reviewRating": # Object with schema name: ItemScope # Review rating.
        "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
      },
      "type": "A String", # The Google schema for the type of moment to write. For example, http://schemas.google.com/AddActivity.
      "id": "A String", # The moment ID.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, collection, pageToken=None, maxResults=None, targetUrl=None, type=None)</code>
  <pre>List all of the moments for a particular user.

Args:
  userId: string, The ID of the user to get moments for. The special value "me" can be used to indicate the authenticated user. (required)
  collection: string, The collection of moments to list. (required)
    Allowed values
      vault - All moments created by the requesting application for the authenticated user.
  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 "nextPageToken" from the previous response.
  maxResults: integer, The maximum number of moments to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  targetUrl: string, Only moments containing this targetUrl will be returned.
  type: string, Only moments of this type will be returned.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # 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.
    "kind": "plus#momentsFeed", # Identifies this resource as a collection of moments. Value: "plus#momentsFeed".
    "title": "A String", # The title of this collection of moments.
    "items": [ # The moments in this page of results.
      {
          "startDate": "A String", # Time stamp of when the action occurred in RFC3339 format.
          "kind": "plus#moment", # Identifies this resource as a moment.
          "target": { # The object on which the action was performed.
            "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
            "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
            "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
            "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
            "address": # Object with schema name: ItemScope # Postal address.
            "birthDate": "A String", # Date of birth.
            "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
            "addressLocality": "A String", # Address locality.
            "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
            "additionalName": [ # An additional name for a Person, can be used for a middle name.
              "A String",
            ],
            "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
            "contributor": [ # A list of contributors to this result.
              # Object with schema name: ItemScope
            ],
            "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
            "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
            "postOfficeBoxNumber": "A String", # Post office box number.
            "attendees": [ # A person attending the event.
              # Object with schema name: ItemScope
            ],
            "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
              # Object with schema name: ItemScope
            ],
            "associated_media": [ # The encoding.
              # Object with schema name: ItemScope
            ],
            "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
            "addressCountry": "A String", # Address country.
            "width": "A String", # The width of the media object.
            "streetAddress": "A String", # Street address.
            "location": # Object with schema name: ItemScope # The location of the event or organization.
            "latitude": 3.14, # Latitude.
            "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
            "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
            "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
            "contentSize": "A String", # File size in (mega/kilo) bytes.
            "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
            "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
            "description": "A String", # The string that describes the content of the result.
            "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
            "kind": "plus#itemScope", # Identifies this resource as an itemScope.
            "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
            "postalCode": "A String", # Postal code.
            "attendeeCount": 42, # Number of attendees.
            "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
            "addressRegion": "A String", # Address region.
            "height": "A String", # The height of the media object.
            "geo": # Object with schema name: ItemScope # Geo coordinates.
            "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
            "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
            "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
            "about": # Object with schema name: ItemScope # The subject matter of the content.
            "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
            "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
            "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
              # Object with schema name: ItemScope
            ],
            "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
            "gender": "A String", # Gender of the person.
            "longitude": 3.14, # Longitude.
            "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
            "caption": "A String", # The caption for this object.
            "ratingValue": "A String", # Rating value.
            "reviewRating": # Object with schema name: ItemScope # Review rating.
            "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
          },
          "result": { # The object generated by performing the action on the target. For example, a user writes a review of a restaurant, the target is the restaurant and the result is the review.
            "startDate": "A String", # The start date and time of the event (in ISO 8601 date format).
            "endDate": "A String", # The end date and time of the event (in ISO 8601 date format).
            "text": "A String", # The text that is the result of the app activity. For example, if a user leaves a review of a restaurant, this might be the text of the review.
            "image": "A String", # A URL to the image that represents this result. For example, if a user writes a review of a restaurant and attaches a photo of their meal, you might use that photo as the result.image.
            "address": # Object with schema name: ItemScope # Postal address.
            "birthDate": "A String", # Date of birth.
            "datePublished": "A String", # The initial date that the result was published. For example, a user writes a comment on a blog, which has a result.dateCreated of when they submit it. If the blog users comment moderation, the result.datePublished value would match the date when the owner approved the message.
            "addressLocality": "A String", # Address locality.
            "duration": "A String", # The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format.
            "additionalName": [ # An additional name for a Person, can be used for a middle name.
              "A String",
            ],
            "worstRating": "A String", # Worst possible rating value that a result might obtain. This property defines the lower bound for the ratingValue.
            "contributor": [ # A list of contributors to this result.
              # Object with schema name: ItemScope
            ],
            "thumbnailUrl": "A String", # A URL to a thumbnail image that represents this result.
            "id": "A String", # An identifier for the target. Your app can choose how to identify targets. The target.id is required if you are writing an activity that does not have a corresponding web page or target.url property.
            "postOfficeBoxNumber": "A String", # Post office box number.
            "attendees": [ # A person attending the event.
              # Object with schema name: ItemScope
            ],
            "author": [ # The person or persons who created this result. In the example of restaurant reviews, this might be the reviewer's name.
              # Object with schema name: ItemScope
            ],
            "associated_media": [ # The encoding.
              # Object with schema name: ItemScope
            ],
            "bestRating": "A String", # Best possible rating value that a result might obtain. This property defines the upper bound for the ratingValue. For example, you might have a 5 star rating scale, you would provide 5 as the value for this property.
            "addressCountry": "A String", # Address country.
            "width": "A String", # The width of the media object.
            "streetAddress": "A String", # Street address.
            "location": # Object with schema name: ItemScope # The location of the event or organization.
            "latitude": 3.14, # Latitude.
            "byArtist": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the artist that performed this recording.
            "type": "A String", # The schema.org URL that best describes the referenced target and matches the type of moment.
            "dateModified": "A String", # The date the result was last modified such as the date that a review was last edited.
            "contentSize": "A String", # File size in (mega/kilo) bytes.
            "contentUrl": "A String", # Actual bytes of the media object, for example the image file or video file.
            "partOfTVSeries": # Object with schema name: ItemScope # Property of http://schema.org/TVEpisode indicating which series the episode belongs to.
            "description": "A String", # The string that describes the content of the result.
            "familyName": "A String", # Family name. This property can be used with givenName instead of the name property.
            "kind": "plus#itemScope", # Identifies this resource as an itemScope.
            "dateCreated": "A String", # The date the result was created such as the date that a review was first created.
            "postalCode": "A String", # Postal code.
            "attendeeCount": 42, # Number of attendees.
            "inAlbum": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, which album a song is in.
            "addressRegion": "A String", # Address region.
            "height": "A String", # The height of the media object.
            "geo": # Object with schema name: ItemScope # Geo coordinates.
            "embedUrl": "A String", # A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag.
            "tickerSymbol": "A String", # The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we reccommend using the controlled vocaulary of Market Identifier Codes (MIC) specified in ISO15022.
            "playerType": "A String", # Player type that is required. For example: Flash or Silverlight.
            "about": # Object with schema name: ItemScope # The subject matter of the content.
            "givenName": "A String", # Given name. This property can be used with familyName instead of the name property.
            "name": "A String", # The name of the result. In the example of a restaurant review, this might be the summary the user gave their review such as "Great ambiance, but overpriced."
            "performers": [ # The main performer or performers of the event-for example, a presenter, musician, or actor.
              # Object with schema name: ItemScope
            ],
            "url": "A String", # The URL that points to the result object. For example, a permalink directly to a restaurant reviewer's comment.
            "gender": "A String", # Gender of the person.
            "longitude": 3.14, # Longitude.
            "thumbnail": # Object with schema name: ItemScope # Thumbnail image for an image or video.
            "caption": "A String", # The caption for this object.
            "ratingValue": "A String", # Rating value.
            "reviewRating": # Object with schema name: ItemScope # Review rating.
            "audio": # Object with schema name: ItemScope # From http://schema.org/MusicRecording, the audio file.
          },
          "type": "A String", # The Google schema for the type of moment to write. For example, http://schemas.google.com/AddActivity.
          "id": "A String", # The moment ID.
        },
    ],
    "updated": "A String", # The RFC 339 timestamp for when this collection of moments was last updated.
    "nextLink": "A String", # Link to the next page of moments.
    "etag": "A String", # ETag of this response for caching purposes.
    "selfLink": "A String", # Link to this page of moments.
  }</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 'execute()' 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="remove">remove(id)</code>
  <pre>Delete a moment.

Args:
  id: string, The ID of the moment to delete. (required)
</pre>
</div>

</body></html>