npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@maxim_mazurok/gapi.client.books-v1

v0.1.20251209

Published

TypeScript typings for Books API v1

Readme

TypeScript typings for Books API v1

The Google Books API allows clients to access the Google Books repository. For detailed description please check documentation.

Installing

Install typings for Books API:

npm install @types/gapi.client.books-v1 --save-dev

Usage

You need to initialize Google API client in your code:

gapi.load('client', () => {
  // now we can use gapi.client
  // ...
});

Then load api client wrapper:

gapi.client.load(
  'https://books.googleapis.com/$discovery/rest?version=v1',
  () => {
    // now we can use:
    // gapi.client.books
  },
);
// Deprecated, use discovery document URL, see https://github.com/google/google-api-javascript-client/blob/master/docs/reference.md#----gapiclientloadname----version----callback--
gapi.client.load('books', 'v1', () => {
  // now we can use:
  // gapi.client.books
});

Don't forget to authenticate your client before sending any request to resources:

// declare client_id registered in Google Developers Console
var client_id = '',
  scope = [
    // Manage your books
    'https://www.googleapis.com/auth/books',
  ],
  immediate = true;
// ...

gapi.auth.authorize(
  {client_id: client_id, scope: scope, immediate: immediate},
  authResult => {
    if (authResult && !authResult.error) {
      /* handle successful authorization */
    } else {
      /* handle authorization error */
    }
  },
);

After that you can use Books API resources:

/*
Retrieves metadata for a specific bookshelf for the specified user.
*/
await gapi.client.books.bookshelves.get({shelf: 'shelf', userId: 'userId'});

/*
Retrieves a list of public bookshelves for the specified user.
*/
await gapi.client.books.bookshelves.list({userId: 'userId'});

/*
Add a user-upload volume and triggers processing.
*/
await gapi.client.books.cloudloading.addBook({});

/*
Remove the book and its contents
*/
await gapi.client.books.cloudloading.deleteBook({volumeId: 'volumeId'});

/*
Updates a user-upload volume.
*/
await gapi.client.books.cloudloading.updateBook({});

/*
Returns a list of offline dictionary metadata available
*/
await gapi.client.books.dictionary.listOfflineMetadata({cpksver: 'cpksver'});

/*
Gets information regarding the family that the user is part of.
*/
await gapi.client.books.familysharing.getFamilyInfo({});

/*
Initiates sharing of the content with the user's family. Empty response indicates success.
*/
await gapi.client.books.familysharing.share({});

/*
Initiates revoking content that has already been shared with the user's family. Empty response indicates success.
*/
await gapi.client.books.familysharing.unshare({});

/*
Gets the layer summary for a volume.
*/
await gapi.client.books.layers.get({
  summaryId: 'summaryId',
  volumeId: 'volumeId',
});

/*
List the layer summaries for a volume.
*/
await gapi.client.books.layers.list({volumeId: 'volumeId'});

/*
Gets the current settings for the user.
*/
await gapi.client.books.myconfig.getUserSettings({});

/*
Release downloaded content access restriction.
*/
await gapi.client.books.myconfig.releaseDownloadAccess({
  cpksver: 'cpksver',
  volumeIds: 'volumeIds',
});

/*
Request concurrent and download access restrictions.
*/
await gapi.client.books.myconfig.requestAccess({
  cpksver: 'cpksver',
  nonce: 'nonce',
  source: 'source',
  volumeId: 'volumeId',
});

/*
Request downloaded content access for specified volumes on the My eBooks shelf.
*/
await gapi.client.books.myconfig.syncVolumeLicenses({
  cpksver: 'cpksver',
  nonce: 'nonce',
  source: 'source',
});

/*
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.
*/
await gapi.client.books.myconfig.updateUserSettings({});

/*
Returns notification details for a given notification id.
*/
await gapi.client.books.notification.get({notification_id: 'notification_id'});

/*
List categories for onboarding experience.
*/
await gapi.client.books.onboarding.listCategories({});

/*
List available volumes under categories for onboarding experience.
*/
await gapi.client.books.onboarding.listCategoryVolumes({});

/*
Returns a stream of personalized book clusters
*/
await gapi.client.books.personalizedstream.get({});

/*
Accepts the promo offer.
*/
await gapi.client.books.promooffer.accept({});

/*
Marks the promo offer as dismissed.
*/
await gapi.client.books.promooffer.dismiss({});

/*
Returns a list of promo offers available to the user
*/
await gapi.client.books.promooffer.get({});

/*
Returns Series metadata for the given series ids.
*/
await gapi.client.books.series.get({series_id: 'series_id'});

/*
Gets volume information for a single volume.
*/
await gapi.client.books.volumes.get({volumeId: 'volumeId'});

/*
Performs a book search.
*/
await gapi.client.books.volumes.list({q: 'q'});

For provenance information see Provenance section on NPM