<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.myconfig.html">myconfig</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getUserSettings">getUserSettings()</a></code></p>
<p class="firstline">Gets the current settings for the user.</p>
<p class="toc_element">
  <code><a href="#releaseDownloadAccess">releaseDownloadAccess(volumeIds, cpksver, source=None, locale=None)</a></code></p>
<p class="firstline">Release downloaded content access restriction.</p>
<p class="toc_element">
  <code><a href="#requestAccess">requestAccess(source, volumeId, nonce, cpksver, licenseTypes=None, locale=None)</a></code></p>
<p class="firstline">Request concurrent and download access restrictions.</p>
<p class="toc_element">
  <code><a href="#syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, features=None, locale=None, includeNonComicsSeries=None, showPreorders=None, volumeIds=None)</a></code></p>
<p class="firstline">Request downloaded content access for specified volumes on the My eBooks shelf.</p>
<p class="toc_element">
  <code><a href="#updateUserSettings">updateUserSettings(body)</a></code></p>
<p class="firstline">Sets the settings for the user. If a sub-object is specified, it will overwrite the existing sub-object stored in the server. Unspecified sub-objects will retain the existing value.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getUserSettings">getUserSettings()</code>
  <pre>Gets the current settings for the user.

Args:

Returns:
  An object of the form:

    {
    "notification": {
      "matchMyInterests": {
        "opted_state": "A String",
      },
      "rewardExpirations": {
        "opted_state": "A String",
      },
      "moreFromSeries": {
        "opted_state": "A String",
      },
      "moreFromAuthors": {
        "opted_state": "A String",
      },
      "priceDrop": {
        "opted_state": "A String",
      },
    },
    "kind": "books#usersettings", # Resource type.
    "notesExport": { # User settings in sub-objects, each for different purposes.
      "isEnabled": True or False,
      "folderName": "A String",
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="releaseDownloadAccess">releaseDownloadAccess(volumeIds, cpksver, source=None, locale=None)</code>
  <pre>Release downloaded content access restriction.

Args:
  volumeIds: string, The volume(s) to release restrictions for. (required) (repeated)
  cpksver: string, The device/version ID from which to release the restriction. (required)
  source: string, String to identify the originator of this request.
  locale: string, ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.

Returns:
  An object of the form:

    {
    "downloadAccessList": [ # A list of download access responses.
      {
        "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
        "kind": "books#downloadAccessRestriction", # Resource type.
        "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
        "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
        "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
        "signature": "A String", # Response signature.
        "volumeId": "A String", # Identifies the volume for which this entry applies.
        "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
        "source": "A String", # Client app identifier for verification. Download access and client-validation only.
        "restricted": True or False, # Whether this volume has any download access restrictions.
        "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
        "message": "A String", # Error/warning message.
      },
    ],
    "kind": "books#downloadAccesses", # Resource type.
  }</pre>
</div>

<div class="method">
    <code class="details" id="requestAccess">requestAccess(source, volumeId, nonce, cpksver, licenseTypes=None, locale=None)</code>
  <pre>Request concurrent and download access restrictions.

Args:
  source: string, String to identify the originator of this request. (required)
  volumeId: string, The volume to request concurrent/download restrictions for. (required)
  nonce: string, The client nonce value. (required)
  cpksver: string, The device/version ID from which to request the restrictions. (required)
  licenseTypes: string, The type of access license to request. If not specified, the default is BOTH.
    Allowed values
      BOTH - Both concurrent and download licenses.
      CONCURRENT - Concurrent access license.
      DOWNLOAD - Offline download access license.
  locale: string, ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.

Returns:
  An object of the form:

    {
    "downloadAccess": { # A download access response.
      "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
      "kind": "books#downloadAccessRestriction", # Resource type.
      "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
      "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
      "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
      "signature": "A String", # Response signature.
      "volumeId": "A String", # Identifies the volume for which this entry applies.
      "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
      "source": "A String", # Client app identifier for verification. Download access and client-validation only.
      "restricted": True or False, # Whether this volume has any download access restrictions.
      "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
      "message": "A String", # Error/warning message.
    },
    "kind": "books#requestAccess", # Resource type.
    "concurrentAccess": { # A concurrent access response.
      "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
      "kind": "books#concurrentAccessRestriction", # Resource type.
      "restricted": True or False, # Whether this volume has any concurrent access restrictions.
      "volumeId": "A String", # Identifies the volume for which this entry applies.
      "maxConcurrentDevices": 42, # The maximum number of concurrent access licenses for this volume.
      "deviceAllowed": True or False, # Whether access is granted for this (user, device, volume).
      "source": "A String", # Client app identifier for verification. Download access and client-validation only.
      "timeWindowSeconds": 42, # Time in seconds for license auto-expiration.
      "signature": "A String", # Response signature.
      "reasonCode": "A String", # Error/warning reason code.
      "message": "A String", # Error/warning message.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, features=None, locale=None, includeNonComicsSeries=None, showPreorders=None, volumeIds=None)</code>
  <pre>Request downloaded content access for specified volumes on the My eBooks shelf.

Args:
  source: string, String to identify the originator of this request. (required)
  nonce: string, The client nonce value. (required)
  cpksver: string, The device/version ID from which to release the restriction. (required)
  features: string, List of features supported by the client, i.e., 'RENTALS' (repeated)
    Allowed values
      RENTALS - Client supports rentals.
  locale: string, ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.
  includeNonComicsSeries: boolean, Set to true to include non-comics series. Defaults to false.
  showPreorders: boolean, Set to true to show pre-ordered books. Defaults to false.
  volumeIds: string, The volume(s) to request download restrictions for. (repeated)

Returns:
  An object of the form:

    {
    "totalItems": 42, # Total number of volumes found. This might be greater than the number of volumes returned in this response if results have been paginated.
    "items": [ # A list of volumes.
      {
        "kind": "books#volume", # Resource type for a volume. (In LITE projection.)
        "accessInfo": { # Any information about a volume related to reading or obtaining that volume text. This information can depend on country (books may be public domain in one country but not in another, e.g.).
          "webReaderLink": "A String", # URL to read this volume on the Google Books site. Link will not allow users to read non-viewable volumes.
          "publicDomain": True or False, # Whether or not this book is public domain in the country listed above.
          "embeddable": True or False, # Whether this volume can be embedded in a viewport using the Embedded Viewer API.
          "downloadAccess": { # Information about a volume's download license access restrictions.
            "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
            "kind": "books#downloadAccessRestriction", # Resource type.
            "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
            "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
            "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
            "signature": "A String", # Response signature.
            "volumeId": "A String", # Identifies the volume for which this entry applies.
            "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
            "source": "A String", # Client app identifier for verification. Download access and client-validation only.
            "restricted": True or False, # Whether this volume has any download access restrictions.
            "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
            "message": "A String", # Error/warning message.
          },
          "country": "A String", # The two-letter ISO_3166-1 country code for which this access information is valid. (In LITE projection.)
          "quoteSharingAllowed": True or False, # Whether quote sharing is allowed for this volume.
          "viewOrderUrl": "A String", # For ordered but not yet processed orders, we give a URL that can be used to go to the appropriate Google Wallet page.
          "textToSpeechPermission": "A String", # Whether text-to-speech is permitted for this volume. Values can be ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.
          "driveImportedContentLink": "A String", # URL to the Google Drive viewer if this volume is uploaded by the user by selecting the file from Google Drive.
          "pdf": { # Information about pdf content. (In LITE projection.)
            "isAvailable": True or False, # Is a scanned image pdf available either as public domain or for purchase. (In LITE projection.)
            "downloadLink": "A String", # URL to download pdf. (In LITE projection.)
            "acsTokenLink": "A String", # URL to retrieve ACS token for pdf download. (In LITE projection.)
          },
          "explicitOfflineLicenseManagement": True or False, # Whether this volume requires that the client explicitly request offline download license rather than have it done automatically when loading the content, if the client supports it.
          "viewability": "A String", # The read access of a volume. Possible values are PARTIAL, ALL_PAGES, NO_PAGES or UNKNOWN. This value depends on the country listed above. A value of PARTIAL means that the publisher has allowed some portion of the volume to be viewed publicly, without purchase. This can apply to eBooks as well as non-eBooks. Public domain books will always have a value of ALL_PAGES.
          "epub": { # Information about epub content. (In LITE projection.)
            "isAvailable": True or False, # Is a flowing text epub available either as public domain or for purchase. (In LITE projection.)
            "downloadLink": "A String", # URL to download epub. (In LITE projection.)
            "acsTokenLink": "A String", # URL to retrieve ACS token for epub download. (In LITE projection.)
          },
          "accessViewStatus": "A String", # Combines the access and viewability of this volume into a single status field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN, SAMPLE or NONE. (In LITE projection.)
        },
        "searchInfo": { # Search result information related to this volume.
          "textSnippet": "A String", # A text snippet containing the search query.
        },
        "saleInfo": { # Any information about a volume related to the eBookstore and/or purchaseability. This information can depend on the country where the request originates from (i.e. books may not be for sale in certain countries).
          "country": "A String", # The two-letter ISO_3166-1 country code for which this sale information is valid. (In LITE projection.)
          "retailPrice": { # The actual selling price of the book. This is the same as the suggested retail or list price unless there are offers or discounts on this volume. (In LITE projection.)
            "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
            "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
          },
          "isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
          "offers": [ # Offers available for this volume (sales and rentals).
            {
              "rentalDuration": { # The rental duration (for rental offers only).
                "count": 3.14,
                "unit": "A String",
              },
              "retailPrice": { # Offer retail (=discounted) price in Micros
                "currencyCode": "A String",
                "amountInMicros": 3.14,
              },
              "listPrice": { # Offer list (=undiscounted) price in Micros.
                "currencyCode": "A String",
                "amountInMicros": 3.14,
              },
              "giftable": True or False, # Indicates whether the offer is giftable.
              "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
            },
          ],
          "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
          "buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
          "onSaleDate": "A String", # The date on which this book is available for sale.
          "listPrice": { # Suggested retail price. (In LITE projection.)
            "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
            "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
          },
        },
        "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
        "selfLink": "A String", # URL to this resource. (In LITE projection.)
        "volumeInfo": { # General volume information.
          "subtitle": "A String", # Volume subtitle. (In LITE projection.)
          "pageCount": 42, # Total number of pages as per publisher metadata.
          "mainCategory": "A String", # The main category to which this volume belongs. It will be the category from the categories list returned below that has the highest weight.
          "seriesInfo": {
            "bookDisplayNumber": "A String", # The display number string. This should be used only for display purposes and the actual sequence should be inferred from the below orderNumber.
            "kind": "books#volume_series_info", # Resource type.
            "shortSeriesBookTitle": "A String", # Short book title in the context of the series.
            "volumeSeries": [
              {
                "orderNumber": 42, # The book order number in the series.
                "seriesId": "A String", # The series id.
                "issue": [ # List of issues. Applicable only for Collection Edition and Omnibus.
                  {
                    "issueOrderNumber": 42,
                    "issueDisplayNumber": "A String",
                  },
                ],
                "seriesBookType": "A String", # The book type in the context of series. Examples - Single Issue, Collection Edition, etc.
              },
            ],
          },
          "dimensions": { # Physical dimensions of this volume.
            "width": "A String", # Width of this volume (in cm).
            "thickness": "A String", # Thickness of this volume (in cm).
            "height": "A String", # Height or length of this volume (in cm).
          },
          "previewLink": "A String", # URL to preview this volume on the Google Books site.
          "contentVersion": "A String", # An identifier for the version of the volume content (text & images). (In LITE projection)
          "industryIdentifiers": [ # Industry standard identifiers for this volume.
            {
              "identifier": "A String", # Industry specific volume identifier.
              "type": "A String", # Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.
            },
          ],
          "canonicalVolumeLink": "A String", # Canonical URL for a volume. (In LITE projection.)
          "description": "A String", # A synopsis of the volume. The text of the description is formatted in HTML and includes simple formatting elements, such as b, i, and br tags. (In LITE projection.)
          "publishedDate": "A String", # Date of publication. (In LITE projection.)
          "imageLinks": { # A list of image links for all the sizes that are available. (In LITE projection.)
            "medium": "A String", # Image link for medium size (width of ~575 pixels). (In LITE projection)
            "smallThumbnail": "A String", # Image link for small thumbnail size (width of ~80 pixels). (In LITE projection)
            "large": "A String", # Image link for large size (width of ~800 pixels). (In LITE projection)
            "extraLarge": "A String", # Image link for extra large size (width of ~1280 pixels). (In LITE projection)
            "small": "A String", # Image link for small size (width of ~300 pixels). (In LITE projection)
            "thumbnail": "A String", # Image link for thumbnail size (width of ~128 pixels). (In LITE projection)
          },
          "comicsContent": True or False, # Whether the volume has comics content.
          "authors": [ # The names of the authors and/or editors for this volume. (In LITE projection)
            "A String",
          ],
          "categories": [ # A list of subject categories, such as "Fiction", "Suspense", etc.
            "A String",
          ],
          "panelizationSummary": { # A top-level summary of the panelization info in this volume.
            "containsEpubBubbles": True or False,
            "epubBubbleVersion": "A String",
            "imageBubbleVersion": "A String",
            "containsImageBubbles": True or False,
          },
          "publisher": "A String", # Publisher of this volume. (In LITE projection.)
          "language": "A String", # Best language for this volume (based on content). It is the two-letter ISO 639-1 code such as 'fr', 'en', etc.
          "maturityRating": "A String",
          "allowAnonLogging": True or False, # Whether anonymous logging should be allowed.
          "title": "A String", # Volume title. (In LITE projection.)
          "printType": "A String", # Type of publication of this volume. Possible values are BOOK or MAGAZINE.
          "samplePageCount": 42, # Total number of sample pages as per publisher metadata.
          "readingModes": "", # The reading modes available for this volume.
          "printedPageCount": 42, # Total number of printed pages in generated pdf representation.
          "ratingsCount": 42, # The number of review ratings for this volume.
          "infoLink": "A String", # URL to view information about this volume on the Google Books site. (In LITE projection)
          "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
        },
        "recommendedInfo": { # Recommendation related information for this volume.
          "explanation": "A String", # A text explaining why this volume is recommended.
        },
        "id": "A String", # Unique identifier for a volume. (In LITE projection.)
        "layerInfo": { # What layers exist in this volume and high level information about them.
          "layers": [ # A layer should appear here if and only if the layer exists for this book.
            {
              "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
              "layerId": "A String", # The layer id of this layer (e.g. "geo").
            },
          ],
        },
        "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
          "isFamilySharedFromUser": True or False, # Whether or not the user shared this volume with the family.
          "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
          "acquisitionType": 42, # How this volume was acquired.
          "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
          "userUploadedVolumeInfo": {
            "processingState": "A String",
          },
          "rentalPeriod": { # Period during this book is/was a valid rental.
            "startUtcSec": "A String",
            "endUtcSec": "A String",
          },
          "familySharing": { # Information on the ability to share with the family.
            "isSharingDisabledByFop": True or False, # Whether or not sharing this volume is temporarily disabled due to issues with the Family Wallet.
            "familyRole": "A String", # The role of the user in the family.
            "isSharingAllowed": True or False, # Whether or not this volume can be shared with the family by the user. This includes sharing eligibility of both the volume and the user. If the value is true, the user can initiate a family sharing action.
          },
          "rentalState": "A String", # Whether this book is an active or an expired rental.
          "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
          "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
            "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.
          },
          "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
          "isFamilySharingAllowed": True or False, # Deprecated: Replaced by familySharing.
          "review": { # This user's review of this volume, if one exists.
            "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
            "kind": "books#review", # Resource type for a review.
            "author": { # Author of this review.
              "displayName": "A String", # Name of this person.
            },
            "title": "A String", # Title for this review.
            "volumeId": "A String", # Volume that this review is for.
            "content": "A String", # Review text.
            "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
              "extraDescription": "A String", # Extra text about the source of the review.
              "url": "A String", # URL of the source of the review.
              "description": "A String", # Name of the source.
            },
            "date": "A String", # Date of this review.
            "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
            "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
          },
          "isFamilySharedToUser": True or False, # Whether or not the user received this volume through family sharing.
          "entitlementType": 42, # Whether this volume is purchased, sample, pd download etc.
          "copy": { # Copy/Paste accounting information.
            "limitType": "A String",
            "remainingCharacterCount": 42,
            "updated": "A String",
            "allowedCharacterCount": 42,
          },
          "isFamilySharingDisabledByFop": True or False, # Deprecated: Replaced by familySharing.
          "isUploaded": True or False, # Whether or not this volume was user uploaded.
          "acquiredTime": "A String", # Timestamp when this volume was acquired by the user. (RFC 3339 UTC date-time format) Acquiring includes purchase, user upload, receiving family sharing, etc.
        },
      },
    ],
    "kind": "books#volumes", # Resource type.
  }</pre>
</div>

<div class="method">
    <code class="details" id="updateUserSettings">updateUserSettings(body)</code>
  <pre>Sets the settings for the user. If a sub-object is specified, it will overwrite the existing sub-object stored in the server. Unspecified sub-objects will retain the existing value.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{
  "notification": {
    "matchMyInterests": {
      "opted_state": "A String",
    },
    "rewardExpirations": {
      "opted_state": "A String",
    },
    "moreFromSeries": {
      "opted_state": "A String",
    },
    "moreFromAuthors": {
      "opted_state": "A String",
    },
    "priceDrop": {
      "opted_state": "A String",
    },
  },
  "kind": "books#usersettings", # Resource type.
  "notesExport": { # User settings in sub-objects, each for different purposes.
    "isEnabled": True or False,
    "folderName": "A String",
  },
}


Returns:
  An object of the form:

    {
    "notification": {
      "matchMyInterests": {
        "opted_state": "A String",
      },
      "rewardExpirations": {
        "opted_state": "A String",
      },
      "moreFromSeries": {
        "opted_state": "A String",
      },
      "moreFromAuthors": {
        "opted_state": "A String",
      },
      "priceDrop": {
        "opted_state": "A String",
      },
    },
    "kind": "books#usersettings", # Resource type.
    "notesExport": { # User settings in sub-objects, each for different purposes.
      "isEnabled": True or False,
      "folderName": "A String",
    },
  }</pre>
</div>

</body></html>