<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="blogger_v2.html">Blogger API v3</a> . <a href="blogger_v2.posts.html">posts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(blogId, postId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a post by blog id and post id</p>
<p class="toc_element">
  <code><a href="#list">list(blogId, maxResults=None, pageToken=None, startDate=None, fetchBodies=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists posts.</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="get">get(blogId, postId, x__xgafv=None)</code>
  <pre>Gets a post by blog id and post id

Args:
  blogId: string, A parameter (required)
  postId: string, A parameter (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;labels&quot;: [ # The list of labels this Post was tagged with.
      &quot;A String&quot;,
    ],
    &quot;kind&quot;: &quot;A String&quot;, # The kind of this entity. Always blogger#post.
    &quot;id&quot;: &quot;A String&quot;, # The identifier of this Post.
    &quot;replies&quot;: { # The container of comments on this Post.
      &quot;items&quot;: [ # The List of Comments for this Post.
        {
          &quot;author&quot;: { # The author of this Comment.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name.
            &quot;image&quot;: { # The creator&#x27;s avatar.
              &quot;url&quot;: &quot;A String&quot;, # The creator&#x27;s avatar URL.
            },
            &quot;id&quot;: &quot;A String&quot;, # The identifier of the creator.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the creator&#x27;s Profile page.
          },
          &quot;blog&quot;: { # Data about the blog containing this comment.
            &quot;id&quot;: &quot;A String&quot;, # The identifier of the blog containing this comment.
          },
          &quot;published&quot;: &quot;A String&quot;, # RFC 3339 date-time when this comment was published.
          &quot;updated&quot;: &quot;A String&quot;, # RFC 3339 date-time when this comment was last updated.
          &quot;selfLink&quot;: &quot;A String&quot;, # The API REST URL to fetch this resource from.
          &quot;inReplyTo&quot;: { # Data about the comment this is in reply to.
            &quot;id&quot;: &quot;A String&quot;, # The identified of the parent of this comment.
          },
          &quot;kind&quot;: &quot;A String&quot;, # The kind of this entry. Always blogger#comment.
          &quot;post&quot;: { # Data about the post containing this comment.
            &quot;id&quot;: &quot;A String&quot;, # The identifier of the post containing this comment.
          },
          &quot;status&quot;: &quot;A String&quot;, # The status of the comment (only populated for admin users).
          &quot;id&quot;: &quot;A String&quot;, # The identifier for this resource.
          &quot;content&quot;: &quot;A String&quot;, # The actual content of the comment. May include HTML markup.
        },
      ],
      &quot;totalItems&quot;: &quot;A String&quot;, # The count of comments on this post.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URL of the comments on this post.
    },
    &quot;location&quot;: { # The location for geotagged posts.
      &quot;lng&quot;: 3.14, # Location&#x27;s longitude.
      &quot;lat&quot;: 3.14, # Location&#x27;s latitude.
      &quot;span&quot;: &quot;A String&quot;, # Location&#x27;s viewport span. Can be used when rendering a map preview.
      &quot;name&quot;: &quot;A String&quot;, # Location name.
    },
    &quot;etag&quot;: &quot;A String&quot;, # Etag of the resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of the Post.
    &quot;updated&quot;: &quot;A String&quot;, # RFC 3339 date-time when this Post was last updated.
    &quot;titleLink&quot;: &quot;A String&quot;, # The title link URL, similar to atom&#x27;s related link.
    &quot;customMetaData&quot;: &quot;A String&quot;, # The JSON meta-data for the Post.
    &quot;published&quot;: &quot;A String&quot;, # RFC 3339 date-time when this Post was published.
    &quot;blog&quot;: { # Data about the blog containing this Post.
      &quot;id&quot;: &quot;A String&quot;, # The identifier of the Blog that contains this Post.
    },
    &quot;readerComments&quot;: &quot;A String&quot;, # Comment control and display setting for readers of this post.
    &quot;author&quot;: { # The author of this Post.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name.
      &quot;id&quot;: &quot;A String&quot;, # The identifier of the creator.
      &quot;image&quot;: { # The creator&#x27;s avatar.
        &quot;url&quot;: &quot;A String&quot;, # The creator&#x27;s avatar URL.
      },
      &quot;url&quot;: &quot;A String&quot;, # The URL of the creator&#x27;s Profile page.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # The API REST URL to fetch this resource from.
    &quot;images&quot;: [ # Display image for the Post.
      {
        &quot;url&quot;: &quot;A String&quot;,
      },
    ],
    &quot;url&quot;: &quot;A String&quot;, # The URL where this Post is displayed.
    &quot;content&quot;: &quot;A String&quot;, # The content of the Post. May contain HTML markup.
    &quot;status&quot;: &quot;A String&quot;, # Status of the post. Only set for admin-level requests.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(blogId, maxResults=None, pageToken=None, startDate=None, fetchBodies=None, x__xgafv=None)</code>
  <pre>Lists posts.

Args:
  blogId: string, A parameter (required)
  maxResults: integer, A parameter
  pageToken: string, A parameter
  startDate: string, A parameter
  fetchBodies: boolean, A parameter
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;prevPageToken&quot;: &quot;A String&quot;, # Pagination token to fetch the previous page, if one exists.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of this entity. Always blogger#postList.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of the response.
    &quot;items&quot;: [ # The list of Posts for this Blog.
      {
        &quot;labels&quot;: [ # The list of labels this Post was tagged with.
          &quot;A String&quot;,
        ],
        &quot;kind&quot;: &quot;A String&quot;, # The kind of this entity. Always blogger#post.
        &quot;id&quot;: &quot;A String&quot;, # The identifier of this Post.
        &quot;replies&quot;: { # The container of comments on this Post.
          &quot;items&quot;: [ # The List of Comments for this Post.
            {
              &quot;author&quot;: { # The author of this Comment.
                &quot;displayName&quot;: &quot;A String&quot;, # The display name.
                &quot;image&quot;: { # The creator&#x27;s avatar.
                  &quot;url&quot;: &quot;A String&quot;, # The creator&#x27;s avatar URL.
                },
                &quot;id&quot;: &quot;A String&quot;, # The identifier of the creator.
                &quot;url&quot;: &quot;A String&quot;, # The URL of the creator&#x27;s Profile page.
              },
              &quot;blog&quot;: { # Data about the blog containing this comment.
                &quot;id&quot;: &quot;A String&quot;, # The identifier of the blog containing this comment.
              },
              &quot;published&quot;: &quot;A String&quot;, # RFC 3339 date-time when this comment was published.
              &quot;updated&quot;: &quot;A String&quot;, # RFC 3339 date-time when this comment was last updated.
              &quot;selfLink&quot;: &quot;A String&quot;, # The API REST URL to fetch this resource from.
              &quot;inReplyTo&quot;: { # Data about the comment this is in reply to.
                &quot;id&quot;: &quot;A String&quot;, # The identified of the parent of this comment.
              },
              &quot;kind&quot;: &quot;A String&quot;, # The kind of this entry. Always blogger#comment.
              &quot;post&quot;: { # Data about the post containing this comment.
                &quot;id&quot;: &quot;A String&quot;, # The identifier of the post containing this comment.
              },
              &quot;status&quot;: &quot;A String&quot;, # The status of the comment (only populated for admin users).
              &quot;id&quot;: &quot;A String&quot;, # The identifier for this resource.
              &quot;content&quot;: &quot;A String&quot;, # The actual content of the comment. May include HTML markup.
            },
          ],
          &quot;totalItems&quot;: &quot;A String&quot;, # The count of comments on this post.
          &quot;selfLink&quot;: &quot;A String&quot;, # The URL of the comments on this post.
        },
        &quot;location&quot;: { # The location for geotagged posts.
          &quot;lng&quot;: 3.14, # Location&#x27;s longitude.
          &quot;lat&quot;: 3.14, # Location&#x27;s latitude.
          &quot;span&quot;: &quot;A String&quot;, # Location&#x27;s viewport span. Can be used when rendering a map preview.
          &quot;name&quot;: &quot;A String&quot;, # Location name.
        },
        &quot;etag&quot;: &quot;A String&quot;, # Etag of the resource.
        &quot;title&quot;: &quot;A String&quot;, # The title of the Post.
        &quot;updated&quot;: &quot;A String&quot;, # RFC 3339 date-time when this Post was last updated.
        &quot;titleLink&quot;: &quot;A String&quot;, # The title link URL, similar to atom&#x27;s related link.
        &quot;customMetaData&quot;: &quot;A String&quot;, # The JSON meta-data for the Post.
        &quot;published&quot;: &quot;A String&quot;, # RFC 3339 date-time when this Post was published.
        &quot;blog&quot;: { # Data about the blog containing this Post.
          &quot;id&quot;: &quot;A String&quot;, # The identifier of the Blog that contains this Post.
        },
        &quot;readerComments&quot;: &quot;A String&quot;, # Comment control and display setting for readers of this post.
        &quot;author&quot;: { # The author of this Post.
          &quot;displayName&quot;: &quot;A String&quot;, # The display name.
          &quot;id&quot;: &quot;A String&quot;, # The identifier of the creator.
          &quot;image&quot;: { # The creator&#x27;s avatar.
            &quot;url&quot;: &quot;A String&quot;, # The creator&#x27;s avatar URL.
          },
          &quot;url&quot;: &quot;A String&quot;, # The URL of the creator&#x27;s Profile page.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # The API REST URL to fetch this resource from.
        &quot;images&quot;: [ # Display image for the Post.
          {
            &quot;url&quot;: &quot;A String&quot;,
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # The URL where this Post is displayed.
        &quot;content&quot;: &quot;A String&quot;, # The content of the Post. May contain HTML markup.
        &quot;status&quot;: &quot;A String&quot;, # Status of the post. Only set for admin-level requests.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Pagination token to fetch the next page, if one exists.
  }</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>