<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</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)</a></code></p>
<p class="firstline">Get a post by id.</p>
<p class="toc_element">
  <code><a href="#list">list(blogId, startDate=None, pageToken=None, maxResults=None, fetchBodies=None)</a></code></p>
<p class="firstline">Retrieves a list of posts, possibly filtered.</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)</code>
  <pre>Get a post by id.

Args:
  blogId: string, ID of the blog to fetch the post from. (required)
  postId: string, The ID of the post (required)

Returns:
  An object of the form:

    {
    "content": "A String", # The content of the Post. May contain HTML markup.
    "kind": "blogger#post", # The kind of this entity. Always blogger#post
    "author": { # The author of this Post.
      "url": "A String", # The URL of the Post creator's Profile page.
      "image": { # The Post author's avatar.
        "url": "A String", # The Post author's avatar URL.
      },
      "displayName": "A String", # The display name.
      "id": "A String", # The identifier of the Post creator.
    },
    "replies": { # The container of comments on this Post.
      "totalItems": "A String", # The count of comments on this post.
      "selfLink": "A String", # The URL of the comments on this post.
    },
    "labels": [ # The list of labels this Post was tagged with.
      "A String",
    ],
    "updated": "A String", # RFC 3339 date-time when this Post was last updated.
    "blog": { # Data about the blog containing this Post.
      "id": "A String", # The identifier of the Blog that contains this Post.
    },
    "url": "A String", # The URL where this Post is displayed.
    "published": "A String", # RFC 3339 date-time when this Post was published.
    "title": "A String", # The title of the Post.
    "id": "A String", # The identifier of this Post.
    "selfLink": "A String", # The API REST URL to fetch this resource from.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(blogId, startDate=None, pageToken=None, maxResults=None, fetchBodies=None)</code>
  <pre>Retrieves a list of posts, possibly filtered.

Args:
  blogId: string, ID of the blog to fetch posts from. (required)
  startDate: string, Earliest post date to fetch, a date-time with RFC 3339 formatting.
  pageToken: string, Continuation token if the request is paged.
  maxResults: integer, Maximum number of posts to fetch.
  fetchBodies: boolean, Whether the body content of posts is included.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Pagination token to fetch the next page, if one exists.
    "items": [ # The list of Posts for this Blog.
      {
        "content": "A String", # The content of the Post. May contain HTML markup.
        "kind": "blogger#post", # The kind of this entity. Always blogger#post
        "author": { # The author of this Post.
          "url": "A String", # The URL of the Post creator's Profile page.
          "image": { # The Post author's avatar.
            "url": "A String", # The Post author's avatar URL.
          },
          "displayName": "A String", # The display name.
          "id": "A String", # The identifier of the Post creator.
        },
        "replies": { # The container of comments on this Post.
          "totalItems": "A String", # The count of comments on this post.
          "selfLink": "A String", # The URL of the comments on this post.
        },
        "labels": [ # The list of labels this Post was tagged with.
          "A String",
        ],
        "updated": "A String", # RFC 3339 date-time when this Post was last updated.
        "blog": { # Data about the blog containing this Post.
          "id": "A String", # The identifier of the Blog that contains this Post.
        },
        "url": "A String", # The URL where this Post is displayed.
        "published": "A String", # RFC 3339 date-time when this Post was published.
        "title": "A String", # The title of the Post.
        "id": "A String", # The identifier of this Post.
        "selfLink": "A String", # The API REST URL to fetch this resource from.
      },
    ],
    "kind": "blogger#postList", # The kind of this entity. Always blogger#postList
    "prevPageToken": "A String", # Pagination token to fetch the previous 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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>