<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_v3.html">Blogger API</a> . <a href="blogger_v3.pages.html">pages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(blogId, pageId)</a></code></p>
<p class="firstline">Delete a page by ID.</p>
<p class="toc_element">
  <code><a href="#get">get(blogId, pageId, view=None)</a></code></p>
<p class="firstline">Gets one blog page by ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(blogId, body, isDraft=None)</a></code></p>
<p class="firstline">Add a page.</p>
<p class="toc_element">
  <code><a href="#list">list(blogId, status=None, pageToken=None, maxResults=None, fetchBodies=None, view=None)</a></code></p>
<p class="firstline">Retrieves the pages for a blog, optionally including non-LIVE statuses.</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="#patch">patch(blogId, pageId, body, revert=None, publish=None)</a></code></p>
<p class="firstline">Update a page. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#publish">publish(blogId, pageId)</a></code></p>
<p class="firstline">Publishes a draft page.</p>
<p class="toc_element">
  <code><a href="#revert">revert(blogId, pageId)</a></code></p>
<p class="firstline">Revert a published or scheduled page to draft state.</p>
<p class="toc_element">
  <code><a href="#update">update(blogId, pageId, body, revert=None, publish=None)</a></code></p>
<p class="firstline">Update a page.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(blogId, pageId)</code>
  <pre>Delete a page by ID.

Args:
  blogId: string, The ID of the Blog. (required)
  pageId: string, The ID of the Page. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(blogId, pageId, view=None)</code>
  <pre>Gets one blog page by ID.

Args:
  blogId: string, ID of the blog containing the page. (required)
  pageId: string, The ID of the page to get. (required)
  view: string, A parameter
    Allowed values
      ADMIN - Admin level detail
      AUTHOR - Author level detail
      READER - Reader level detail

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(blogId, body, isDraft=None)</code>
  <pre>Add a page.

Args:
  blogId: string, ID of the blog to add the page to. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
    "content": "A String", # The body content of this Page, in HTML.
    "kind": "blogger#page", # The kind of this entity. Always blogger#page
    "author": { # The author of this Page.
      "url": "A String", # The URL of the Page creator's Profile page.
      "image": { # The page author's avatar.
        "url": "A String", # The page author's avatar URL.
      },
      "displayName": "A String", # The display name.
      "id": "A String", # The identifier of the Page creator.
    },
    "url": "A String", # The URL that this Page is displayed at.
    "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
    "updated": "A String", # RFC 3339 date-time when this Page was last updated.
    "blog": { # Data about the blog containing this Page.
      "id": "A String", # The identifier of the blog containing this page.
    },
    "etag": "A String", # Etag of the resource.
    "published": "A String", # RFC 3339 date-time when this Page was published.
    "id": "A String", # The identifier for this resource.
    "selfLink": "A String", # The API REST URL to fetch this resource from.
  }

  isDraft: boolean, Whether to create the page as a draft (default: false).

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(blogId, status=None, pageToken=None, maxResults=None, fetchBodies=None, view=None)</code>
  <pre>Retrieves the pages for a blog, optionally including non-LIVE statuses.

Args:
  blogId: string, ID of the blog to fetch Pages from. (required)
  status: string, A parameter (repeated)
    Allowed values
      draft - Draft (unpublished) Pages
      live - Pages that are publicly visible
  pageToken: string, Continuation token if the request is paged.
  maxResults: integer, Maximum number of Pages to fetch.
  fetchBodies: boolean, Whether to retrieve the Page bodies.
  view: string, Access level with which to view the returned result. Note that some fields require elevated access.
    Allowed values
      ADMIN - Admin level detail
      AUTHOR - Author level detail
      READER - Reader level detail

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Pagination token to fetch the next page, if one exists.
    "items": [ # The list of Pages for a Blog.
      {
          "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
          "content": "A String", # The body content of this Page, in HTML.
          "kind": "blogger#page", # The kind of this entity. Always blogger#page
          "author": { # The author of this Page.
            "url": "A String", # The URL of the Page creator's Profile page.
            "image": { # The page author's avatar.
              "url": "A String", # The page author's avatar URL.
            },
            "displayName": "A String", # The display name.
            "id": "A String", # The identifier of the Page creator.
          },
          "url": "A String", # The URL that this Page is displayed at.
          "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
          "updated": "A String", # RFC 3339 date-time when this Page was last updated.
          "blog": { # Data about the blog containing this Page.
            "id": "A String", # The identifier of the blog containing this page.
          },
          "etag": "A String", # Etag of the resource.
          "published": "A String", # RFC 3339 date-time when this Page was published.
          "id": "A String", # The identifier for this resource.
          "selfLink": "A String", # The API REST URL to fetch this resource from.
        },
    ],
    "kind": "blogger#pageList", # The kind of this entity. Always blogger#pageList
    "etag": "A String", # Etag of the response.
  }</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="patch">patch(blogId, pageId, body, revert=None, publish=None)</code>
  <pre>Update a page. This method supports patch semantics.

