{
  "ownerName": "Google",
  "resources": {
    "familysharing": {
      "methods": {
        "share": {
          "parameterOrder": [],
          "flatPath": "books/v1/familysharing/share",
          "path": "books/v1/familysharing/share",
          "description": "Initiates sharing of the content with the user's family. Empty response indicates success.",
          "id": "books.familysharing.share",
          "httpMethod": "POST",
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "volumeId": {
              "description": "The volume to share.",
              "type": "string",
              "location": "query"
            },
            "docId": {
              "description": "The docid to share.",
              "type": "string",
              "location": "query"
            },
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query"
            }
          }
        },
        "getFamilyInfo": {
          "flatPath": "books/v1/familysharing/getFamilyInfo",
          "parameterOrder": [],
          "parameters": {
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query"
            }
          },
          "response": {
            "$ref": "FamilyInfo"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "id": "books.familysharing.getFamilyInfo",
          "httpMethod": "GET",
          "description": "Gets information regarding the family that the user is part of.",
          "path": "books/v1/familysharing/getFamilyInfo"
        },
        "unshare": {
          "parameterOrder": [],
          "flatPath": "books/v1/familysharing/unshare",
          "id": "books.familysharing.unshare",
          "httpMethod": "POST",
          "description": "Initiates revoking content that has already been shared with the user's family. Empty response indicates success.",
          "path": "books/v1/familysharing/unshare",
          "parameters": {
            "docId": {
              "location": "query",
              "description": "The docid to unshare.",
              "type": "string"
            },
            "volumeId": {
              "description": "The volume to unshare.",
              "type": "string",
              "location": "query"
            },
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            }
          },
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        }
      }
    },
    "personalizedstream": {
      "methods": {
        "get": {
          "path": "books/v1/personalizedstream/get",
          "id": "books.personalizedstream.get",
          "httpMethod": "GET",
          "description": "Returns a stream of personalized book clusters",
          "response": {
            "$ref": "Discoveryclusters"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "maxAllowedMaturityRating": {
              "enum": [
                "MAX_ALLOWED_MATURITY_RATING_UNDEFINED",
                "MATURE",
                "not-mature"
              ],
              "location": "query",
              "description": "The maximum allowed maturity rating of returned recommendations. Books with a higher maturity rating are filtered out.",
              "enumDescriptions": [
                "",
                "Show books which are rated mature or lower.",
                "Show books which are rated not mature."
              ],
              "type": "string"
            },
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            },
            "locale": {
              "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.",
              "type": "string",
              "location": "query"
            }
          },
          "parameterOrder": [],
          "flatPath": "books/v1/personalizedstream/get"
        }
      }
    },
    "promooffer": {
      "methods": {
        "get": {
          "flatPath": "books/v1/promooffer/get",
          "parameterOrder": [],
          "response": {
            "$ref": "Offers"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "serial": {
              "description": "device serial",
              "type": "string",
              "location": "query"
            },
            "product": {
              "description": "device product",
              "type": "string",
              "location": "query"
            },
            "manufacturer": {
              "location": "query",
              "description": "device manufacturer",
              "type": "string"
            },
            "model": {
              "location": "query",
              "description": "device model",
              "type": "string"
            },
            "androidId": {
              "location": "query",
              "description": "device android_id",
              "type": "string"
            },
            "device": {
              "description": "device device",
              "type": "string",
              "location": "query"
            }
          },
          "path": "books/v1/promooffer/get",
          "description": "Returns a list of promo offers available to the user",
          "id": "books.promooffer.get",
          "httpMethod": "GET"
        },
        "accept": {
          "flatPath": "books/v1/promooffer/accept",
          "parameterOrder": [],
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "manufacturer": {
              "location": "query",
              "description": "device manufacturer",
              "type": "string"
            },
            "model": {
              "description": "device model",
              "type": "string",
              "location": "query"
            },
            "androidId": {
              "description": "device android_id",
              "type": "string",
              "location": "query"
            },
            "device": {
              "description": "device device",
              "type": "string",
              "location": "query"
            },
            "volumeId": {
              "location": "query",
              "description": "Volume id to exercise the offer",
              "type": "string"
            },
            "serial": {
              "location": "query",
              "description": "device serial",
              "type": "string"
            },
            "product": {
              "location": "query",
              "description": "device product",
              "type": "string"
            },
            "offerId": {
              "type": "string",
              "location": "query"
            }
          },
          "path": "books/v1/promooffer/accept",
          "description": "Accepts the promo offer.",
          "id": "books.promooffer.accept",
          "httpMethod": "POST"
        },
        "dismiss": {
          "parameterOrder": [],
          "flatPath": "books/v1/promooffer/dismiss",
          "description": "Marks the promo offer as dismissed.",
          "id": "books.promooffer.dismiss",
          "httpMethod": "POST",
          "path": "books/v1/promooffer/dismiss",
          "parameters": {
            "androidId": {
              "description": "device android_id",
              "type": "string",
              "location": "query"
            },
            "device": {
              "description": "device device",
              "type": "string",
              "location": "query"
            },
            "manufacturer": {
              "location": "query",
              "description": "device manufacturer",
              "type": "string"
            },
            "model": {
              "location": "query",
              "description": "device model",
              "type": "string"
            },
            "product": {
              "location": "query",
              "description": "device product",
              "type": "string"
            },
            "offerId": {
              "location": "query",
              "description": "Offer to dimiss",
              "type": "string"
            },
            "serial": {
              "description": "device serial",
              "type": "string",
              "location": "query"
            }
          },
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        }
      }
    },
    "series": {
      "methods": {
        "get": {
          "response": {
            "$ref": "Series"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "series_id": {
              "location": "query",
              "repeated": true,
              "description": "String that identifies the series",
              "required": true,
              "type": "string"
            }
          },
          "path": "books/v1/series/get",
          "description": "Returns Series metadata for the given series ids.",
          "id": "books.series.get",
          "httpMethod": "GET",
          "flatPath": "books/v1/series/get",
          "parameterOrder": [
            "series_id"
          ]
        }
      },
      "resources": {
        "membership": {
          "methods": {
            "get": {
              "flatPath": "books/v1/series/membership/get",
              "parameterOrder": [
                "series_id"
              ],
              "response": {
                "$ref": "Seriesmembership"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "page_token": {
                  "description": "The value of the nextToken from the previous page.",
                  "type": "string",
                  "location": "query"
                },
                "page_size": {
                  "format": "uint32",
                  "location": "query",
                  "description": "Number of maximum results per page to be included in the response.",
                  "type": "integer"
                },
                "series_id": {
                  "location": "query",
                  "required": true,
                  "description": "String that identifies the series",
                  "type": "string"
                }
              },
              "path": "books/v1/series/membership/get",
              "id": "books.series.membership.get",
              "httpMethod": "GET",
              "description": "Returns Series membership data given the series id."
            }
          }
        }
      }
    },
    "cloudloading": {
      "methods": {
        "addBook": {
          "id": "books.cloudloading.addBook",
          "httpMethod": "POST",
          "description": "Add a user-upload volume and triggers processing.",
          "path": "books/v1/cloudloading/addBook",
          "parameters": {
            "drive_document_id": {
              "description": "A drive document id. The upload_client_token must not be set.",
              "type": "string",
              "location": "query"
            },
            "mime_type": {
              "location": "query",
              "description": "The document MIME type. It can be set only if the drive_document_id is set.",
              "type": "string"
            },
            "name": {
              "description": "The document name. It can be set only if the drive_document_id is set.",
              "type": "string",
              "location": "query"
            },
            "upload_client_token": {
              "location": "query",
              "description": "Scotty upload token.",
              "type": "string"
            }
          },
          "response": {
            "$ref": "BooksCloudloadingResource"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameterOrder": [],
          "flatPath": "books/v1/cloudloading/addBook"
        },
        "updateBook": {
          "parameterOrder": [],
          "flatPath": "books/v1/cloudloading/updateBook",
          "path": "books/v1/cloudloading/updateBook",
          "request": {
            "$ref": "BooksCloudloadingResource"
          },
          "description": "Updates a user-upload volume.",
          "id": "books.cloudloading.updateBook",
          "httpMethod": "POST",
          "response": {
            "$ref": "BooksCloudloadingResource"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {}
        },
        "deleteBook": {
          "parameterOrder": [
            "volumeId"
          ],
          "flatPath": "books/v1/cloudloading/deleteBook",
          "id": "books.cloudloading.deleteBook",
          "httpMethod": "POST",
          "description": "Remove the book and its contents",
          "path": "books/v1/cloudloading/deleteBook",
          "parameters": {
            "volumeId": {
              "location": "query",
              "required": true,
              "description": "The id of the book to be removed.",
              "type": "string"
            }
          },
          "response": {
            "$ref": "Empty"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        }
      }
    },
    "notification": {
      "methods": {
        "get": {
          "parameterOrder": [
            "notification_id"
          ],
          "flatPath": "books/v1/notification/get",
          "id": "books.notification.get",
          "httpMethod": "GET",
          "description": "Returns notification details for a given notification id.",
          "path": "books/v1/notification/get",
          "parameters": {
            "notification_id": {
              "location": "query",
              "required": true,
              "description": "String to identify the notification.",
              "type": "string"
            },
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query"
            },
            "locale": {
              "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating notification title and body.",
              "type": "string",
              "location": "query"
            }
          },
          "response": {
            "$ref": "Notification"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        }
      }
    },
    "onboarding": {
      "methods": {
        "listCategories": {
          "flatPath": "books/v1/onboarding/listCategories",
          "parameterOrder": [],
          "response": {
            "$ref": "Category"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "locale": {
              "location": "query",
              "description": "ISO-639-1 language and ISO-3166-1 country code. Default is en-US if unset.",
              "type": "string"
            }
          },
          "path": "books/v1/onboarding/listCategories",
          "id": "books.onboarding.listCategories",
          "httpMethod": "GET",
          "description": "List categories for onboarding experience."
        },
        "listCategoryVolumes": {
          "path": "books/v1/onboarding/listCategoryVolumes",
          "description": "List available volumes under categories for onboarding experience.",
          "id": "books.onboarding.listCategoryVolumes",
          "httpMethod": "GET",
          "response": {
            "$ref": "Volume2"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "pageToken": {
              "location": "query",
              "description": "The value of the nextToken from the previous page.",
              "type": "string"
            },
            "locale": {
              "description": "ISO-639-1 language and ISO-3166-1 country code. Default is en-US if unset.",
              "type": "string",
              "location": "query"
            },
            "categoryId": {
              "description": "List of category ids requested.",
              "type": "string",
              "location": "query",
              "repeated": true
            },
            "maxAllowedMaturityRating": {
              "enumDescriptions": [
                "",
                "Show books which are rated mature or lower.",
                "Show books which are rated not mature."
              ],
              "type": "string",
              "enum": [
                "MAX_ALLOWED_MATURITY_RATING_UNDEFINED",
                "MATURE",
                "not-mature"
              ],
              "location": "query",
              "description": "The maximum allowed maturity rating of returned volumes. Books with a higher maturity rating are filtered out."
            },
            "pageSize": {
              "format": "uint32",
              "location": "query",
              "description": "Number of maximum results per page to be included in the response.",
              "type": "integer"
            }
          },
          "parameterOrder": [],
          "flatPath": "books/v1/onboarding/listCategoryVolumes"
        }
      }
    },
    "volumes": {
      "methods": {
        "get": {
          "parameterOrder": [
            "volumeId"
          ],
          "flatPath": "books/v1/volumes/{volumeId}",
          "description": "Gets volume information for a single volume.",
          "id": "books.volumes.get",
          "httpMethod": "GET",
          "path": "books/v1/volumes/{volumeId}",
          "parameters": {
            "partner": {
              "location": "query",
              "description": "Brand results for partner ID.",
              "type": "string"
            },
            "source": {
              "description": "string to identify the originator of this request.",
              "type": "string",
              "location": "query"
            },
            "user_library_consistent_read": {
              "location": "query",
              "type": "boolean"
            },
            "volumeId": {
              "location": "path",
              "required": true,
              "description": "ID of volume to retrieve.",
              "type": "string"
            },
            "country": {
              "location": "query",
              "description": "ISO-3166-1 code to override the IP-based location.",
              "type": "string"
            },
            "includeNonComicsSeries": {
              "location": "query",
              "description": "Set to true to include non-comics series. Defaults to false.",
              "type": "boolean"
            },
            "projection": {
              "enumDescriptions": [
                "",
                "Includes all volume data.",
                "Includes a subset of fields in volumeInfo and accessInfo."
              ],
              "type": "string",
              "enum": [
                "PROJECTION_UNDEFINED",
                "FULL",
                "LITE"
              ],
              "location": "query",
              "description": "Restrict information returned to a set of selected fields."
            }
          },
          "response": {
            "$ref": "Volume"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        },
        "list": {
          "path": "books/v1/volumes",
          "description": "Performs a book search.",
          "id": "books.volumes.list",
          "httpMethod": "GET",
          "response": {
            "$ref": "Volumes"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "libraryRestrict": {
              "enumDescriptions": [
                "",
                "Restrict to the user's library, any shelf.",
                "Do not restrict based on user's library."
              ],
              "type": "string",
              "location": "query",
              "description": "Restrict search to this user's library.",
              "enum": [
                "LIBRARY_RESTRICT_UNDEFINED",
                "my-library",
                "no-restrict"
              ]
            },
            "orderBy": {
              "enum": [
                "ORDER_BY_UNDEFINED",
                "newest",
                "relevance"
              ],
              "description": "Sort search results.",
              "location": "query",
              "type": "string",
              "enumDescriptions": [
                "",
                "Most recently published.",
                "Relevance to search terms."
              ]
            },
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            },
            "projection": {
              "enumDescriptions": [
                "",
                "Includes all volume data.",
                "Includes a subset of fields in volumeInfo and accessInfo."
              ],
              "type": "string",
              "location": "query",
              "description": "Restrict information returned to a set of selected fields.",
              "enum": [
                "PROJECTION_UNDEFINED",
                "FULL",
                "LITE"
              ]
            },
            "maxAllowedMaturityRating": {
              "enum": [
                "MAX_ALLOWED_MATURITY_RATING_UNDEFINED",
                "MATURE",
                "not-mature"
              ],
              "location": "query",
              "description": "The maximum allowed maturity rating of returned recommendations. Books with a higher maturity rating are filtered out.",
              "enumDescriptions": [
                "",
                "Show books which are rated mature or lower.",
                "Show books which are rated not mature."
              ],
              "type": "string"
            },
            "printType": {
              "enumDescriptions": [
                "",
                "All volume content types.",
                "Just books.",
                "Just magazines."
              ],
              "type": "string",
              "enum": [
                "PRINT_TYPE_UNDEFINED",
                "ALL",
                "BOOKS",
                "MAGAZINES"
              ],
              "location": "query",
              "description": "Restrict to books or magazines."
            },
            "filter": {
              "type": "string",
              "enumDescriptions": [
                "",
                "All Google eBooks.",
                "Google eBook with full volume text viewability.",
                "Public can view entire volume text.",
                "Google eBook with a price.",
                "Public able to see parts of text."
              ],
              "description": "Filter search results.",
              "location": "query",
              "enum": [
                "FILTER_UNDEFINED",
                "ebooks",
                "free-ebooks",
                "full",
                "paid-ebooks",
                "partial"
              ]
            },
            "q": {
              "description": "Full-text search query string.",
              "type": "string",
              "location": "query",
              "required": true
            },
            "download": {
              "type": "string",
              "enumDescriptions": [
                "",
                "All volumes with epub."
              ],
              "description": "Restrict to volumes by download availability.",
              "location": "query",
              "enum": [
                "DOWNLOAD_UNDEFINED",
                "EPUB"
              ]
            },
            "startIndex": {
              "type": "integer",
              "minimum": "0",
              "format": "uint32",
              "description": "Index of the first result to return (starts at 0)",
              "location": "query"
            },
            "showPreorders": {
              "location": "query",
              "description": "Set to true to show books available for preorder. Defaults to false.",
              "type": "boolean"
            },
            "partner": {
              "location": "query",
              "description": "Restrict and brand results for partner ID.",
              "type": "string"
            },
            "langRestrict": {
              "description": "Restrict results to books with this language code.",
              "type": "string",
              "location": "query"
            },
            "maxResults": {
              "minimum": "0",
              "maximum": "40",
              "type": "integer",
              "location": "query",
              "description": "Maximum number of results to return.",
              "format": "uint32"
            }
          },
          "parameterOrder": [
            "q"
          ],
          "flatPath": "books/v1/volumes"
        }
      },
      "resources": {
        "associated": {
          "methods": {
            "list": {
              "parameterOrder": [
                "volumeId"
              ],
              "flatPath": "books/v1/volumes/{volumeId}/associated",
              "description": "Return a list of associated books.",
              "id": "books.volumes.associated.list",
              "httpMethod": "GET",
              "path": "books/v1/volumes/{volumeId}/associated",
              "parameters": {
                "maxAllowedMaturityRating": {
                  "description": "The maximum allowed maturity rating of returned recommendations. Books with a higher maturity rating are filtered out.",
                  "location": "query",
                  "enum": [
                    "MAX_ALLOWED_MATURITY_RATING_UNDEFINED",
                    "MATURE",
                    "not-mature"
                  ],
                  "type": "string",
                  "enumDescriptions": [
                    "",
                    "Show books which are rated mature or lower.",
                    "Show books which are rated not mature."
                  ]
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "volumeId": {
                  "description": "ID of the source volume.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "association": {
                  "enum": [
                    "ASSOCIATION_UNDEFINED",
                    "end-of-sample",
                    "end-of-volume",
                    "related-for-play"
                  ],
                  "location": "query",
                  "description": "Association type.",
                  "enumDescriptions": [
                    "",
                    "Recommendations for display end-of-sample.",
                    "Recommendations for display end-of-volume.",
                    "Related volumes for Play Store."
                  ],
                  "type": "string"
                },
                "locale": {
                  "location": "query",
                  "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Volumes"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ]
            }
          }
        },
        "mybooks": {
          "methods": {
            "list": {
              "response": {
                "$ref": "Volumes"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "maxResults": {
                  "location": "query",
                  "description": "Maximum number of results to return.",
                  "format": "uint32",
                  "minimum": "0",
                  "maximum": "100",
                  "type": "integer"
                },
                "startIndex": {
                  "type": "integer",
                  "minimum": "0",
                  "format": "uint32",
                  "description": "Index of the first result to return (starts at 0)",
                  "location": "query"
                },
                "acquireMethod": {
                  "type": "string",
                  "enumDescriptions": [
                    "",
                    "Books acquired via Family Sharing",
                    "Preordered books (not yet available)",
                    "User-rented books past their expiration time",
                    "Public domain books",
                    "Purchased books",
                    "User-rented books",
                    "Sample books",
                    "User uploaded books"
                  ],
                  "enum": [
                    "ACQUIRE_METHOD_UNDEFINED",
                    "FAMILY_SHARED",
                    "PREORDERED",
                    "PREVIOUSLY_RENTED",
                    "PUBLIC_DOMAIN",
                    "PURCHASED",
                    "RENTED",
                    "SAMPLE",
                    "UPLOADED"
                  ],
                  "description": "How the book was acquired",
                  "location": "query",
                  "repeated": true
                },
                "country": {
                  "description": "ISO-3166-1 code to override the IP-based location.",
                  "type": "string",
                  "location": "query"
                },
                "processingState": {
                  "type": "string",
                  "enumDescriptions": [
                    "",
                    "The volume processing hase failed.",
                    "The volume processing was completed.",
                    "The volume processing is not completed."
                  ],
                  "description": "The processing state of the user uploaded volumes to be returned. Applicable only if the UPLOADED is specified in the acquireMethod.",
                  "location": "query",
                  "repeated": true,
                  "enum": [
                    "PROCESSING_STATE_UNDEFINED",
                    "COMPLETED_FAILED",
                    "COMPLETED_SUCCESS",
                    "RUNNING"
                  ]
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "locale": {
                  "location": "query",
                  "description": "ISO-639-1 language and ISO-3166-1 country code. Ex:'en_US'. Used for generating recommendations.",
                  "type": "string"
                }
              },
              "path": "books/v1/volumes/mybooks",
              "id": "books.volumes.mybooks.list",
              "httpMethod": "GET",
              "description": "Return a list of books in My Library.",
              "flatPath": "books/v1/volumes/mybooks",
              "parameterOrder": []
            }
          }
        },
        "recommended": {
          "methods": {
            "list": {
              "description": "Return a list of recommended books for the current user.",
              "id": "books.volumes.recommended.list",
              "httpMethod": "GET",
              "path": "books/v1/volumes/recommended",
              "parameters": {
                "locale": {
                  "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.",
                  "type": "string",
                  "location": "query"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "maxAllowedMaturityRating": {
                  "enum": [
                    "MAX_ALLOWED_MATURITY_RATING_UNDEFINED",
                    "MATURE",
                    "not-mature"
                  ],
                  "description": "The maximum allowed maturity rating of returned recommendations. Books with a higher maturity rating are filtered out.",
                  "location": "query",
                  "type": "string",
                  "enumDescriptions": [
                    "",
                    "Show books which are rated mature or lower.",
                    "Show books which are rated not mature."
                  ]
                }
              },
              "response": {
                "$ref": "Volumes"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameterOrder": [],
              "flatPath": "books/v1/volumes/recommended"
            },
            "rate": {
              "flatPath": "books/v1/volumes/recommended/rate",
              "parameterOrder": [
                "rating",
                "volumeId"
              ],
              "parameters": {
                "locale": {
                  "location": "query",
                  "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.",
                  "type": "string"
                },
                "volumeId": {
                  "description": "ID of the source volume.",
                  "type": "string",
                  "location": "query",
                  "required": true
                },
                "rating": {
                  "enum": [
                    "RATING_UNDEFINED",
                    "HAVE_IT",
                    "NOT_INTERESTED"
                  ],
                  "location": "query",
                  "description": "Rating to be given to the volume.",
                  "required": true,
                  "enumDescriptions": [
                    "",
                    "Rating indicating a dismissal due to ownership.",
                    "Rating indicating a negative dismissal of a volume."
                  ],
                  "type": "string"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                }
              },
              "response": {
                "$ref": "BooksVolumesRecommendedRateResponse"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "description": "Rate a recommended book for the current user.",
              "id": "books.volumes.recommended.rate",
              "httpMethod": "POST",
              "path": "books/v1/volumes/recommended/rate"
            }
          }
        },
        "useruploaded": {
          "methods": {
            "list": {
              "parameterOrder": [],
              "flatPath": "books/v1/volumes/useruploaded",
              "path": "books/v1/volumes/useruploaded",
              "description": "Return a list of books uploaded by the current user.",
              "id": "books.volumes.useruploaded.list",
              "httpMethod": "GET",
              "response": {
                "$ref": "Volumes"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "locale": {
                  "location": "query",
                  "description": "ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.",
                  "type": "string"
                },
                "volumeId": {
                  "description": "The ids of the volumes to be returned. If not specified all that match the processingState are returned.",
                  "type": "string",
                  "location": "query",
                  "repeated": true
                },
                "processingState": {
                  "type": "string",
                  "enumDescriptions": [
                    "",
                    "The volume processing hase failed.",
                    "The volume processing was completed.",
                    "The volume processing is not completed."
                  ],
                  "enum": [
                    "PROCESSING_STATE_UNDEFINED",
                    "COMPLETED_FAILED",
                    "COMPLETED_SUCCESS",
                    "RUNNING"
                  ],
                  "description": "The processing state of the user uploaded volumes to be returned.",
                  "location": "query",
                  "repeated": true
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "maxResults": {
                  "description": "Maximum number of results to return.",
                  "location": "query",
                  "format": "uint32",
                  "maximum": "40",
                  "type": "integer",
                  "minimum": "0"
                },
                "startIndex": {
                  "location": "query",
                  "description": "Index of the first result to return (starts at 0)",
                  "format": "uint32",
                  "minimum": "0",
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    },
    "layers": {
      "methods": {
        "get": {
          "id": "books.layers.get",
          "httpMethod": "GET",
          "description": "Gets the layer summary for a volume.",
          "path": "books/v1/volumes/{volumeId}/layersummary/{summaryId}",
          "parameters": {
            "volumeId": {
              "location": "path",
              "required": true,
              "description": "The volume to retrieve layers for.",
              "type": "string"
            },
            "contentVersion": {
              "location": "query",
              "description": "The content version for the requested volume.",
              "type": "string"
            },
            "summaryId": {
              "location": "path",
              "required": true,
              "description": "The ID for the layer to get the summary for.",
              "type": "string"
            },
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query"
            }
          },
          "response": {
            "$ref": "Layersummary"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameterOrder": [
            "volumeId",
            "summaryId"
          ],
          "flatPath": "books/v1/volumes/{volumeId}/layersummary/{summaryId}"
        },
        "list": {
          "flatPath": "books/v1/volumes/{volumeId}/layersummary",
          "parameterOrder": [
            "volumeId"
          ],
          "response": {
            "$ref": "Layersummaries"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "maxResults": {
              "maximum": "200",
              "type": "integer",
              "minimum": "0",
              "description": "Maximum number of results to return",
              "location": "query",
              "format": "uint32"
            },
            "volumeId": {
              "location": "path",
              "required": true,
              "description": "The volume to retrieve layers for.",
              "type": "string"
            },
            "contentVersion": {
              "description": "The content version for the requested volume.",
              "type": "string",
              "location": "query"
            },
            "pageToken": {
              "location": "query",
              "description": "The value of the nextToken from the previous page.",
              "type": "string"
            },
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query"
            }
          },
          "path": "books/v1/volumes/{volumeId}/layersummary",
          "id": "books.layers.list",
          "httpMethod": "GET",
          "description": "List the layer summaries for a volume."
        }
      },
      "resources": {
        "volumeAnnotations": {
          "methods": {
            "get": {
              "flatPath": "books/v1/volumes/{volumeId}/layers/{layerId}/annotations/{annotationId}",
              "parameterOrder": [
                "volumeId",
                "layerId",
                "annotationId"
              ],
              "parameters": {
                "layerId": {
                  "location": "path",
                  "required": true,
                  "description": "The ID for the layer to get the annotations.",
                  "type": "string"
                },
                "volumeId": {
                  "location": "path",
                  "required": true,
                  "description": "The volume to retrieve annotations for.",
                  "type": "string"
                },
                "locale": {
                  "description": "The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.",
                  "type": "string",
                  "location": "query"
                },
                "source": {
                  "location": "query",
                  "description": "String to identify the originator of this request.",
                  "type": "string"
                },
                "annotationId": {
                  "location": "path",
                  "required": true,
                  "description": "The ID of the volume annotation to retrieve.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Volumeannotation"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "description": "Gets the volume annotation.",
              "id": "books.layers.volumeAnnotations.get",
              "httpMethod": "GET",
              "path": "books/v1/volumes/{volumeId}/layers/{layerId}/annotations/{annotationId}"
            },
            "list": {
              "parameters": {
                "updatedMax": {
                  "location": "query",
                  "description": "RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).",
                  "type": "string"
                },
                "startOffset": {
                  "location": "query",
                  "description": "The start offset to start retrieving data from.",
                  "type": "string"
                },
                "contentVersion": {
                  "location": "query",
                  "required": true,
                  "description": "The content version for the requested volume.",
                  "type": "string"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "startPosition": {
                  "description": "The start position to start retrieving data from.",
                  "type": "string",
                  "location": "query"
                },
                "endPosition": {
                  "description": "The end position to end retrieving data from.",
                  "type": "string",
                  "location": "query"
                },
                "volumeId": {
                  "location": "path",
                  "required": true,
                  "description": "The volume to retrieve annotations for.",
                  "type": "string"
                },
                "layerId": {
                  "location": "path",
                  "required": true,
                  "description": "The ID for the layer to get the annotations.",
                  "type": "string"
                },
                "showDeleted": {
                  "location": "query",
                  "description": "Set to true to return deleted annotations. updatedMin must be in the request to use this. Defaults to false.",
                  "type": "boolean"
                },
                "pageToken": {
                  "location": "query",
                  "description": "The value of the nextToken from the previous page.",
                  "type": "string"
                },
                "volumeAnnotationsVersion": {
                  "description": "The version of the volume annotations that you are requesting.",
                  "type": "string",
                  "location": "query"
                },
                "endOffset": {
                  "description": "The end offset to end retrieving data from.",
                  "type": "string",
                  "location": "query"
                },
                "updatedMin": {
                  "description": "RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).",
                  "type": "string",
                  "location": "query"
                },
                "maxResults": {
                  "maximum": "200",
                  "type": "integer",
                  "minimum": "0",
                  "description": "Maximum number of results to return",
                  "location": "query",
                  "format": "uint32"
                },
                "locale": {
                  "location": "query",
                  "description": "The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Volumeannotations"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "description": "Gets the volume annotations for a volume and layer.",
              "id": "books.layers.volumeAnnotations.list",
              "httpMethod": "GET",
              "path": "books/v1/volumes/{volumeId}/layers/{layerId}",
              "flatPath": "books/v1/volumes/{volumeId}/layers/{layerId}",
              "parameterOrder": [
                "volumeId",
                "layerId",
                "contentVersion"
              ]
            }
          }
        },
        "annotationData": {
          "methods": {
            "get": {
              "path": "books/v1/volumes/{volumeId}/layers/{layerId}/data/{annotationDataId}",
              "id": "books.layers.annotationData.get",
              "httpMethod": "GET",
              "description": "Gets the annotation data.",
              "response": {
                "$ref": "DictionaryAnnotationdata"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "h": {
                  "description": "The requested pixel height for any images. If height is provided width must also be provided.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "w": {
                  "description": "The requested pixel width for any images. If width is provided height must also be provided.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "allowWebDefinitions": {
                  "location": "query",
                  "description": "For the dictionary layer. Whether or not to allow web definitions.",
                  "type": "boolean"
                },
                "volumeId": {
                  "location": "path",
                  "required": true,
                  "description": "The volume to retrieve annotations for.",
                  "type": "string"
                },
                "locale": {
                  "location": "query",
                  "description": "The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.",
                  "type": "string"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "layerId": {
                  "description": "The ID for the layer to get the annotations.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "contentVersion": {
                  "description": "The content version for the volume you are trying to retrieve.",
                  "type": "string",
                  "location": "query",
                  "required": true
                },
                "scale": {
                  "minimum": "0",
                  "type": "integer",
                  "format": "int32",
                  "location": "query",
                  "description": "The requested scale for the image."
                },
                "annotationDataId": {
                  "location": "path",
                  "required": true,
                  "description": "The ID of the annotation data to retrieve.",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "volumeId",
                "layerId",
                "annotationDataId",
                "contentVersion"
              ],
              "flatPath": "books/v1/volumes/{volumeId}/layers/{layerId}/data/{annotationDataId}"
            },
            "list": {
              "path": "books/v1/volumes/{volumeId}/layers/{layerId}/data",
              "id": "books.layers.annotationData.list",
              "httpMethod": "GET",
              "description": "Gets the annotation data for a volume and layer.",
              "response": {
                "$ref": "Annotationsdata"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "pageToken": {
                  "location": "query",
                  "description": "The value of the nextToken from the previous page.",
                  "type": "string"
                },
                "layerId": {
                  "description": "The ID for the layer to get the annotation data.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "maxResults": {
                  "maximum": "200",
                  "type": "integer",
                  "minimum": "0",
                  "description": "Maximum number of results to return",
                  "location": "query",
                  "format": "uint32"
                },
                "updatedMin": {
                  "location": "query",
                  "description": "RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).",
                  "type": "string"
                },
                "h": {
                  "location": "query",
                  "description": "The requested pixel height for any images. If height is provided width must also be provided.",
                  "type": "integer",
                  "format": "int32"
                },
                "locale": {
                  "location": "query",
                  "description": "The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.",
                  "type": "string"
                },
                "annotationDataId": {
                  "location": "query",
                  "repeated": true,
                  "description": "The list of Annotation Data Ids to retrieve. Pagination is ignored if this is set.",
                  "type": "string"
                },
                "updatedMax": {
                  "location": "query",
                  "description": "RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).",
                  "type": "string"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "contentVersion": {
                  "description": "The content version for the requested volume.",
                  "type": "string",
                  "location": "query",
                  "required": true
                },
                "scale": {
                  "location": "query",
                  "description": "The requested scale for the image.",
                  "format": "int32",
                  "minimum": "0",
                  "type": "integer"
                },
                "w": {
                  "format": "int32",
                  "description": "The requested pixel width for any images. If width is provided height must also be provided.",
                  "type": "integer",
                  "location": "query"
                },
                "volumeId": {
                  "location": "path",
                  "required": true,
                  "description": "The volume to retrieve annotation data for.",
                  "type": "string"
                }
              },
              "parameterOrder": [
                "volumeId",
                "layerId",
                "contentVersion"
              ],
              "flatPath": "books/v1/volumes/{volumeId}/layers/{layerId}/data"
            }
          }
        }
      }
    },
    "mylibrary": {
      "resources": {
        "annotations": {
          "methods": {
            "delete": {
              "parameterOrder": [
                "annotationId"
              ],
              "flatPath": "books/v1/mylibrary/annotations/{annotationId}",
              "path": "books/v1/mylibrary/annotations/{annotationId}",
              "description": "Deletes an annotation.",
              "id": "books.mylibrary.annotations.delete",
              "httpMethod": "DELETE",
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "annotationId": {
                  "location": "path",
                  "required": true,
                  "description": "The ID for the annotation to delete.",
                  "type": "string"
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                }
              }
            },
            "summary": {
              "id": "books.mylibrary.annotations.summary",
              "httpMethod": "POST",
              "description": "Gets the summary of specified layers.",
              "path": "books/v1/mylibrary/annotations/summary",
              "parameters": {
                "layerIds": {
                  "description": "Array of layer IDs to get the summary for.",
                  "location": "query",
                  "repeated": true,
                  "type": "string",
                  "required": true
                },
                "volumeId": {
                  "location": "query",
                  "required": true,
                  "description": "Volume id to get the summary for.",
                  "type": "string"
                },
                "source": {
                  "location": "query",
                  "description": "Optional. String to identify the originator of this request.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "AnnotationsSummary"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameterOrder": [
                "layerIds",
                "volumeId"
              ],
              "flatPath": "books/v1/mylibrary/annotations/summary"
            },
            "update": {
              "description": "Updates an existing annotation.",
              "id": "books.mylibrary.annotations.update",
              "httpMethod": "PUT",
              "path": "books/v1/mylibrary/annotations/{annotationId}",
              "request": {
                "$ref": "Annotation"
              },
              "parameters": {
                "annotationId": {
                  "description": "The ID for the annotation to update.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "source": {
                  "location": "query",
                  "description": "String to identify the originator of this request.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Annotation"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameterOrder": [
                "annotationId"
              ],
              "flatPath": "books/v1/mylibrary/annotations/{annotationId}"
            },
            "insert": {
              "flatPath": "books/v1/mylibrary/annotations",
              "parameterOrder": [],
              "response": {
                "$ref": "Annotation"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "country": {
                  "location": "query",
                  "description": "ISO-3166-1 code to override the IP-based location.",
                  "type": "string"
                },
                "showOnlySummaryInResponse": {
                  "location": "query",
                  "description": "Requests that only the summary of the specified layer be provided in the response.",
                  "type": "boolean"
                },
                "annotationId": {
                  "location": "query",
                  "description": "The ID for the annotation to insert.",
                  "type": "string"
                }
              },
              "path": "books/v1/mylibrary/annotations",
              "request": {
                "$ref": "Annotation"
              },
              "description": "Inserts a new annotation.",
              "id": "books.mylibrary.annotations.insert",
              "httpMethod": "POST"
            },
            "list": {
              "parameterOrder": [],
              "flatPath": "books/v1/mylibrary/annotations",
              "path": "books/v1/mylibrary/annotations",
              "description": "Retrieves a list of annotations, possibly filtered.",
              "id": "books.mylibrary.annotations.list",
              "httpMethod": "GET",
              "response": {
                "$ref": "Annotations"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "layerIds": {
                  "location": "query",
                  "repeated": true,
                  "description": "The layer ID(s) to limit annotation by.",
                  "type": "string"
                },
                "updatedMax": {
                  "location": "query",
                  "description": "RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).",
                  "type": "string"
                },
                "layerId": {
                  "description": "The layer ID to limit annotation by.",
                  "type": "string",
                  "location": "query"
                },
                "contentVersion": {
                  "description": "The content version for the requested volume.",
                  "type": "string",
                  "location": "query"
                },
                "showDeleted": {
                  "location": "query",
                  "description": "Set to true to return deleted annotations. updatedMin must be in the request to use this. Defaults to false.",
                  "type": "boolean"
                },
                "pageToken": {
                  "location": "query",
                  "description": "The value of the nextToken from the previous page.",
                  "type": "string"
                },
                "source": {
                  "location": "query",
                  "description": "String to identify the originator of this request.",
                  "type": "string"
                },
                "updatedMin": {
                  "location": "query",
                  "description": "RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).",
                  "type": "string"
                },
                "maxResults": {
                  "description": "Maximum number of results to return",
                  "location": "query",
                  "format": "uint32",
                  "maximum": "40",
                  "type": "integer",
                  "minimum": "0"
                },
                "volumeId": {
                  "description": "The volume to restrict annotations to.",
                  "type": "string",
                  "location": "query"
                }
              }
            }
          }
        },
        "readingpositions": {
          "methods": {
            "get": {
              "id": "books.mylibrary.readingpositions.get",
              "httpMethod": "GET",
              "description": "Retrieves my reading position information for a volume.",
              "path": "books/v1/mylibrary/readingpositions/{volumeId}",
              "parameters": {
                "volumeId": {
                  "description": "ID of volume for which to retrieve a reading position.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "contentVersion": {
                  "location": "query",
                  "description": "Volume content version for which this reading position is requested.",
                  "type": "string"
                },
                "source": {
                  "location": "query",
                  "description": "String to identify the originator of this request.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "ReadingPosition"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameterOrder": [
                "volumeId"
              ],
              "flatPath": "books/v1/mylibrary/readingpositions/{volumeId}"
            },
            "setPosition": {
              "flatPath": "books/v1/mylibrary/readingpositions/{volumeId}/setPosition",
              "parameterOrder": [
                "volumeId",
                "position",
                "timestamp"
              ],
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "action": {
                  "location": "query",
                  "description": "Action that caused this reading position to be set.",
                  "enum": [
                    "ACTION_UNDEFINED",
                    "bookmark",
                    "chapter",
                    "next-page",
                    "prev-page",
                    "scroll",
                    "search"
                  ],
                  "enumDescriptions": [
                    "",
                    "User chose bookmark within volume.",
                    "User selected chapter from list.",
                    "Next page event.",
                    "Previous page event.",
                    "User navigated to page.",
                    "User chose search results within volume."
                  ],
                  "type": "string"
                },
                "position": {
                  "description": "Position string for the new volume reading position.",
                  "type": "string",
                  "location": "query",
                  "required": true
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "volumeId": {
                  "location": "path",
                  "required": true,
                  "description": "ID of volume for which to update the reading position.",
                  "type": "string"
                },
                "contentVersion": {
                  "description": "Volume content version for which this reading position applies.",
                  "type": "string",
                  "location": "query"
                },
                "deviceCookie": {
                  "description": "Random persistent device cookie optional on set position.",
                  "type": "string",
                  "location": "query"
                },
                "timestamp": {
                  "location": "query",
                  "required": true,
                  "description": "RFC 3339 UTC format timestamp associated with this reading position.",
                  "type": "string"
                }
              },
              "path": "books/v1/mylibrary/readingpositions/{volumeId}/setPosition",
              "description": "Sets my reading position information for a volume.",
              "id": "books.mylibrary.readingpositions.setPosition",
              "httpMethod": "POST"
            }
          }
        },
        "bookshelves": {
          "methods": {
            "get": {
              "parameterOrder": [
                "shelf"
              ],
              "flatPath": "books/v1/mylibrary/bookshelves/{shelf}",
              "description": "Retrieves metadata for a specific bookshelf belonging to the authenticated user.",
              "id": "books.mylibrary.bookshelves.get",
              "httpMethod": "GET",
              "path": "books/v1/mylibrary/bookshelves/{shelf}",
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "shelf": {
                  "location": "path",
                  "required": true,
                  "description": "ID of bookshelf to retrieve.",
                  "type": "string"
                }
              },
              "response": {
                "$ref": "Bookshelf"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ]
            },
            "list": {
              "flatPath": "books/v1/mylibrary/bookshelves",
              "parameterOrder": [],
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                }
              },
              "response": {
                "$ref": "Bookshelves"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "id": "books.mylibrary.bookshelves.list",
              "httpMethod": "GET",
              "description": "Retrieves a list of bookshelves belonging to the authenticated user.",
              "path": "books/v1/mylibrary/bookshelves"
            },
            "moveVolume": {
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "volumePosition": {
                  "required": true,
                  "type": "integer",
                  "format": "int32",
                  "location": "query",
                  "description": "Position on shelf to move the item (0 puts the item before the current first item, 1 puts it between the first and the second and so on.)"
                },
                "shelf": {
                  "location": "path",
                  "required": true,
                  "description": "ID of bookshelf with the volume.",
                  "type": "string"
                },
                "volumeId": {
                  "location": "query",
                  "required": true,
                  "description": "ID of volume to move.",
                  "type": "string"
                }
              },
              "path": "books/v1/mylibrary/bookshelves/{shelf}/moveVolume",
              "description": "Moves a volume within a bookshelf.",
              "id": "books.mylibrary.bookshelves.moveVolume",
              "httpMethod": "POST",
              "flatPath": "books/v1/mylibrary/bookshelves/{shelf}/moveVolume",
              "parameterOrder": [
                "shelf",
                "volumeId",
                "volumePosition"
              ]
            },
            "clearVolumes": {
              "path": "books/v1/mylibrary/bookshelves/{shelf}/clearVolumes",
              "description": "Clears all volumes from a bookshelf.",
              "id": "books.mylibrary.bookshelves.clearVolumes",
              "httpMethod": "POST",
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "shelf": {
                  "description": "ID of bookshelf from which to remove a volume.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                }
              },
              "parameterOrder": [
                "shelf"
              ],
              "flatPath": "books/v1/mylibrary/bookshelves/{shelf}/clearVolumes"
            },
            "addVolume": {
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "shelf": {
                  "location": "path",
                  "required": true,
                  "description": "ID of bookshelf to which to add a volume.",
                  "type": "string"
                },
                "volumeId": {
                  "description": "ID of volume to add.",
                  "type": "string",
                  "location": "query",
                  "required": true
                },
                "reason": {
                  "enumDescriptions": [
                    "",
                    "Volumes added from the PREX flow on iOS.",
                    "Volumes added from the Search flow on iOS.",
                    "Volumes added from the Onboarding flow."
                  ],
                  "type": "string",
                  "enum": [
                    "REASON_UNDEFINED",
                    "IOS_PREX",
                    "IOS_SEARCH",
                    "ONBOARDING"
                  ],
                  "location": "query",
                  "description": "The reason for which the book is added to the library."
                }
              },
              "path": "books/v1/mylibrary/bookshelves/{shelf}/addVolume",
              "id": "books.mylibrary.bookshelves.addVolume",
              "httpMethod": "POST",
              "description": "Adds a volume to a bookshelf.",
              "flatPath": "books/v1/mylibrary/bookshelves/{shelf}/addVolume",
              "parameterOrder": [
                "shelf",
                "volumeId"
              ]
            },
            "removeVolume": {
              "response": {
                "$ref": "Empty"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "source": {
                  "description": "String to identify the originator of this request.",
                  "type": "string",
                  "location": "query"
                },
                "shelf": {
                  "description": "ID of bookshelf from which to remove a volume.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "volumeId": {
                  "location": "query",
                  "required": true,
                  "description": "ID of volume to remove.",
                  "type": "string"
                },
                "reason": {
                  "enum": [
                    "REASON_UNDEFINED",
                    "ONBOARDING"
                  ],
                  "location": "query",
                  "description": "The reason for which the book is removed from the library.",
                  "enumDescriptions": [
                    "",
                    "Samples removed from the Onboarding flow."
                  ],
                  "type": "string"
                }
              },
              "path": "books/v1/mylibrary/bookshelves/{shelf}/removeVolume",
              "description": "Removes a volume from a bookshelf.",
              "id": "books.mylibrary.bookshelves.removeVolume",
              "httpMethod": "POST",
              "flatPath": "books/v1/mylibrary/bookshelves/{shelf}/removeVolume",
              "parameterOrder": [
                "shelf",
                "volumeId"
              ]
            }
          },
          "resources": {
            "volumes": {
              "methods": {
                "list": {
                  "response": {
                    "$ref": "Volumes"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/books"
                  ],
                  "parameters": {
                    "maxResults": {
                      "format": "uint32",
                      "description": "Maximum number of results to return",
                      "location": "query",
                      "type": "integer",
                      "minimum": "0"
                    },
                    "startIndex": {
                      "minimum": "0",
                      "type": "integer",
                      "format": "uint32",
                      "location": "query",
                      "description": "Index of the first element to return (starts at 0)"
                    },
                    "shelf": {
                      "description": "The bookshelf ID or name retrieve volumes for.",
                      "type": "string",
                      "location": "path",
                      "required": true
                    },
                    "country": {
                      "location": "query",
                      "description": "ISO-3166-1 code to override the IP-based location.",
                      "type": "string"
                    },
                    "projection": {
                      "location": "query",
                      "description": "Restrict information returned to a set of selected fields.",
                      "enum": [
                        "PROJECTION_UNDEFINED",
                        "FULL",
                        "LITE"
                      ],
                      "enumDescriptions": [
                        "",
                        "Includes all volume data.",
                        "Includes a subset of fields in volumeInfo and accessInfo."
                      ],
                      "type": "string"
                    },
                    "q": {
                      "description": "Full-text search query string in this bookshelf.",
                      "type": "string",
                      "location": "query"
                    },
                    "source": {
                      "description": "String to identify the originator of this request.",
                      "type": "string",
                      "location": "query"
                    },
                    "showPreorders": {
                      "location": "query",
                      "description": "Set to true to show pre-ordered books. Defaults to false.",
                      "type": "boolean"
                    }
                  },
                  "path": "books/v1/mylibrary/bookshelves/{shelf}/volumes",
                  "description": "Gets volume information for volumes on a bookshelf.",
                  "id": "books.mylibrary.bookshelves.volumes.list",
                  "httpMethod": "GET",
                  "flatPath": "books/v1/mylibrary/bookshelves/{shelf}/volumes",
                  "parameterOrder": [
                    "shelf"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "dictionary": {
      "methods": {
        "listOfflineMetadata": {
          "path": "books/v1/dictionary/listOfflineMetadata",
          "id": "books.dictionary.listOfflineMetadata",
          "httpMethod": "GET",
          "description": "Returns a list of offline dictionary metadata available",
          "response": {
            "$ref": "Metadata"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "cpksver": {
              "location": "query",
              "required": true,
              "description": "The device/version ID from which to request the data.",
              "type": "string"
            }
          },
          "parameterOrder": [
            "cpksver"
          ],
          "flatPath": "books/v1/dictionary/listOfflineMetadata"
        }
      }
    },
    "myconfig": {
      "methods": {
        "getUserSettings": {
          "parameterOrder": [],
          "flatPath": "books/v1/myconfig/getUserSettings",
          "id": "books.myconfig.getUserSettings",
          "httpMethod": "GET",
          "description": "Gets the current settings for the user.",
          "path": "books/v1/myconfig/getUserSettings",
          "parameters": {
            "country": {
              "location": "query",
              "description": "Unused. Added only to workaround TEX mandatory request template requirement",
              "type": "string"
            }
          },
          "response": {
            "$ref": "Usersettings"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        },
        "releaseDownloadAccess": {
          "parameters": {
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            },
            "volumeIds": {
              "description": "The volume(s) to release restrictions for.",
              "location": "query",
              "repeated": true,
              "type": "string",
              "required": true
            },
            "cpksver": {
              "location": "query",
              "required": true,
              "description": "The device/version ID from which to release the restriction.",
              "type": "string"
            },
            "locale": {
              "description": "ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.",
              "type": "string",
              "location": "query"
            }
          },
          "response": {
            "$ref": "DownloadAccesses"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "id": "books.myconfig.releaseDownloadAccess",
          "httpMethod": "POST",
          "description": "Release downloaded content access restriction.",
          "path": "books/v1/myconfig/releaseDownloadAccess",
          "flatPath": "books/v1/myconfig/releaseDownloadAccess",
          "parameterOrder": [
            "cpksver",
            "volumeIds"
          ]
        },
        "syncVolumeLicenses": {
          "parameterOrder": [
            "cpksver",
            "nonce",
            "source"
          ],
          "flatPath": "books/v1/myconfig/syncVolumeLicenses",
          "id": "books.myconfig.syncVolumeLicenses",
          "httpMethod": "POST",
          "description": "Request downloaded content access for specified volumes on the My eBooks shelf.",
          "path": "books/v1/myconfig/syncVolumeLicenses",
          "parameters": {
            "source": {
              "description": "String to identify the originator of this request.",
              "type": "string",
              "location": "query",
              "required": true
            },
            "cpksver": {
              "location": "query",
              "required": true,
              "description": "The device/version ID from which to release the restriction.",
              "type": "string"
            },
            "locale": {
              "description": "ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.",
              "type": "string",
              "location": "query"
            },
            "showPreorders": {
              "description": "Set to true to show pre-ordered books. Defaults to false.",
              "type": "boolean",
              "location": "query"
            },
            "features": {
              "type": "string",
              "enumDescriptions": [
                "",
                "Client supports rentals."
              ],
              "description": "List of features supported by the client, i.e., 'RENTALS'",
              "location": "query",
              "repeated": true,
              "enum": [
                "FEATURES_UNDEFINED",
                "RENTALS"
              ]
            },
            "volumeIds": {
              "description": "The volume(s) to request download restrictions for.",
              "type": "string",
              "location": "query",
              "repeated": true
            },
            "includeNonComicsSeries": {
              "description": "Set to true to include non-comics series. Defaults to false.",
              "type": "boolean",
              "location": "query"
            },
            "nonce": {
              "description": "The client nonce value.",
              "type": "string",
              "location": "query",
              "required": true
            }
          },
          "response": {
            "$ref": "Volumes"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ]
        },
        "updateUserSettings": {
          "parameterOrder": [],
          "flatPath": "books/v1/myconfig/updateUserSettings",
          "request": {
            "$ref": "Usersettings"
          },
          "path": "books/v1/myconfig/updateUserSettings",
          "id": "books.myconfig.updateUserSettings",
          "httpMethod": "POST",
          "description": "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.",
          "response": {
            "$ref": "Usersettings"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {}
        },
        "requestAccess": {
          "path": "books/v1/myconfig/requestAccess",
          "description": "Request concurrent and download access restrictions.",
          "id": "books.myconfig.requestAccess",
          "httpMethod": "POST",
          "response": {
            "$ref": "RequestAccessData"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "nonce": {
              "location": "query",
              "required": true,
              "description": "The client nonce value.",
              "type": "string"
            },
            "source": {
              "location": "query",
              "required": true,
              "description": "String to identify the originator of this request.",
              "type": "string"
            },
            "licenseTypes": {
              "description": "The type of access license to request. If not specified, the default is BOTH.",
              "location": "query",
              "enum": [
                "LICENSE_TYPES_UNDEFINED",
                "BOTH",
                "CONCURRENT",
                "DOWNLOAD"
              ],
              "type": "string",
              "enumDescriptions": [
                "",
                "Both concurrent and download licenses.",
                "Concurrent access license.",
                "Offline download access license."
              ]
            },
            "cpksver": {
              "description": "The device/version ID from which to request the restrictions.",
              "type": "string",
              "location": "query",
              "required": true
            },
            "locale": {
              "description": "ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.",
              "type": "string",
              "location": "query"
            },
            "volumeId": {
              "description": "The volume to request concurrent/download restrictions for.",
              "type": "string",
              "location": "query",
              "required": true
            }
          },
          "parameterOrder": [
            "cpksver",
            "nonce",
            "source",
            "volumeId"
          ],
          "flatPath": "books/v1/myconfig/requestAccess"
        }
      }
    },
    "bookshelves": {
      "methods": {
        "get": {
          "parameters": {
            "userId": {
              "description": "ID of user for whom to retrieve bookshelves.",
              "type": "string",
              "location": "path",
              "required": true
            },
            "shelf": {
              "description": "ID of bookshelf to retrieve.",
              "type": "string",
              "location": "path",
              "required": true
            },
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            }
          },
          "response": {
            "$ref": "Bookshelf"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "id": "books.bookshelves.get",
          "httpMethod": "GET",
          "description": "Retrieves metadata for a specific bookshelf for the specified user.",
          "path": "books/v1/users/{userId}/bookshelves/{shelf}",
          "flatPath": "books/v1/users/{userId}/bookshelves/{shelf}",
          "parameterOrder": [
            "userId",
            "shelf"
          ]
        },
        "list": {
          "flatPath": "books/v1/users/{userId}/bookshelves",
          "parameterOrder": [
            "userId"
          ],
          "response": {
            "$ref": "Bookshelves"
          },
          "scopes": [
            "https://www.googleapis.com/auth/books"
          ],
          "parameters": {
            "source": {
              "location": "query",
              "description": "String to identify the originator of this request.",
              "type": "string"
            },
            "userId": {
              "location": "path",
              "required": true,
              "description": "ID of user for whom to retrieve bookshelves.",
              "type": "string"
            }
          },
          "path": "books/v1/users/{userId}/bookshelves",
          "id": "books.bookshelves.list",
          "httpMethod": "GET",
          "description": "Retrieves a list of public bookshelves for the specified user."
        }
      },
      "resources": {
        "volumes": {
          "methods": {
            "list": {
              "response": {
                "$ref": "Volumes"
              },
              "scopes": [
                "https://www.googleapis.com/auth/books"
              ],
              "parameters": {
                "shelf": {
                  "description": "ID of bookshelf to retrieve volumes.",
                  "type": "string",
                  "location": "path",
                  "required": true
                },
                "maxResults": {
                  "minimum": "0",
                  "type": "integer",
                  "location": "query",
                  "description": "Maximum number of results to return",
                  "format": "uint32"
                },
                "startIndex": {
                  "type": "integer",
                  "minimum": "0",
                  "description": "Index of the first element to return (starts at 0)",
                  "location": "query",
                  "format": "uint32"
                },
                "showPreorders": {
                  "location": "query",
                  "description": "Set to true to show pre-ordered books. Defaults to false.",
                  "type": "boolean"
                },
                "userId": {
                  "location": "path",
                  "required": true,
                  "description": "ID of user for whom to retrieve bookshelf volumes.",
                  "type": "string"
                },
                "source": {
                  "location": "query",
                  "description": "String to identify the originator of this request.",
                  "type": "string"
                }
              },
              "path": "books/v1/users/{userId}/bookshelves/{shelf}/volumes",
              "description": "Retrieves volumes in a specific bookshelf for the specified user.",
              "id": "books.bookshelves.volumes.list",
              "httpMethod": "GET",
              "flatPath": "books/v1/users/{userId}/bookshelves/{shelf}/volumes",
              "parameterOrder": [
                "userId",
                "shelf"
              ]
            }
          }
        }
      }
    }
  },
  "schemas": {
    "Bookshelf": {
      "id": "Bookshelf",
      "type": "object",
      "properties": {
        "volumeCount": {
          "format": "int32",
          "description": "Number of volumes in this bookshelf.",
          "type": "integer"
        },
        "selfLink": {
          "description": "URL to this resource.",
          "type": "string"
        },
        "updated": {
          "description": "Last modified time of this bookshelf (formatted UTC timestamp with millisecond resolution).",
          "type": "string"
        },
        "access": {
          "description": "Whether this bookshelf is PUBLIC or PRIVATE.",
          "type": "string"
        },
        "created": {
          "description": "Created time for this bookshelf (formatted UTC timestamp with millisecond resolution).",
          "type": "string"
        },
        "kind": {
          "description": "Resource type for bookshelf metadata.",
          "type": "string"
        },
        "title": {
          "description": "Title of this bookshelf.",
          "type": "string"
        },
        "id": {
          "description": "Id of this bookshelf, only unique by user.",
          "type": "integer",
          "format": "int32"
        },
        "description": {
          "description": "Description of this bookshelf.",
          "type": "string"
        },
        "volumesLastUpdated": {
          "description": "Last time a volume was added or removed from this bookshelf (formatted UTC timestamp with millisecond resolution).",
          "type": "string"
        }
      }
    },
    "Seriesmembership": {
      "properties": {
        "nextPageToken": {
          "type": "string"
        },
        "kind": {
          "description": "Resorce type.",
          "type": "string"
        },
        "member": {
          "type": "array",
          "items": {
            "$ref": "Volume"
          }
        }
      },
      "id": "Seriesmembership",
      "type": "object"
    },
    "ConcurrentAccessRestriction": {
      "id": "ConcurrentAccessRestriction",
      "type": "object",
      "properties": {
        "source": {
          "description": "Client app identifier for verification. Download access and client-validation only.",
          "type": "string"
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "timeWindowSeconds": {
          "format": "int32",
          "description": "Time in seconds for license auto-expiration.",
          "type": "integer"
        },
        "maxConcurrentDevices": {
          "description": "The maximum number of concurrent access licenses for this volume.",
          "type": "integer",
          "format": "int32"
        },
        "reasonCode": {
          "description": "Error/warning reason code.",
          "type": "string"
        },
        "nonce": {
          "description": "Client nonce for verification. Download access and client-validation only.",
          "type": "string"
        },
        "signature": {
          "description": "Response signature.",
          "type": "string"
        },
        "deviceAllowed": {
          "description": "Whether access is granted for this (user, device, volume).",
          "type": "boolean"
        },
        "volumeId": {
          "description": "Identifies the volume for which this entry applies.",
          "type": "string"
        },
        "message": {
          "description": "Error/warning message.",
          "type": "string"
        },
        "restricted": {
          "description": "Whether this volume has any concurrent access restrictions.",
          "type": "boolean"
        }
      }
    },
    "Geolayerdata": {
      "type": "object",
      "id": "Geolayerdata",
      "properties": {
        "common": {
          "type": "object",
          "properties": {
            "snippet": {
              "description": "The description for this location.",
              "type": "string"
            },
            "lang": {
              "description": "The language of the information url and description.",
              "type": "string"
            },
            "previewImageUrl": {
              "description": "The URL for the preview image information.",
              "type": "string"
            },
            "title": {
              "description": "The display title and localized canonical name to use when searching for this entity on Google search.",
              "type": "string"
            },
            "snippetUrl": {
              "description": "The URL for information for this location. Ex: wikipedia link.",
              "type": "string"
            }
          }
        },
        "geo": {
          "type": "object",
          "properties": {
            "viewport": {
              "properties": {
                "lo": {
                  "type": "object",
                  "properties": {
                    "longitude": {
                      "type": "number",
                      "format": "double"
                    },
                    "latitude": {
                      "type": "number",
                      "format": "double"
                    }
                  }
                },
                "hi": {
                  "type": "object",
                  "properties": {
                    "longitude": {
                      "type": "number",
                      "format": "double"
                    },
                    "latitude": {
                      "type": "number",
                      "format": "double"
                    }
                  }
                }
              },
              "description": "The viewport for showing this location. This is a latitude, longitude rectangle.",
              "type": "object"
            },
            "boundary": {
              "description": "The boundary of the location as a set of loops containing pairs of latitude, longitude coordinates.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "longitude": {
              "description": "The longitude of the location.",
              "type": "number",
              "format": "double"
            },
            "mapType": {
              "description": "The type of map that should be used for this location. EX: HYBRID, ROADMAP, SATELLITE, TERRAIN",
              "type": "string"
            },
            "cachePolicy": {
              "description": "The cache policy active for this data. EX: UNRESTRICTED, RESTRICTED, NEVER",
              "type": "string"
            },
            "zoom": {
              "format": "int32",
              "description": "The Zoom level to use for the map. Zoom levels between 0 (the lowest zoom level, in which the entire world can be seen on one map) to 21+ (down to individual buildings). See: https: //developers.google.com/maps/documentation/staticmaps/#Zoomlevels",
              "type": "integer"
            },
            "countryCode": {
              "description": "The country code of the location.",
              "type": "string"
            },
            "latitude": {
              "format": "double",
              "description": "The latitude of the location.",
              "type": "number"
            }
          }
        },
        "kind": {
          "type": "string"
        }
      }
    },
    "Volume2": {
      "id": "Volume2",
      "type": "object",
      "properties": {
        "items": {
          "description": "A list of volumes.",
          "type": "array",
          "items": {
            "$ref": "Volume"
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "DownloadAccesses": {
      "properties": {
        "downloadAccessList": {
          "description": "A list of download access responses.",
          "type": "array",
          "items": {
            "$ref": "DownloadAccessRestriction"
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      },
      "id": "DownloadAccesses",
      "type": "object"
    },
    "Metadata": {
      "type": "object",
      "id": "Metadata",
      "properties": {
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "items": {
          "description": "A list of offline dictionary metadata.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "language": {
                "type": "string"
              },
              "download_url": {
                "type": "string"
              },
              "encrypted_key": {
                "type": "string"
              },
              "size": {
                "type": "string",
                "format": "int64"
              },
              "version": {
                "type": "string",
                "format": "int64"
              }
            }
          }
        }
      }
    },
    "DownloadAccessRestriction": {
      "properties": {
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "maxDownloadDevices": {
          "format": "int32",
          "description": "If restricted, the maximum number of content download licenses for this volume.",
          "type": "integer"
        },
        "source": {
          "description": "Client app identifier for verification. Download access and client-validation only.",
          "type": "string"
        },
        "signature": {
          "description": "Response signature.",
          "type": "string"
        },
        "nonce": {
          "description": "Client nonce for verification. Download access and client-validation only.",
          "type": "string"
        },
        "reasonCode": {
          "description": "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",
          "type": "string"
        },
        "volumeId": {
          "description": "Identifies the volume for which this entry applies.",
          "type": "string"
        },
        "downloadsAcquired": {
          "format": "int32",
          "description": "If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).",
          "type": "integer"
        },
        "deviceAllowed": {
          "description": "If restricted, whether access is granted for this (user, device, volume).",
          "type": "boolean"
        },
        "restricted": {
          "description": "Whether this volume has any download access restrictions.",
          "type": "boolean"
        },
        "message": {
          "description": "Error/warning message.",
          "type": "string"
        },
        "justAcquired": {
          "description": "If deviceAllowed, whether access was just acquired with this request.",
          "type": "boolean"
        }
      },
      "type": "object",
      "id": "DownloadAccessRestriction"
    },
    "Offers": {
      "type": "object",
      "id": "Offers",
      "properties": {
        "items": {
          "description": "A list of offers.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "canonicalVolumeLink": {
                      "type": "string"
                    },
                    "coverUrl": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "volumeId": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "author": {
                      "type": "string"
                    }
                  }
                }
              },
              "gservicesKey": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "artUrl": {
                "type": "string"
              }
            }
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      }
    },
    "AnnotationsSummary": {
      "properties": {
        "layers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "allowedCharacterCount": {
                "type": "integer",
                "format": "int32"
              },
              "layerId": {
                "type": "string"
              },
              "remainingCharacterCount": {
                "type": "integer",
                "format": "int32"
              },
              "limitType": {
                "type": "string"
              },
              "updated": {
                "type": "string"
              }
            }
          }
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "id": "AnnotationsSummary"
    },
    "Category": {
      "properties": {
        "items": {
          "description": "A list of onboarding categories.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "categoryId": {
                "type": "string"
              },
              "badgeUrl": {
                "type": "string"
              }
            }
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Category"
    },
    "Volumeseriesinfo": {
      "id": "Volumeseriesinfo",
      "type": "object",
      "properties": {
        "volumeSeries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "orderNumber": {
                "description": "The book order number in the series.",
                "type": "integer",
                "format": "int32"
              },
              "issue": {
                "description": "List of issues. Applicable only for Collection Edition and Omnibus.",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "issueDisplayNumber": {
                      "type": "string"
                    },
                    "issueOrderNumber": {
                      "type": "integer",
                      "format": "int32"
                    }
                  }
                }
              },
              "seriesBookType": {
                "description": "The book type in the context of series. Examples - Single Issue, Collection Edition, etc.",
                "type": "string"
              },
              "seriesId": {
                "description": "The series id.",
                "type": "string"
              }
            }
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "bookDisplayNumber": {
          "description": "The display number string. This should be used only for display purposes and the actual sequence should be inferred from the below orderNumber.",
          "type": "string"
        },
        "shortSeriesBookTitle": {
          "description": "Short book title in the context of the series.",
          "type": "string"
        }
      }
    },
    "Review": {
      "type": "object",
      "id": "Review",
      "properties": {
        "volumeId": {
          "description": "Volume that this review is for.",
          "type": "string"
        },
        "type": {
          "description": "Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.",
          "type": "string"
        },
        "author": {
          "description": "Author of this review.",
          "type": "object",
          "properties": {
            "displayName": {
              "description": "Name of this person.",
              "type": "string"
            }
          }
        },
        "content": {
          "description": "Review text.",
          "type": "string"
        },
        "source": {
          "description": "Information regarding the source of this review, when the review is not from a Google Books user.",
          "type": "object",
          "properties": {
            "description": {
              "description": "Name of the source.",
              "type": "string"
            },
            "url": {
              "description": "URL of the source of the review.",
              "type": "string"
            },
            "extraDescription": {
              "description": "Extra text about the source of the review.",
              "type": "string"
            }
          }
        },
        "kind": {
          "description": "Resource type for a review.",
          "type": "string"
        },
        "title": {
          "description": "Title for this review.",
          "type": "string"
        },
        "rating": {
          "description": "Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.",
          "type": "string"
        },
        "date": {
          "description": "Date of this review.",
          "type": "string"
        },
        "fullTextUrl": {
          "description": "URL for the full review text, for reviews gathered from the web.",
          "type": "string"
        }
      }
    },
    "RequestAccessData": {
      "type": "object",
      "id": "RequestAccessData",
      "properties": {
        "downloadAccess": {
          "$ref": "DownloadAccessRestriction",
          "description": "A download access response."
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "concurrentAccess": {
          "$ref": "ConcurrentAccessRestriction",
          "description": "A concurrent access response."
        }
      }
    },
    "Notification": {
      "properties": {
        "body": {
          "type": "string"
        },
        "timeToExpireMs": {
          "type": "string",
          "format": "int64"
        },
        "notificationGroup": {
          "type": "string"
        },
        "doc_type": {
          "type": "string"
        },
        "is_document_mature": {
          "type": "boolean"
        },
        "show_notification_settings_action": {
          "type": "boolean"
        },
        "pcampaign_id": {
          "type": "string"
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "doc_id": {
          "type": "string"
        },
        "iconUrl": {
          "type": "string"
        },
        "dont_show_notification": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        },
        "crmExperimentIds": {
          "description": "The list of crm experiment ids.",
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        },
        "notification_type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "targetUrl": {
          "type": "string"
        }
      },
      "type": "object",
      "id": "Notification"
    },
    "Layersummary": {
      "properties": {
        "dataCount": {
          "description": "The number of data items for this layer.",
          "type": "integer",
          "format": "int32"
        },
        "kind": {
          "description": "Resource Type",
          "type": "string"
        },
        "volumeAnnotationsVersion": {
          "description": "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.",
          "type": "string"
        },
        "layerId": {
          "description": "The layer id for this summary.",
          "type": "string"
        },
        "annotationsLink": {
          "description": "The link to get the annotations for this layer.",
          "type": "string"
        },
        "annotationTypes": {
          "description": "The list of annotation types contained for this layer.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "volumeId": {
          "description": "The volume id this resource is for.",
          "type": "string"
        },
        "selfLink": {
          "description": "URL to this resource.",
          "type": "string"
        },
        "updated": {
          "description": "Timestamp for the last time an item in this layer was updated. (RFC 3339 UTC date-time format).",
          "type": "string"
        },
        "contentVersion": {
          "description": "The content version this resource is for.",
          "type": "string"
        },
        "annotationCount": {
          "description": "The number of annotations for this layer.",
          "type": "integer",
          "format": "int32"
        },
        "id": {
          "description": "Unique id of this layer summary.",
          "type": "string"
        },
        "annotationsDataLink": {
          "description": "Link to get data for this annotation.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Layersummary"
    },
    "BooksVolumesRecommendedRateResponse": {
      "id": "BooksVolumesRecommendedRateResponse",
      "type": "object",
      "properties": {
        "consistency_token": {
          "type": "string"
        }
      }
    },
    "Volumes": {
      "type": "object",
      "id": "Volumes",
      "properties": {
        "totalItems": {
          "description": "Total number of volumes found. This might be greater than the number of volumes returned in this response if results have been paginated.",
          "type": "integer",
          "format": "int32"
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "items": {
          "description": "A list of volumes.",
          "type": "array",
          "items": {
            "$ref": "Volume"
          }
        }
      }
    },
    "Annotation": {
      "properties": {
        "id": {
          "description": "Id of this annotation, in the form of a GUID.",
          "type": "string"
        },
        "data": {
          "description": "User-created data for this annotation.",
          "type": "string"
        },
        "layerSummary": {
          "type": "object",
          "properties": {
            "allowedCharacterCount": {
              "description": "Maximum allowed characters on this layer, especially for the \"copy\" layer.",
              "type": "integer",
              "format": "int32"
            },
            "limitType": {
              "description": "Type of limitation on this layer. \"limited\" or \"unlimited\" for the \"copy\" layer.",
              "type": "string"
            },
            "remainingCharacterCount": {
              "description": "Remaining allowed characters on this layer, especially for the \"copy\" layer.",
              "type": "integer",
              "format": "int32"
            }
          }
        },
        "afterSelectedText": {
          "description": "Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.",
          "type": "string"
        },
        "beforeSelectedText": {
          "description": "Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.",
          "type": "string"
        },
        "currentVersionRanges": {
          "properties": {
            "gbImageRange": {
              "$ref": "BooksAnnotationsRange",
              "description": "Range in GB image format for this annotation for version above."
            },
            "gbTextRange": {
              "description": "Range in GB text format for this annotation for version above.",
              "$ref": "BooksAnnotationsRange"
            },
            "cfiRange": {
              "$ref": "BooksAnnotationsRange",
              "description": "Range in CFI format for this annotation for version above."
            },
            "imageCfiRange": {
              "description": "Range in image CFI format for this annotation for version above.",
              "$ref": "BooksAnnotationsRange"
            },
            "contentVersion": {
              "description": "Content version applicable to ranges below.",
              "type": "string"
            }
          },
          "description": "Selection ranges for the most recent content version.",
          "type": "object"
        },
        "selfLink": {
          "description": "URL to this resource.",
          "type": "string"
        },
        "updated": {
          "description": "Timestamp for the last time this annotation was modified.",
          "type": "string"
        },
        "created": {
          "description": "Timestamp for the created time of this annotation.",
          "type": "string"
        },
        "pageIds": {
          "description": "Pages that this annotation spans.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "volumeId": {
          "description": "The volume that this annotation belongs to.",
          "type": "string"
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "layerId": {
          "description": "The layer this annotation is for.",
          "type": "string"
        },
        "clientVersionRanges": {
          "properties": {
            "cfiRange": {
              "$ref": "BooksAnnotationsRange",
              "description": "Range in CFI format for this annotation sent by client."
            },
            "imageCfiRange": {
              "description": "Range in image CFI format for this annotation sent by client.",
              "$ref": "BooksAnnotationsRange"
            },
            "contentVersion": {
              "description": "Content version the client sent in.",
              "type": "string"
            },
            "gbImageRange": {
              "$ref": "BooksAnnotationsRange",
              "description": "Range in GB image format for this annotation sent by client."
            },
            "gbTextRange": {
              "$ref": "BooksAnnotationsRange",
              "description": "Range in GB text format for this annotation sent by client."
            }
          },
          "description": "Selection ranges sent from the client.",
          "type": "object"
        },
        "highlightStyle": {
          "description": "The highlight style for this annotation.",
          "type": "string"
        },
        "selectedText": {
          "description": "Excerpt from the volume.",
          "type": "string"
        },
        "deleted": {
          "description": "Indicates that this annotation is deleted.",
          "type": "boolean"
        }
      },
      "type": "object",
      "id": "Annotation"
    },
    "DictionaryAnnotationdata": {
      "type": "object",
      "id": "DictionaryAnnotationdata",
      "properties": {
        "kind": {
          "description": "Resource Type",
          "type": "string"
        },
        "layerId": {
          "description": "The Layer id for this data. *",
          "type": "string"
        },
        "id": {
          "description": "Unique id for this annotation data.",
          "type": "string"
        },
        "annotationType": {
          "description": "The type of annotation this data is for.",
          "type": "string"
        },
        "data": {
          "$ref": "Dictlayerdata",
          "description": "JSON encoded data for this dictionary annotation data. Emitted with name 'data' in JSON output. Either this or geo_data will be populated."
        },
        "encodedData": {
          "format": "byte",
          "description": "Base64 encoded data for this annotation data.",
          "type": "string"
        },
        "volumeId": {
          "description": "The volume id for this data. *",
          "type": "string"
        },
        "updated": {
          "description": "Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).",
          "type": "string"
        },
        "selfLink": {
          "description": "URL for this resource. *",
          "type": "string"
        }
      }
    },
    "Volumeannotation": {
      "id": "Volumeannotation",
      "type": "object",
      "properties": {
        "selfLink": {
          "description": "URL to this resource.",
          "type": "string"
        },
        "updated": {
          "description": "Timestamp for the last time this anntoation was updated. (RFC 3339 UTC date-time format).",
          "type": "string"
        },
        "pageIds": {
          "description": "Pages the annotation spans.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "volumeId": {
          "description": "The Volume this annotation is for.",
          "type": "string"
        },
        "id": {
          "description": "Unique id of this volume annotation.",
          "type": "string"
        },
        "annotationDataId": {
          "description": "The annotation data id for this volume annotation.",
          "type": "string"
        },
        "data": {
          "description": "Data for this annotation.",
          "type": "string"
        },
        "contentRanges": {
          "properties": {
            "gbImageRange": {
              "description": "Range in GB image format for this annotation for version above.",
              "$ref": "BooksAnnotationsRange"
            },
            "cfiRange": {
              "description": "Range in CFI format for this annotation for version above.",
              "$ref": "BooksAnnotationsRange"
            },
            "contentVersion": {
              "description": "Content version applicable to ranges below.",
              "type": "string"
            },
            "gbTextRange": {
              "description": "Range in GB text format for this annotation for version above.",
              "$ref": "BooksAnnotationsRange"
            }
          },
          "description": "The content ranges to identify the selected text.",
          "type": "object"
        },
        "selectedText": {
          "description": "Excerpt from the volume.",
          "type": "string"
        },
        "deleted": {
          "description": "Indicates that this annotation is deleted.",
          "type": "boolean"
        },
        "annotationDataLink": {
          "description": "Link to get data for this annotation.",
          "type": "string"
        },
        "annotationType": {
          "description": "The type of annotation this is.",
          "type": "string"
        },
        "kind": {
          "description": "Resource Type",
          "type": "string"
        },
        "layerId": {
          "description": "The Layer this annotation is for.",
          "type": "string"
        }
      }
    },
    "BooksAnnotationsRange": {
      "properties": {
        "startOffset": {
          "description": "The offset from the starting position.",
          "type": "string"
        },
        "endOffset": {
          "description": "The offset from the ending position.",
          "type": "string"
        },
        "startPosition": {
          "description": "The starting position for the range.",
          "type": "string"
        },
        "endPosition": {
          "description": "The ending position for the range.",
          "type": "string"
        }
      },
      "id": "BooksAnnotationsRange",
      "type": "object"
    },
    "Volumeannotations": {
      "id": "Volumeannotations",
      "type": "object",
      "properties": {
        "totalItems": {
          "description": "The total number of volume annotations found.",
          "type": "integer",
          "format": "int32"
        },
        "kind": {
          "description": "Resource type",
          "type": "string"
        },
        "version": {
          "description": "The version string for all of the volume annotations in this layer (not just the ones in this response). Note: the version string doesn't apply to the annotation data, just the information in this response (e.g. the location of annotations in the book).",
          "type": "string"
        },
        "nextPageToken": {
          "description": "Token to pass in for pagination for the next page. This will not be present if this request does not have more results.",
          "type": "string"
        },
        "items": {
          "description": "A list of volume annotations.",
          "type": "array",
          "items": {
            "$ref": "Volumeannotation"
          }
        }
      }
    },
    "Volume": {
      "type": "object",
      "id": "Volume",
      "properties": {
        "searchInfo": {
          "properties": {
            "textSnippet": {
              "description": "A text snippet containing the search query.",
              "type": "string"
            }
          },
          "description": "Search result information related to this volume.",
          "type": "object"
        },
        "layerInfo": {
          "description": "What layers exist in this volume and high level information about them.",
          "type": "object",
          "properties": {
            "layers": {
              "description": "A layer should appear here if and only if the layer exists for this book.",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "layerId": {
                    "description": "The layer id of this layer (e.g. \"geo\").",
                    "type": "string"
                  },
                  "volumeAnnotationsVersion": {
                    "description": "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.",
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "etag": {
          "description": "Opaque identifier for a specific version of a volume resource. (In LITE projection)",
          "type": "string"
        },
        "recommendedInfo": {
          "description": "Recommendation related information for this volume.",
          "type": "object",
          "properties": {
            "explanation": {
              "description": "A text explaining why this volume is recommended.",
              "type": "string"
            }
          }
        },
        "kind": {
          "description": "Resource type for a volume. (In LITE projection.)",
          "type": "string"
        },
        "saleInfo": {
          "properties": {
            "onSaleDate": {
              "description": "The date on which this book is available for sale.",
              "type": "string"
            },
            "country": {
              "description": "The two-letter ISO_3166-1 country code for which this sale information is valid. (In LITE projection.)",
              "type": "string"
            },
            "saleability": {
              "description": "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.",
              "type": "string"
            },
            "retailPrice": {
              "description": "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.)",
              "type": "object",
              "properties": {
                "amount": {
                  "format": "double",
                  "description": "Amount in the currency listed below. (In LITE projection.)",
                  "type": "number"
                },
                "currencyCode": {
                  "description": "An ISO 4217, three-letter currency code. (In LITE projection.)",
                  "type": "string"
                }
              }
            },
            "isEbook": {
              "description": "Whether or not this volume is an eBook (can be added to the My eBooks shelf).",
              "type": "boolean"
            },
            "listPrice": {
              "description": "Suggested retail price. (In LITE projection.)",
              "type": "object",
              "properties": {
                "amount": {
                  "format": "double",
                  "description": "Amount in the currency listed below. (In LITE projection.)",
                  "type": "number"
                },
                "currencyCode": {
                  "description": "An ISO 4217, three-letter currency code. (In LITE projection.)",
                  "type": "string"
                }
              }
            },
            "buyLink": {
              "description": "URL to purchase this volume on the Google Books site. (In LITE projection)",
              "type": "string"
            },
            "offers": {
              "description": "Offers available for this volume (sales and rentals).",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "giftable": {
                    "description": "Indicates whether the offer is giftable.",
                    "type": "boolean"
                  },
                  "retailPrice": {
                    "properties": {
                      "currencyCode": {
                        "type": "string"
                      },
                      "amountInMicros": {
                        "type": "number",
                        "format": "double"
                      }
                    },
                    "description": "Offer retail (=discounted) price in Micros",
                    "type": "object"
                  },
                  "rentalDuration": {
                    "properties": {
                      "unit": {
                        "type": "string"
                      },
                      "count": {
                        "type": "number",
                        "format": "double"
                      }
                    },
                    "description": "The rental duration (for rental offers only).",
                    "type": "object"
                  },
                  "listPrice": {
                    "properties": {
                      "amountInMicros": {
                        "type": "number",
                        "format": "double"
                      },
                      "currencyCode": {
                        "type": "string"
                      }
                    },
                    "description": "Offer list (=undiscounted) price in Micros.",
                    "type": "object"
                  },
                  "finskyOfferType": {
                    "format": "int32",
                    "description": "The finsky offer type (e.g., PURCHASE=0 RENTAL=3)",
                    "type": "integer"
                  }
                }
              }
            }
          },
          "description": "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).",
          "type": "object"
        },
        "id": {
          "description": "Unique identifier for a volume. (In LITE projection.)",
          "type": "string"
        },
        "volumeInfo": {
          "properties": {
            "authors": {
              "description": "The names of the authors and/or editors for this volume. (In LITE projection)",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "printedPageCount": {
              "description": "Total number of printed pages in generated pdf representation.",
              "type": "integer",
              "format": "int32"
            },
            "samplePageCount": {
              "description": "Total number of sample pages as per publisher metadata.",
              "type": "integer",
              "format": "int32"
            },
            "publisher": {
              "description": "Publisher of this volume. (In LITE projection.)",
              "type": "string"
            },
            "allowAnonLogging": {
              "description": "Whether anonymous logging should be allowed.",
              "type": "boolean"
            },
            "title": {
              "description": "Volume title. (In LITE projection.)",
              "type": "string"
            },
            "language": {
              "description": "Best language for this volume (based on content). It is the two-letter ISO 639-1 code such as 'fr', 'en', etc.",
              "type": "string"
            },
            "contentVersion": {
              "description": "An identifier for the version of the volume content (text & images). (In LITE projection)",
              "type": "string"
            },
            "dimensions": {
              "properties": {
                "width": {
                  "description": "Width of this volume (in cm).",
                  "type": "string"
                },
                "thickness": {
                  "description": "Thickness of this volume (in cm).",
                  "type": "string"
                },
                "height": {
                  "description": "Height or length of this volume (in cm).",
                  "type": "string"
                }
              },
              "description": "Physical dimensions of this volume.",
              "type": "object"
            },
            "printType": {
              "description": "Type of publication of this volume. Possible values are BOOK or MAGAZINE.",
              "type": "string"
            },
            "description": {
              "description": "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.)",
              "type": "string"
            },
            "maturityRating": {
              "type": "string"
            },
            "publishedDate": {
              "description": "Date of publication. (In LITE projection.)",
              "type": "string"
            },
            "industryIdentifiers": {
              "description": "Industry standard identifiers for this volume.",
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "identifier": {
                    "description": "Industry specific volume identifier.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.",
                    "type": "string"
                  }
                }
              }
            },
            "averageRating": {
              "description": "The mean review rating for this volume. (min = 1.0, max = 5.0)",
              "type": "number",
              "format": "double"
            },
            "panelizationSummary": {
              "description": "A top-level summary of the panelization info in this volume.",
              "type": "object",
              "properties": {
                "containsEpubBubbles": {
                  "type": "boolean"
                },
                "imageBubbleVersion": {
                  "type": "string"
                },
                "containsImageBubbles": {
                  "type": "boolean"
                },
                "epubBubbleVersion": {
                  "type": "string"
                }
              }
            },
            "subtitle": {
              "description": "Volume subtitle. (In LITE projection.)",
              "type": "string"
            },
            "mainCategory": {
              "description": "The main category to which this volume belongs. It will be the category from the categories list returned below that has the highest weight.",
              "type": "string"
            },
            "categories": {
              "description": "A list of subject categories, such as \"Fiction\", \"Suspense\", etc.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "ratingsCount": {
              "format": "int32",
              "description": "The number of review ratings for this volume.",
              "type": "integer"
            },
            "readingModes": {
              "description": "The reading modes available for this volume.",
              "type": "object",
              "properties": {
                "text": {
                  "type": "boolean"
                },
                "image": {
                  "type": "boolean"
                }
              }
            },
            "comicsContent": {
              "description": "Whether the volume has comics content.",
              "type": "boolean"
            },
            "canonicalVolumeLink": {
              "description": "Canonical URL for a volume. (In LITE projection.)",
              "type": "string"
            },
            "seriesInfo": {
              "$ref": "Volumeseriesinfo"
            },
            "pageCount": {
              "description": "Total number of pages as per publisher metadata.",
              "type": "integer",
              "format": "int32"
            },
            "previewLink": {
              "description": "URL to preview this volume on the Google Books site.",
              "type": "string"
            },
            "imageLinks": {
              "properties": {
                "thumbnail": {
                  "description": "Image link for thumbnail size (width of ~128 pixels). (In LITE projection)",
                  "type": "string"
                },
                "small": {
                  "description": "Image link for small size (width of ~300 pixels). (In LITE projection)",
                  "type": "string"
                },
                "smallThumbnail": {
                  "description": "Image link for small thumbnail size (width of ~80 pixels). (In LITE projection)",
                  "type": "string"
                },
                "extraLarge": {
                  "description": "Image link for extra large size (width of ~1280 pixels). (In LITE projection)",
                  "type": "string"
                },
                "large": {
                  "description": "Image link for large size (width of ~800 pixels). (In LITE projection)",
                  "type": "string"
                },
                "medium": {
                  "description": "Image link for medium size (width of ~575 pixels). (In LITE projection)",
                  "type": "string"
                }
              },
              "description": "A list of image links for all the sizes that are available. (In LITE projection.)",
              "type": "object"
            },
            "infoLink": {
              "description": "URL to view information about this volume on the Google Books site. (In LITE projection)",
              "type": "string"
            }
          },
          "description": "General volume information.",
          "type": "object"
        },
        "accessInfo": {
          "description": "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.).",
          "type": "object",
          "properties": {
            "accessViewStatus": {
              "description": "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.)",
              "type": "string"
            },
            "webReaderLink": {
              "description": "URL to read this volume on the Google Books site. Link will not allow users to read non-viewable volumes.",
              "type": "string"
            },
            "downloadAccess": {
              "description": "Information about a volume's download license access restrictions.",
              "$ref": "DownloadAccessRestriction"
            },
            "epub": {
              "properties": {
                "acsTokenLink": {
                  "description": "URL to retrieve ACS token for epub download. (In LITE projection.)",
                  "type": "string"
                },
                "downloadLink": {
                  "description": "URL to download epub. (In LITE projection.)",
                  "type": "string"
                },
                "isAvailable": {
                  "description": "Is a flowing text epub available either as public domain or for purchase. (In LITE projection.)",
                  "type": "boolean"
                }
              },
              "description": "Information about epub content. (In LITE projection.)",
              "type": "object"
            },
            "viewability": {
              "description": "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.",
              "type": "string"
            },
            "textToSpeechPermission": {
              "description": "Whether text-to-speech is permitted for this volume. Values can be ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.",
              "type": "string"
            },
            "explicitOfflineLicenseManagement": {
              "description": "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.",
              "type": "boolean"
            },
            "driveImportedContentLink": {
              "description": "URL to the Google Drive viewer if this volume is uploaded by the user by selecting the file from Google Drive.",
              "type": "string"
            },
            "country": {
              "description": "The two-letter ISO_3166-1 country code for which this access information is valid. (In LITE projection.)",
              "type": "string"
            },
            "viewOrderUrl": {
              "description": "For ordered but not yet processed orders, we give a URL that can be used to go to the appropriate Google Wallet page.",
              "type": "string"
            },
            "quoteSharingAllowed": {
              "description": "Whether quote sharing is allowed for this volume.",
              "type": "boolean"
            },
            "pdf": {
              "properties": {
                "acsTokenLink": {
                  "description": "URL to retrieve ACS token for pdf download. (In LITE projection.)",
                  "type": "string"
                },
                "downloadLink": {
                  "description": "URL to download pdf. (In LITE projection.)",
                  "type": "string"
                },
                "isAvailable": {
                  "description": "Is a scanned image pdf available either as public domain or for purchase. (In LITE projection.)",
                  "type": "boolean"
                }
              },
              "description": "Information about pdf content. (In LITE projection.)",
              "type": "object"
            },
            "embeddable": {
              "description": "Whether this volume can be embedded in a viewport using the Embedded Viewer API.",
              "type": "boolean"
            },
            "publicDomain": {
              "description": "Whether or not this book is public domain in the country listed above.",
              "type": "boolean"
            }
          }
        },
        "selfLink": {
          "description": "URL to this resource. (In LITE projection.)",
          "type": "string"
        },
        "userInfo": {
          "description": "User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)",
          "type": "object",
          "properties": {
            "acquiredTime": {
              "description": "Timestamp when this volume was acquired by the user. (RFC 3339 UTC date-time format) Acquiring includes purchase, user upload, receiving family sharing, etc.",
              "type": "string"
            },
            "isFamilySharingAllowed": {
              "description": "Deprecated: Replaced by familySharing.",
              "type": "boolean"
            },
            "isPurchased": {
              "description": "Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)",
              "type": "boolean"
            },
            "familySharing": {
              "properties": {
                "isSharingAllowed": {
                  "description": "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.",
                  "type": "boolean"
                },
                "familyRole": {
                  "description": "The role of the user in the family.",
                  "type": "string"
                },
                "isSharingDisabledByFop": {
                  "description": "Whether or not sharing this volume is temporarily disabled due to issues with the Family Wallet.",
                  "type": "boolean"
                }
              },
              "description": "Information on the ability to share with the family.",
              "type": "object"
            },
            "isFamilySharedFromUser": {
              "description": "Whether or not the user shared this volume with the family.",
              "type": "boolean"
            },
            "isPreordered": {
              "description": "Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)",
              "type": "boolean"
            },
            "copy": {
              "properties": {
                "limitType": {
                  "type": "string"
                },
                "allowedCharacterCount": {
                  "type": "integer",
                  "format": "int32"
                },
                "remainingCharacterCount": {
                  "type": "integer",
                  "format": "int32"
                },
                "updated": {
                  "type": "string"
                }
              },
              "description": "Copy/Paste accounting information.",
              "type": "object"
            },
            "userUploadedVolumeInfo": {
              "type": "object",
              "properties": {
                "processingState": {
                  "type": "string"
                }
              }
            },
            "rentalPeriod": {
              "properties": {
                "startUtcSec": {
                  "type": "string",
                  "format": "int64"
                },
                "endUtcSec": {
                  "type": "string",
                  "format": "int64"
                }
              },
              "description": "Period during this book is/was a valid rental.",
              "type": "object"
            },
            "rentalState": {
              "description": "Whether this book is an active or an expired rental.",
              "type": "string"
            },
            "review": {
              "description": "This user's review of this volume, if one exists.",
              "$ref": "Review"
            },
            "isFamilySharedToUser": {
              "description": "Whether or not the user received this volume through family sharing.",
              "type": "boolean"
            },
            "entitlementType": {
              "format": "int32",
              "description": "Whether this volume is purchased, sample, pd download etc.",
              "type": "integer"
            },
            "isFamilySharingDisabledByFop": {
              "description": "Deprecated: Replaced by familySharing.",
              "type": "boolean"
            },
            "updated": {
              "description": "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).",
              "type": "string"
            },
            "acquisitionType": {
              "description": "How this volume was acquired.",
              "type": "integer",
              "format": "int32"
            },
            "readingPosition": {
              "description": "The user's current reading position in the volume, if one is available. (In LITE projection.)",
              "$ref": "ReadingPosition"
            },
            "isInMyBooks": {
              "description": "Whether or not this volume is currently in \"my books.\"",
              "type": "boolean"
            },
            "isUploaded": {
              "description": "Whether or not this volume was user uploaded.",
              "type": "boolean"
            }
          }
        }
      }
    },
    "Usersettings": {
      "properties": {
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "notification": {
          "type": "object",
          "properties": {
            "matchMyInterests": {
              "type": "object",
              "properties": {
                "opted_state": {
                  "type": "string"
                }
              }
            },
            "priceDrop": {
              "type": "object",
              "properties": {
                "opted_state": {
                  "type": "string"
                }
              }
            },
            "moreFromSeries": {
              "type": "object",
              "properties": {
                "opted_state": {
                  "type": "string"
                }
              }
            },
            "rewardExpirations": {
              "type": "object",
              "properties": {
                "opted_state": {
                  "type": "string"
                }
              }
            },
            "moreFromAuthors": {
              "type": "object",
              "properties": {
                "opted_state": {
                  "type": "string"
                }
              }
            }
          }
        },
        "notesExport": {
          "description": "User settings in sub-objects, each for different purposes.",
          "type": "object",
          "properties": {
            "isEnabled": {
              "type": "boolean"
            },
            "folderName": {
              "type": "string"
            }
          }
        }
      },
      "id": "Usersettings",
      "type": "object"
    },
    "BooksCloudloadingResource": {
      "id": "BooksCloudloadingResource",
      "type": "object",
      "properties": {
        "processingState": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "author": {
          "type": "string"
        },
        "volumeId": {
          "type": "string"
        }
      }
    },
    "Dictlayerdata": {
      "properties": {
        "common": {
          "type": "object",
          "properties": {
            "title": {
              "description": "The display title and localized canonical name to use when searching for this entity on Google search.",
              "type": "string"
            }
          }
        },
        "kind": {
          "type": "string"
        },
        "dict": {
          "type": "object",
          "properties": {
            "words": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "senses": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "definitions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "definition": {
                                "type": "string"
                              },
                              "examples": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "text": {
                                      "type": "string"
                                    },
                                    "source": {
                                      "type": "object",
                                      "properties": {
                                        "url": {
                                          "type": "string"
                                        },
                                        "attribution": {
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "synonyms": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "text": {
                                "type": "string"
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "url": {
                                    "type": "string"
                                  },
                                  "attribution": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "conjugations": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "partOfSpeech": {
                          "type": "string"
                        },
                        "syllabification": {
                          "type": "string"
                        },
                        "pronunciationUrl": {
                          "type": "string"
                        },
                        "pronunciation": {
                          "type": "string"
                        },
                        "source": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string"
                            },
                            "attribution": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  },
                  "derivatives": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "source": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string"
                            },
                            "attribution": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  },
                  "source": {
                    "description": "The words with different meanings but not related words, e.g. \"go\" (game) and \"go\" (verb).",
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string"
                      },
                      "attribution": {
                        "type": "string"
                      }
                    }
                  },
                  "examples": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "source": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string"
                            },
                            "attribution": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "source": {
              "description": "The source, url and attribution for this dictionary data.",
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "attribution": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "id": "Dictlayerdata",
      "type": "object"
    },
    "Bookshelves": {
      "id": "Bookshelves",
      "type": "object",
      "properties": {
        "items": {
          "description": "A list of bookshelves.",
          "type": "array",
          "items": {
            "$ref": "Bookshelf"
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      }
    },
    "Series": {
      "type": "object",
      "id": "Series",
      "properties": {
        "series": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "seriesId": {
                "type": "string"
              },
              "subscriptionId": {
                "type": "string"
              },
              "seriesSubscriptionReleaseInfo": {
                "type": "object",
                "properties": {
                  "nextReleaseInfo": {
                    "type": "object",
                    "properties": {
                      "releaseNumber": {
                        "type": "string"
                      },
                      "currencyCode": {
                        "type": "string"
                      },
                      "releaseTime": {
                        "type": "string"
                      },
                      "amountInMicros": {
                        "type": "number",
                        "format": "double"
                      }
                    }
                  },
                  "cancelTime": {
                    "type": "string"
                  },
                  "currentReleaseInfo": {
                    "type": "object",
                    "properties": {
                      "releaseTime": {
                        "type": "string"
                      },
                      "amountInMicros": {
                        "type": "number",
                        "format": "double"
                      },
                      "releaseNumber": {
                        "type": "string"
                      },
                      "currencyCode": {
                        "type": "string"
                      }
                    }
                  },
                  "seriesSubscriptionType": {
                    "type": "string"
                  }
                }
              },
              "eligibleForSubscription": {
                "type": "boolean"
              },
              "bannerImageUrl": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "seriesType": {
                "type": "string"
              },
              "isComplete": {
                "type": "boolean"
              },
              "seriesFormatType": {
                "type": "string"
              },
              "imageUrl": {
                "type": "string"
              }
            }
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      }
    },
    "FamilyInfo": {
      "type": "object",
      "id": "FamilyInfo",
      "properties": {
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "membership": {
          "description": "Family membership info of the user that made the request.",
          "type": "object",
          "properties": {
            "ageGroup": {
              "description": "The age group of the user.",
              "type": "string"
            },
            "allowedMaturityRating": {
              "description": "The maximum allowed maturity rating for the user.",
              "type": "string"
            },
            "isInFamily": {
              "type": "boolean"
            },
            "role": {
              "description": "The role of the user in the family.",
              "type": "string"
            },
            "acquirePermission": {
              "description": "Restrictions on user buying and acquiring content.",
              "type": "string"
            }
          }
        }
      }
    },
    "Empty": {
      "properties": {},
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "id": "Empty"
    },
    "Discoveryclusters": {
      "type": "object",
      "id": "Discoveryclusters",
      "properties": {
        "totalClusters": {
          "type": "integer",
          "format": "int32"
        },
        "kind": {
          "description": "Resorce type.",
          "type": "string"
        },
        "clusters": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "banner_with_content_container": {
                "type": "object",
                "properties": {
                  "moreButtonText": {
                    "type": "string"
                  },
                  "maskColorArgb": {
                    "type": "string"
                  },
                  "textColorArgb": {
                    "type": "string"
                  },
                  "moreButtonUrl": {
                    "type": "string"
                  },
                  "fillColorArgb": {
                    "type": "string"
                  },
                  "imageUrl": {
                    "type": "string"
                  }
                }
              },
              "volumes": {
                "type": "array",
                "items": {
                  "$ref": "Volume"
                }
              },
              "title": {
                "type": "string"
              },
              "totalVolumes": {
                "type": "integer",
                "format": "int32"
              },
              "uid": {
                "type": "string"
              },
              "subTitle": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "GeoAnnotationdata": {
      "id": "GeoAnnotationdata",
      "type": "object",
      "properties": {
        "volumeId": {
          "description": "The volume id for this data. *",
          "type": "string"
        },
        "encodedData": {
          "description": "Base64 encoded data for this annotation data.",
          "type": "string",
          "format": "byte"
        },
        "selfLink": {
          "description": "URL for this resource. *",
          "type": "string"
        },
        "updated": {
          "description": "Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).",
          "type": "string"
        },
        "kind": {
          "description": "Resource Type",
          "type": "string"
        },
        "layerId": {
          "description": "The Layer id for this data. *",
          "type": "string"
        },
        "id": {
          "description": "Unique id for this annotation data.",
          "type": "string"
        },
        "data": {
          "description": "JSON encoded data for this geo annotation data. Emitted with name 'data' in JSON output. Either this or dict_data will be populated.",
          "$ref": "Geolayerdata"
        },
        "annotationType": {
          "description": "The type of annotation this data is for.",
          "type": "string"
        }
      }
    },
    "Annotations": {
      "properties": {
        "items": {
          "description": "A list of annotations.",
          "type": "array",
          "items": {
            "$ref": "Annotation"
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        },
        "totalItems": {
          "description": "Total number of annotations found. This may be greater than the number of notes returned in this response if results have been paginated.",
          "type": "integer",
          "format": "int32"
        },
        "nextPageToken": {
          "description": "Token to pass in for pagination for the next page. This will not be present if this request does not have more results.",
          "type": "string"
        }
      },
      "type": "object",
      "id": "Annotations"
    },
    "Layersummaries": {
      "properties": {
        "totalItems": {
          "format": "int32",
          "description": "The total number of layer summaries found.",
          "type": "integer"
        },
        "items": {
          "description": "A list of layer summary items.",
          "type": "array",
          "items": {
            "$ref": "Layersummary"
          }
        },
        "kind": {
          "description": "Resource type.",
          "type": "string"
        }
      },
      "id": "Layersummaries",
      "type": "object"
    },
    "Annotationsdata": {
      "type": "object",
      "id": "Annotationsdata",
      "properties": {
        "items": {
          "description": "A list of Annotation Data.",
          "type": "array",
          "items": {
            "$ref": "GeoAnnotationdata"
          }
        },
        "kind": {
          "description": "Resource type",
          "type": "string"
        },
        "totalItems": {
          "format": "int32",
          "description": "The total number of volume annotations found.",
          "type": "integer"
        },
        "nextPageToken": {
          "description": "Token to pass in for pagination for the next page. This will not be present if this request does not have more results.",
          "type": "string"
        }
      }
    },
    "ReadingPosition": {
      "properties": {
        "updated": {
          "description": "Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).",
          "type": "string"
        },
        "gbTextPosition": {
          "description": "Position in a volume for text-based content.",
          "type": "string"
        },
        "gbImagePosition": {
          "description": "Position in a volume for image-based content.",
          "type": "string"
        },
        "epubCfiPosition": {
          "description": "Position in an EPUB as a CFI.",
          "type": "string"
        },
        "kind": {
          "description": "Resource type for a reading position.",
          "type": "string"
        },
        "pdfPosition": {
          "description": "Position in a PDF file.",
          "type": "string"
        },
        "volumeId": {
          "description": "Volume id associated with this reading position.",
          "type": "string"
        }
      },
      "id": "ReadingPosition",
      "type": "object"
    }
  },
  "discoveryVersion": "v1",
  "mtlsRootUrl": "https://books.mtls.googleapis.com/",
  "id": "books:v1",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "ownerDomain": "google.com",
  "parameters": {
    "oauth_token": {
      "location": "query",
      "type": "string",
      "description": "OAuth 2.0 token for the current user."
    },
    "$.xgafv": {
      "type": "string",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "description": "V1 error format.",
      "location": "query",
      "enum": [
        "1",
        "2"
      ]
    },
    "upload_protocol": {
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query"
    },
    "key": {
      "location": "query",
      "type": "string",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "callback": {
      "type": "string",
      "description": "JSONP",
      "location": "query"
    },
    "prettyPrint": {
      "default": "true",
      "location": "query",
      "type": "boolean",
      "description": "Returns response with indentations and line breaks."
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response."
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "alt": {
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "description": "Data format for response.",
      "default": "json",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string"
    }
  },
  "kind": "discovery#restDescription",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/books": {
          "description": "Manage your books"
        }
      }
    }
  },
  "documentationLink": "https://code.google.com/apis/books/docs/v1/getting_started.html",
  "baseUrl": "https://books.googleapis.com/",
  "fullyEncodeReservedExpansion": true,
  "revision": "20260813",
  "version": "v1",
  "version_module": true,
  "rootUrl": "https://books.googleapis.com/",
  "title": "Books API",
  "basePath": "",
  "description": "The Google Books API allows clients to access the Google Books repository.",
  "batchPath": "batch",
  "servicePath": "",
  "protocol": "rest",
  "name": "books"
}
