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