<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="books_v1.html">Books API</a> . <a href="books_v1.bookshelves.html">bookshelves</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="books_v1.bookshelves.volumes.html">volumes()</a></code>
</p>
<p class="firstline">Returns the volumes Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(userId, shelf, source=None)</a></code></p>
<p class="firstline">Retrieves metadata for a specific bookshelf for the specified user.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, source=None)</a></code></p>
<p class="firstline">Retrieves a list of public bookshelves for the specified user.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(userId, shelf, source=None)</code>
  <pre>Retrieves metadata for a specific bookshelf for the specified user.

Args:
  userId: string, ID of user for whom to retrieve bookshelves. (required)
  shelf: string, ID of bookshelf to retrieve. (required)
  source: string, String to identify the originator of this request.

Returns:
  An object of the form:

    {
    "kind": "books#bookshelf", # Resource type for bookshelf metadata.
    "description": "A String", # Description of this bookshelf.
    "created": "A String", # Created time for this bookshelf (formatted UTC timestamp with millisecond resolution).
    "volumeCount": 42, # Number of volumes in this bookshelf.
    "title": "A String", # Title of this bookshelf.
    "updated": "A String", # Last modified time of this bookshelf (formatted UTC timestamp with millisecond resolution).
    "access": "A String", # Whether this bookshelf is PUBLIC or PRIVATE.
    "volumesLastUpdated": "A String", # Last time a volume was added or removed from this bookshelf (formatted UTC timestamp with millisecond resolution).
    "id": 42, # Id of this bookshelf, only unique by user.
    "selfLink": "A String", # URL to this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, source=None)</code>
  <pre>Retrieves a list of public bookshelves for the specified user.

Args:
  userId: string, ID of user for whom to retrieve bookshelves. (required)
  source: string, String to identify the originator of this request.

Returns:
  An object of the form:

    {
    "items": [ # A list of bookshelves.
      {
        "kind": "books#bookshelf", # Resource type for bookshelf metadata.
        "description": "A String", # Description of this bookshelf.
        "created": "A String", # Created time for this bookshelf (formatted UTC timestamp with millisecond resolution).
        "volumeCount": 42, # Number of volumes in this bookshelf.
        "title": "A String", # Title of this bookshelf.
        "updated": "A String", # Last modified time of this bookshelf (formatted UTC timestamp with millisecond resolution).
        "access": "A String", # Whether this bookshelf is PUBLIC or PRIVATE.
        "volumesLastUpdated": "A String", # Last time a volume was added or removed from this bookshelf (formatted UTC timestamp with millisecond resolution).
        "id": 42, # Id of this bookshelf, only unique by user.
        "selfLink": "A String", # URL to this resource.
      },
    ],
    "kind": "books#bookshelves", # Resource type.
  }</pre>
</div>

</body></html>