Library / SDK
googleapis/google-api-dotnet-client avatar
googleapis/google-api-dotnet-client

Google APIs Client Library for .NET: Packages, Setup, and Trade-offs

Google APIs Client Library for .NET

1,519 stars557 forksC#Apache-2.0

At a glance

What is it?
googleapis/google-api-dotnet-client gives C# applications strongly typed access to Google APIs such as Drive, YouTube, Calendar, Storage, and Analytics, with OAuth2.0 support and broad framework coverage. It is supported in maintenance mode, while Google Cloud Platform workloads may be better served by newer Cloud Client Libraries for .NET.
Who is it for?
Adopt this library for a .NET application that calls a documented Google API through generated, strongly typed service clients, especially when OAuth2.0 and support for .NET Framework 4.6.2, .NET Standard 2.0, or .NET 6.0+ matter. Do not treat it as the default choice for Google Cloud Platform services, because the README directs those workloads to the newer Cloud Client Libraries for .NET.
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 C#, 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.

From daily snapshots

Star history

  • googleapis/google-api-dotnet-client1,519 ★ · +0
Star history
Repository2026-10-162026-10-23
googleapis/google-api-dotnet-client1.5k1.5k

0 Stars in the last 7 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Where google-api-dotnet-client fits in a C# application

The repository addresses the need to call Google APIs from .NET without building HTTP requests, parameter serialization, response models, and authentication plumbing by hand. Its intended users are C# developers working with services including Drive, YouTube, Calendar, Storage, and Analytics. The library supports OAuth2.0 and publishes separate, strongly typed packages for individual APIs.

That API-specific design is important. An application using Storage should reference the relevant Storage package rather than assume that every generated client belongs in one dependency. The README lists packages and API versions in a large table, with examples such as `Google.Apis.AIPlatformNotebooks.v1`, `Google.Apis.AIPlatformNotebooks.v2`, and `Google.Apis.APIManagement.v1alpha`. It also points to `Src/Generated/` for the most recently generated source and `DiscoveryJson/` for the discovery documents used during generation.

This is a general Google API client library, not the preferred abstraction for every Google workload. For Google Cloud Platform APIs such as Datastore or Pub/Sub, the README explicitly tells developers to consider the Cloud Client Libraries for .NET. Those libraries are described as newer and more idiomatic for Google Cloud Platform services. Choosing between the two families is therefore a product decision, not merely a choice between package versions.

Generated clients, Discovery documents, and OAuth2.0 request flow

The core mechanism is code generation. Google's Discovery API supplies descriptions of Google APIs, the repository stores those descriptions in `DiscoveryJson/`, and the generator produces strongly typed per-API libraries. The generator itself lives in the separate `gapic-generator-csharp` repository. This separates service definitions from the hand-maintained client infrastructure and lets each API acquire a C# surface that reflects its discovery document.

A typical request therefore starts with an application constructing the generated client for a specific API, supplying credentials or another configured OAuth2.0 flow, populating typed request properties, invoking the generated method, and receiving typed response or error models. The repository also contains generation-related scripts such as `GenerateApis.sh`, `UpdateDiscovery.sh`, `BuildGenerated.sh`, and `CSharpGeneratorFunctions.sh`. Based on that repository layout, generated API coverage and shared client behavior are maintained through distinct paths.

The recent release notes show that the client infrastructure continues to receive targeted work. Version 1.75.0 added caching for request parameter property information. Version 1.76.0 added a signal for when the last request is executed during resumable uploads. Version 1.77.0 validates path parameters against path traversal and parameter injection. These are concrete platform-level changes rather than evidence that every service model changes frequently.

The README does not provide a complete executable request example, so it would be misleading to invent constructor names, credential types, or method calls. The documented route for a first implementation is the linked Google API client library get-started page, followed by the supported APIs list and the API-specific reference documentation.

Choosing packages and platforms for a first Drive or YouTube call

The README sends developers to the official get-started documentation for installation instructions and directs them to the get-started page at `https://developers.google.com/api-client-library/dotnet/get_started`. It also publishes NuGet packages under the `google-apis-packages` account. Because the README does not include an exact `dotnet add package` command or a complete credential setup example, no command should be inferred from it.

A first use starts by identifying the Google API and its version, then locating that API's exact NuGet package in the README table. For example, the table separates AI Platform Notebooks v1 and v2 into different packages. The developer then confirms that the application targets one of the supported frameworks:

text
.NET Framework 4.6.2+
.NET Standard 2.0
.NET 6.0+

After selecting the package, follow the API-specific reference documentation and the central get-started guide for authentication and executable client setup. The expected result is a project that can configure OAuth2.0 and compile against the generated models and service methods for the selected API. The README does not state that a single package grants access to every listed API, so treating the library as one universal client package would be wrong.

Silverlight, UWP, Xamarin, and Unity are explicitly unsupported. Unity developers are directed toward Firebase for the platform's needs. That restriction makes the library a poor fit when one codebase must run across those targets.

Maintenance mode limits bug triage and feature expectations

