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