Library / SDK
googleapis/google-api-java-client-services avatar
googleapis/google-api-java-client-services

google-api-java-client-services: generated Java clients for Google APIs

Generated Java code for Google APIs

727 stars398 forksJavaApache-2.0

At a glance

What is it?
The repository holds machine generated Java source for dozens of Google APIs, each shipped as its own Maven artifact. It is worth adopting for typed request and response models, and worth avoiding when you only need one endpoint.
Who is it for?
Adopt it when your Java or Android service needs typed models for a specific Google API and you want the surface pinned by a version directory such as clients/google-api-services-bigquery/v2. Skip it when a single endpoint is enough, since a hand-written REST call is smaller than the artifact you would inherit.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A repository of generated clients, not a service you run

google-api-java-client-services contains no application logic and no server component. The project documentation describes it as the generated source for individual APIs that use the Google APIs Client Library for Java, so the unit of value here is a Java package per API rather than a deployable component. The problem it solves is narrow and real: without generated model classes, every caller ends up mapping JSON payloads onto hand written POJOs and hand building query parameters for each Google service. The intended users are server side Java and Android developers who want those models already written. The project documentation recommends the Google Auth Library for Java for handling authentication, which places credential handling in a separate library rather than in these packages. The project is Apache-2.0 licensed, the repository is not archived, and the last push was on 2026-10-20, so the generated output is still being regenerated.

One artifact per API, one directory per version

The repository layout makes the packaging model explicit. Everything service specific lives under a top level clients directory, and inside it each API gets a folder named after its Maven artifact, with a subdirectory for each published version. The AI Platform Training and Prediction API appears at clients/google-api-services-ml/v1, BigQuery at clients/google-api-services-bigquery/v2, and Calendar at clients/google-api-services-calendar/v3. The artifact name therefore encodes the service in a shortened form, while the directory beneath it encodes the API version. This matters for dependency management, because choosing an API and choosing its version are two separate decisions that both end up as a path. The top level also carries a pom.xml, which is where the multi module build for those paths is defined, plus renovate.json for automated dependency bumps.

Stable, alpha and beta versions sit in the same tree

The client table shows that a single service frequently ships several versions at once. AlloyDB appears with v1, v1alpha and v1beta. Artifact Registry has v1, v1beta1 and v1beta2. Cloud Asset is the widest case, listing v1 alongside v1beta1, v1p1beta1, v1p5beta1 and v1p7beta1. Some APIs split by surface rather than by maturity: the Admin SDK SDK lists datatransfer_v1, directory_v1 and reports_v1 under one artifact, and Campaign Manager 360 appears as dfareporting with both v3.5 and v4. The practical consequence is that version sprawl is a design choice of this repository, not an accident. It also means the version you pick is a commitment, and the documentation does not explain which beta is current, how long a beta path is expected to live, or whether a stable version replaces a beta path in place.

Authentication and the client library are separate dependencies

The requirements section lists three things: the Google APIs Client Library for Java, Java 7 or higher, and Android 1.6 or higher. A service client in this repository is therefore never the only jar on your classpath. The Google APIs Client Library supplies the shared HTTP and request plumbing, and the Google Auth Library for Java, which the README recommends, supplies credentials. Authentication is not bolted onto a generated client as an option, it is a separate concern with its own dependency, which is a clean separation but means a minimal integration still needs at least two artifacts plus the service package. The stated Java and Android floors are also old, and they describe what the generated code targets rather than what a current runtime needs, so they should be read as a compatibility baseline and checked against your own build configuration.

The generator/ directory explains the missing release tags

Among the top level entries are generator, clients, pom.xml, renovate.json, .github, .kokoro, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md, LICENSE and README.md. The presence of a generator directory is the single most useful fact about the repository, because it means the code under clients is produced by a tool rather than written and reviewed by hand. The repository has no GitHub releases at all. Artifacts reach users through Maven Central instead, which is why the project points to Maven Central for the list of published packages. A consequence for your build is that you do not upgrade by moving to a release tag, you change the Maven version of the artifact you depend on. Another consequence is that a generated client is not a good place to patch behaviour locally, because a local edit is lost the next time the source is regenerated.

Where a generated client becomes the wrong tool

Three cases stand out. First, if your integration only needs one endpoint, inheriting a full service artifact buys you thousands of classes you never touch, and you pay for that in build time and in dependency surface. Second, if you need to bend a request shape that the generated model cannot express, you are stuck: the code is regenerated, so hand edits do not survive, and the documented path forward is not described anywhere in the readme text, which does not document overrides, patching, or a local escape hatch. Third, the version directory is a blunt instrument for stability. A path such as clients/google-api-services-admob/v1beta tells you the surface is beta, but the documentation gives no support policy for betas and no deprecation notes, so adopting one is a decision you make on your own.

The Discovery Service and hand written REST calls as the alternative

The same repository hosts the API Discovery Service at clients/google-api-services-discovery/v1, which points to a genuinely different approach to the same problem. A discovery driven client describes an API at runtime from a machine readable description and builds requests from that, so you do not need a compiled artifact per service and you are not locked to the version the generator happened to emit. The trade is real in both directions. Generated clients give compile time types, a fixed and reviewable method surface, and a version you can pin in a lockfile, while discovery gives a shape that can change under you at runtime with no compiler to object. For a stable internal integration where you know the API you want, the generated artifact is usually the safer dependency. For an exploratory tool that wants to explore whatever the description currently offers, discovery avoids the artifact entirely.

Editorial conclusion

Adopt it when your Java or Android service needs typed models for a specific Google API and you want the surface pinned by a version directory such as clients/google-api-services-bigquery/v2. Skip it when a single endpoint is enough, since a hand-written REST call is smaller than the artifact you would inherit. Before committing, verify the exact version path for your API in the client table, because the repository publishes stable, alpha and beta artifacts side by side and ships no GitHub releases to pin against.

Frequently asked questions

How do I add these Google API clients to a Maven project?

The project documentation points to Maven Central for the published packages rather than giving a build snippet. Each API and version is a separate artifact, for example the BigQuery v2 code lives at clients/google-api-services-bigquery/v2, and the repository itself publishes no GitHub releases, so you consume the Maven artifacts instead of building this repository.

Which library handles authentication for these generated clients?

The project documentation recommends the Google Auth Library for Java for handling authentication, and lists the Google APIs Client Library for Java as a separate requirement. Credentials therefore come from a different artifact than the generated service classes.

What Java and Android versions do the generated clients target?

The requirements list states Java 7 (or higher) and Android 1.6 (or higher), alongside the Google APIs Client Library for Java. Those floors describe the target runtime of the generated source rather than a recommended build setup.

Are alpha and beta API versions published here?

Yes for many services. The client table lists AlloyDB with v1, v1alpha and v1beta, Artifact Registry with v1, v1beta1 and v1beta2, and Cloud Asset with v1 plus several beta paths. The README does not say how long a beta path is kept before a stable one appears.

Official sources

  1. googleapis/google-api-java-client-services on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/googleapis-google-api-java-client-services.svg)](https://hysenlabs.com/projects/googleapis-google-api-java-client-services)

Was this useful?