The repository is not archived, and its last push was on 2026-10-14. That fact does not override the README's explicit maintenance policy: the library is supported but in maintenance mode only. Necessary bugs and essential features are being addressed, while non-critical issues will be closed. An issue may be reopened if it continues to cause problems.

This policy changes how upgrade cost should be assessed. Teams should not assume that every feature request or moderate usability problem will receive development attention. The three releases from June through September 2026 show specific maintenance work, including parameter caching, resumable-upload completion signaling, and path parameter validation. They do not establish a general feature roadmap.

The FAQ is identified as the place for details about maintenance mode, although the README does not reproduce those details. No claim can therefore be made about response times, support duration, deprecation policy, or long-term compatibility guarantees. Upgrade planning should focus on the concrete boundary already stated in the README: critical fixes and essential features, not unrestricted issue resolution.

Apache-2.0 and generated API package obligations

The repository identifies its license as Apache-2.0 and includes a `LICENSE` file. That is the stated license for the client library source. The repository also contains public and internal strong-name key files, but the README does not explain their signing scope, so no conclusion should be drawn from their presence alone.

The per-API NuGet packages are part of the distribution model described by the README. Any organization using those packages should verify the license metadata associated with each package it ships, particularly because an application may depend on both the shared client library and an API-specific generated package. This is a compliance verification point, not legal advice.

The Apache-2.0 designation does not remove operational obligations associated with Google API terms, OAuth credentials, scopes, or the data handled by a service. Those service-specific conditions are outside the facts documented by the repository and should be checked against the product documentation linked for each API.

Why Cloud Client Libraries for .NET may be the better fit

The clearest documented alternative is the Cloud Client Libraries for .NET at `https://github.com/googleapis/google-cloud-dotnet`. The README calls these newer and more idiomatic for Google Cloud Platform services, naming Datastore and Pub/Sub as examples. This changes both the target and the recommended abstraction. The general client here covers broad Google API access through generated per-API packages, while the alternative is presented as the preferred family for Google Cloud Platform workloads.

A team choosing between them should first classify the service. Drive, YouTube, Calendar, Storage, and Analytics are named as APIs supported by this repository. Datastore and Pub/Sub are specifically used by the README to redirect developers toward the Cloud Client Libraries for .NET. An application that mixes both categories may need to evaluate package boundaries rather than assume one family can be selected mechanically.

The README does not document detailed migration steps between the libraries. The safe comparison is therefore architectural and documented: select this repository for its broad generated Google API coverage, but honor the README's explicit redirect when the primary workload belongs to Google Cloud Platform.

Generated-code scope, unsupported platforms, and adoption boundaries

The repository's size and package breadth are not, by themselves, evidence of suitability. The practical boundary lies in API generation, package version selection, authentication, and platform support. A team can confirm that the target service appears in the package table and that its application targets a supported framework. It cannot infer unsupported runtime support from the breadth of the generated directory.

Generated models also mean that the public C# surface is tied to discovery documents and API versions. Entries such as `v1`, `v2`, `v1alpha`, and `v1beta` are not interchangeable labels. The README does not state compatibility rules for every version, nor does it claim that all APIs move from alpha or beta to stable on the same schedule.

Resumable uploads have received specific client improvements, but the README does not document service quotas, retry behavior, request cancellation semantics, or every possible failure mode. Those details must come from the API documentation and linked help pages. This library is most suitable when the team values typed Google API access and accepts maintenance-mode boundaries. It is the wrong choice when the application must support UWP, Xamarin, Unity, or Silverlight, or when the README explicitly directs the service toward another client family.

Editorial conclusion

Adopt this library for a .NET application that calls a documented Google API through generated, strongly typed service clients, especially when OAuth2.0 and support for .NET Framework 4.6.2, .NET Standard 2.0, or .NET 6.0+ matter. Do not treat it as the default choice for Google Cloud Platform services, because the README directs those workloads to the newer Cloud Client Libraries for .NET. Before adoption, verify the selected API package, target framework, authentication flow, and whether the API's current documentation recommends the newer Cloud Client Library.

Frequently asked questions

Which .NET frameworks does Google APIs Client Library for .NET support?

It supports .NET Framework 4.6.2+, .NET Standard 2.0, and .NET 6.0+. Silverlight, UWP, Xamarin, and Unity are listed as unsupported.

Is google-api-dotnet-client actively adding new features?

No. The README says the library is supported in maintenance mode only. The project is fixing necessary bugs and adding essential features, while non-critical issues will be closed.

Should I use google-api-dotnet-client for Google Cloud Platform APIs?

The README recommends considering the Cloud Client Libraries for .NET for Google Cloud Platform services such as Datastore and Pub/Sub. It describes those libraries as newer and more idiomatic for that category.

Official sources

  1. googleapis/google-api-dotnet-client on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
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-dotnet-client.svg)](https://hysenlabs.com/projects/googleapis-google-api-dotnet-client)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/googleapis-google-api-dotnet-client.svg)](https://hysenlabs.com/projects/googleapis-google-api-dotnet-client)

Was this useful?