Args:
  blogId: string, The ID of the Blog. (required)
  pageId: string, The ID of the Page. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
    "content": "A String", # The body content of this Page, in HTML.
    "kind": "blogger#page", # The kind of this entity. Always blogger#page
    "author": { # The author of this Page.
      "url": "A String", # The URL of the Page creator's Profile page.
      "image": { # The page author's avatar.
        "url": "A String", # The page author's avatar URL.
      },
      "displayName": "A String", # The display name.
      "id": "A String", # The identifier of the Page creator.
    },
    "url": "A String", # The URL that this Page is displayed at.
    "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
    "updated": "A String", # RFC 3339 date-time when this Page was last updated.
    "blog": { # Data about the blog containing this Page.
      "id": "A String", # The identifier of the blog containing this page.
    },
    "etag": "A String", # Etag of the resource.
    "published": "A String", # RFC 3339 date-time when this Page was published.
    "id": "A String", # The identifier for this resource.
    "selfLink": "A String", # The API REST URL to fetch this resource from.
  }

  revert: boolean, Whether a revert action should be performed when the page is updated (default: false).
  publish: boolean, Whether a publish action should be performed when the page is updated (default: false).

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

<div class="method">
    <code class="details" id="publish">publish(blogId, pageId)</code>
  <pre>Publishes a draft page.

Args:
  blogId: string, The ID of the blog. (required)
  pageId: string, The ID of the page. (required)

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

<div class="method">
    <code class="details" id="revert">revert(blogId, pageId)</code>
  <pre>Revert a published or scheduled page to draft state.

Args:
  blogId: string, The ID of the blog. (required)
  pageId: string, The ID of the page. (required)

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(blogId, pageId, body, revert=None, publish=None)</code>
  <pre>Update a page.

Args:
  blogId: string, The ID of the Blog. (required)
  pageId: string, The ID of the Page. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
    "content": "A String", # The body content of this Page, in HTML.
    "kind": "blogger#page", # The kind of this entity. Always blogger#page
    "author": { # The author of this Page.
      "url": "A String", # The URL of the Page creator's Profile page.
      "image": { # The page author's avatar.
        "url": "A String", # The page author's avatar URL.
      },
      "displayName": "A String", # The display name.
      "id": "A String", # The identifier of the Page creator.
    },
    "url": "A String", # The URL that this Page is displayed at.
    "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
    "updated": "A String", # RFC 3339 date-time when this Page was last updated.
    "blog": { # Data about the blog containing this Page.
      "id": "A String", # The identifier of the blog containing this page.
    },
    "etag": "A String", # Etag of the resource.
    "published": "A String", # RFC 3339 date-time when this Page was published.
    "id": "A String", # The identifier for this resource.
    "selfLink": "A String", # The API REST URL to fetch this resource from.
  }

  revert: boolean, Whether a revert action should be performed when the page is updated (default: false).
  publish: boolean, Whether a publish action should be performed when the page is updated (default: false).

Returns:
  An object of the form:

    {
      "status": "A String", # The status of the page for admin resources (either LIVE or DRAFT).
      "content": "A String", # The body content of this Page, in HTML.
      "kind": "blogger#page", # The kind of this entity. Always blogger#page
      "author": { # The author of this Page.
        "url": "A String", # The URL of the Page creator's Profile page.
        "image": { # The page author's avatar.
          "url": "A String", # The page author's avatar URL.
        },
        "displayName": "A String", # The display name.
        "id": "A String", # The identifier of the Page creator.
      },
      "url": "A String", # The URL that this Page is displayed at.
      "title": "A String", # The title of this entity. This is the name displayed in the Admin user interface.
      "updated": "A String", # RFC 3339 date-time when this Page was last updated.
      "blog": { # Data about the blog containing this Page.
        "id": "A String", # The identifier of the blog containing this page.
      },
      "etag": "A String", # Etag of the resource.
      "published": "A String", # RFC 3339 date-time when this Page was published.
      "id": "A String", # The identifier for this resource.
      "selfLink": "A String", # The API REST URL to fetch this resource from.
    }</pre>
</div>

</body></html>