<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.mylibrary.html">mylibrary</a> . <a href="books_v1.mylibrary.readingpositions.html">readingpositions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(volumeId, source=None, contentVersion=None)</a></code></p>
<p class="firstline">Retrieves my reading position information for a volume.</p>
<p class="toc_element">
  <code><a href="#setPosition">setPosition(volumeId, timestamp, position, deviceCookie=None, source=None, contentVersion=None, action=None)</a></code></p>
<p class="firstline">Sets my reading position information for a volume.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(volumeId, source=None, contentVersion=None)</code>
  <pre>Retrieves my reading position information for a volume.

Args:
  volumeId: string, ID of volume for which to retrieve a reading position. (required)
  source: string, String to identify the originator of this request.
  contentVersion: string, Volume content version for which this reading position is requested.

Returns:
  An object of the form:

    {
    "kind": "books#readingPosition", # Resource type for a reading position.
    "gbImagePosition": "A String", # Position in a volume for image-based content.
    "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
    "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
    "volumeId": "A String", # Volume id associated with this reading position.
    "pdfPosition": "A String", # Position in a PDF file.
    "gbTextPosition": "A String", # Position in a volume for text-based content.
  }</pre>
</div>

<div class="method">
    <code class="details" id="setPosition">setPosition(volumeId, timestamp, position, deviceCookie=None, source=None, contentVersion=None, action=None)</code>
  <pre>Sets my reading position information for a volume.

Args:
  volumeId: string, ID of volume for which to update the reading position. (required)
  timestamp: string, RFC 3339 UTC format timestamp associated with this reading position. (required)
  position: string, Position string for the new volume reading position. (required)
  deviceCookie: string, Random persistent device cookie optional on set position.
  source: string, String to identify the originator of this request.
  contentVersion: string, Volume content version for which this reading position applies.
  action: string, Action that caused this reading position to be set.
    Allowed values
      bookmark - User chose bookmark within volume.
      chapter - User selected chapter from list.
      next-page - Next page event.
      prev-page - Previous page event.
      scroll - User navigated to page.
      search - User chose search results within volume.
</pre>
</div>

</body></html>