xref: /aosp_15_r20/external/google-cloud-java/README.md (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1*55e87721SMatt Gilbride# Google Cloud Java Client Libraries
2*55e87721SMatt Gilbride
3*55e87721SMatt Gilbride> Java idiomatic client for [Google Cloud Platform][cloud-platform] services.
4*55e87721SMatt Gilbride
5*55e87721SMatt Gilbride* [Java on Google Cloud][cloud-java]
6*55e87721SMatt Gilbride
7*55e87721SMatt Gilbride## Supported APIs
8*55e87721SMatt Gilbride
9*55e87721SMatt GilbrideLibraries are available on GitHub and Maven Central for developing Java applications that interact with individual Google Cloud services:
10*55e87721SMatt Gilbride
11*55e87721SMatt Gilbride[//]: # (API_TABLE_START)
12*55e87721SMatt Gilbride
13*55e87721SMatt Gilbride| Client | Release Level | Version |
14*55e87721SMatt Gilbride| ------ | ------------- | ------- |
15*55e87721SMatt Gilbride| [AI Platform Notebooks](https://github.com/googleapis/google-cloud-java/tree/main/java-notebooks) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-notebooks.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-notebooks&core=gav) |
16*55e87721SMatt Gilbride| [API Gateway](https://github.com/googleapis/google-cloud-java/tree/main/java-api-gateway) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-api-gateway.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-api-gateway&core=gav) |
17*55e87721SMatt Gilbride| [Access Approval](https://github.com/googleapis/google-cloud-java/tree/main/java-accessapproval) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-accessapproval.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-accessapproval&core=gav) |
18*55e87721SMatt Gilbride| [Apigee Connect](https://github.com/googleapis/google-cloud-java/tree/main/java-apigee-connect) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-apigee-connect.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-apigee-connect&core=gav) |
19*55e87721SMatt Gilbride| [App Engine Admin API](https://github.com/googleapis/google-cloud-java/tree/main/java-appengine-admin) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-appengine-admin.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-appengine-admin&core=gav) |
20*55e87721SMatt Gilbride| [Artifact Registry](https://github.com/googleapis/google-cloud-java/tree/main/java-artifact-registry) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-artifact-registry.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-artifact-registry&core=gav) |
21*55e87721SMatt Gilbride| [Asset Inventory](https://github.com/googleapis/google-cloud-java/tree/main/java-asset) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-asset.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-asset&core=gav) |
22*55e87721SMatt Gilbride| [Assured Workloads for Government](https://github.com/googleapis/google-cloud-java/tree/main/java-assured-workloads) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-assured-workloads.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-assured-workloads&core=gav) |
23*55e87721SMatt Gilbride| [Auto ML](https://github.com/googleapis/google-cloud-java/tree/main/java-automl) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-automl.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-automl&core=gav) |
24*55e87721SMatt Gilbride| [BigQuery](https://github.com/googleapis/java-bigquery) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquery.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquery&core=gav) |
25*55e87721SMatt Gilbride| [BigQuery Connection](https://github.com/googleapis/google-cloud-java/tree/main/java-bigqueryconnection) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigqueryconnection.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigqueryconnection&core=gav) |
26*55e87721SMatt Gilbride| [BigQuery Data Transfer Service](https://github.com/googleapis/google-cloud-java/tree/main/java-bigquerydatatransfer) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquerydatatransfer.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquerydatatransfer&core=gav) |
27*55e87721SMatt Gilbride| [BigQuery Reservation](https://github.com/googleapis/google-cloud-java/tree/main/java-bigqueryreservation) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigqueryreservation.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigqueryreservation&core=gav) |
28*55e87721SMatt Gilbride| [BigQuery Storage](https://github.com/googleapis/java-bigquerystorage) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquerystorage.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquerystorage&core=gav) |
29*55e87721SMatt Gilbride| [Bigtable](https://github.com/googleapis/java-bigtable) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigtable.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigtable&core=gav) |
30*55e87721SMatt Gilbride| [Bigtable Hbase Client](https://github.com/googleapis/java-bigtable-hbase) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud.bigtable/bigtable-client-parent.svg)](https://search.maven.org/search?q=g:com.google.cloud.bigtable%20AND%20a:bigtable-client-parent&core=gav) |
31*55e87721SMatt Gilbride| [Billing](https://github.com/googleapis/google-cloud-java/tree/main/java-billing) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-billing.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-billing&core=gav) |
32*55e87721SMatt Gilbride| [Billing Budgets](https://github.com/googleapis/google-cloud-java/tree/main/java-billingbudgets) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-billingbudgets.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-billingbudgets&core=gav) |
33*55e87721SMatt Gilbride| [Binary Authorization](https://github.com/googleapis/google-cloud-java/tree/main/java-binary-authorization) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-binary-authorization.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-binary-authorization&core=gav) |
34*55e87721SMatt Gilbride| [Build](https://github.com/googleapis/google-cloud-java/tree/main/java-cloudbuild) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-build.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-build&core=gav) |
35*55e87721SMatt Gilbride| [CCAI Insights](https://github.com/googleapis/google-cloud-java/tree/main/java-contact-center-insights) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-contact-center-insights.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-contact-center-insights&core=gav) |
36*55e87721SMatt Gilbride| [Certificate Authority Service](https://github.com/googleapis/google-cloud-java/tree/main/java-security-private-ca) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-security-private-ca.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-security-private-ca&core=gav) |
37*55e87721SMatt Gilbride| [Channel Services](https://github.com/googleapis/google-cloud-java/tree/main/java-channel) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-channel.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-channel&core=gav) |
38*55e87721SMatt Gilbride| [Composer](https://github.com/googleapis/google-cloud-java/tree/main/java-orchestration-airflow) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-orchestration-airflow.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-orchestration-airflow&core=gav) |
39*55e87721SMatt Gilbride| [Compute Engine](https://github.com/googleapis/google-cloud-java/tree/main/java-compute) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-compute.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-compute&core=gav) |
40*55e87721SMatt Gilbride| [Container Analysis](https://github.com/googleapis/google-cloud-java/tree/main/java-containeranalysis) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-containeranalysis.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-containeranalysis&core=gav) |
41*55e87721SMatt Gilbride| [DNS](https://github.com/googleapis/google-cloud-java/tree/main/java-dns) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dns.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dns&core=gav) |
42*55e87721SMatt Gilbride| [Data Catalog](https://github.com/googleapis/google-cloud-java/tree/main/java-datacatalog) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datacatalog.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-datacatalog&core=gav) |
43*55e87721SMatt Gilbride| [Data Fusion](https://github.com/googleapis/google-cloud-java/tree/main/java-data-fusion) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-data-fusion.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-data-fusion&core=gav) |
44*55e87721SMatt Gilbride| [Data Loss Prevention](https://github.com/googleapis/google-cloud-java/tree/main/java-dlp) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dlp.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dlp&core=gav) |
45*55e87721SMatt Gilbride| [Database Migration Service](https://github.com/googleapis/google-cloud-java/tree/main/java-dms) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dms.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dms&core=gav) |
46*55e87721SMatt Gilbride| [Dataplex](https://github.com/googleapis/google-cloud-java/tree/main/java-dataplex) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dataplex.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dataplex&core=gav) |
47*55e87721SMatt Gilbride| [Dataproc](https://github.com/googleapis/google-cloud-java/tree/main/java-dataproc) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dataproc.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dataproc&core=gav) |
48*55e87721SMatt Gilbride| [Dataproc Metastore](https://github.com/googleapis/google-cloud-java/tree/main/java-dataproc-metastore) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dataproc-metastore.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dataproc-metastore&core=gav) |
49*55e87721SMatt Gilbride| [Datastore](https://github.com/googleapis/java-datastore) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datastore.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-datastore&core=gav) |
50*55e87721SMatt Gilbride| [Datastream](https://github.com/googleapis/google-cloud-java/tree/main/java-datastream) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datastream.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-datastream&core=gav) |
51*55e87721SMatt Gilbride| [Debugger](https://github.com/googleapis/google-cloud-java/tree/main/java-debugger-client) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-debugger-client.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-debugger-client&core=gav) |
52*55e87721SMatt Gilbride| [Deploy](https://github.com/googleapis/google-cloud-java/tree/main/java-deploy) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-deploy.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-deploy&core=gav) |
53*55e87721SMatt Gilbride| [Dialogflow API](https://github.com/googleapis/google-cloud-java/tree/main/java-dialogflow) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dialogflow.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dialogflow&core=gav) |
54*55e87721SMatt Gilbride| [Document AI](https://github.com/googleapis/google-cloud-java/tree/main/java-document-ai) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-document-ai.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-document-ai&core=gav) |
55*55e87721SMatt Gilbride| [Domains](https://github.com/googleapis/google-cloud-java/tree/main/java-domains) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-domains.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-domains&core=gav) |
56*55e87721SMatt Gilbride| [Essential Contacts API](https://github.com/googleapis/google-cloud-java/tree/main/java-essential-contacts) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-essential-contacts.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-essential-contacts&core=gav) |
57*55e87721SMatt Gilbride| [Eventarc](https://github.com/googleapis/google-cloud-java/tree/main/java-eventarc) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-eventarc.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-eventarc&core=gav) |
58*55e87721SMatt Gilbride| [Filestore API](https://github.com/googleapis/google-cloud-java/tree/main/java-filestore) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-filestore.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-filestore&core=gav) |
59*55e87721SMatt Gilbride| [Firestore](https://github.com/googleapis/java-firestore) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-firestore.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-firestore&core=gav) |
60*55e87721SMatt Gilbride| [Fleet Routing](https://github.com/googleapis/google-cloud-java/tree/main/java-optimization) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-optimization.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-optimization&core=gav) |
61*55e87721SMatt Gilbride| [Functions](https://github.com/googleapis/google-cloud-java/tree/main/java-functions) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-functions.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-functions&core=gav) |
62*55e87721SMatt Gilbride| [GKE Hub API](https://github.com/googleapis/google-cloud-java/tree/main/java-gkehub) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-gkehub.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-gkehub&core=gav) |
63*55e87721SMatt Gilbride| [Gaming](https://github.com/googleapis/google-cloud-java/tree/main/java-game-servers) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-game-servers.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-game-servers&core=gav) |
64*55e87721SMatt Gilbride| [IAM](https://github.com/googleapis/google-cloud-java/tree/main/java-iam) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-iam-policy.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-iam-policy&core=gav) |
65*55e87721SMatt Gilbride| [IAM Admin API](https://github.com/googleapis/google-cloud-java/tree/main/java-iam-admin) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-iam-admin.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-iam-admin&core=gav) |
66*55e87721SMatt Gilbride| [IAM Policy Troubleshooter API](https://github.com/googleapis/google-cloud-java/tree/main/java-policy-troubleshooter) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-policy-troubleshooter.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-policy-troubleshooter&core=gav) |
67*55e87721SMatt Gilbride| [IAM Service Account Credentials API](https://github.com/googleapis/google-cloud-java/tree/main/java-iamcredentials) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-iamcredentials.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-iamcredentials&core=gav) |
68*55e87721SMatt Gilbride| [Identity Access Context Manager](https://github.com/googleapis/google-cloud-java/tree/main/java-accesscontextmanager) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-identity-accesscontextmanager.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-identity-accesscontextmanager&core=gav) |
69*55e87721SMatt Gilbride| [Internet of Things (IoT) Core](https://github.com/googleapis/google-cloud-java/tree/main/java-iot) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-iot.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-iot&core=gav) |
70*55e87721SMatt Gilbride| [Intrusion Detection System](https://github.com/googleapis/google-cloud-java/tree/main/java-ids) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-ids.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-ids&core=gav) |
71*55e87721SMatt Gilbride| [Key Management Service](https://github.com/googleapis/google-cloud-java/tree/main/java-kms) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-kms.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-kms&core=gav) |
72*55e87721SMatt Gilbride| [Kubernetes Engine](https://github.com/googleapis/google-cloud-java/tree/main/java-container) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-container.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-container&core=gav) |
73*55e87721SMatt Gilbride| [Logging](https://github.com/googleapis/java-logging) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-logging.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-logging&core=gav) |
74*55e87721SMatt Gilbride| [Managed Service for Microsoft Active Directory](https://github.com/googleapis/google-cloud-java/tree/main/java-managed-identities) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-managed-identities.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-managed-identities&core=gav) |
75*55e87721SMatt Gilbride| [Memcache](https://github.com/googleapis/google-cloud-java/tree/main/java-memcache) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-memcache.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-memcache&core=gav) |
76*55e87721SMatt Gilbride| [Monitoring Dashboards](https://github.com/googleapis/google-cloud-java/tree/main/java-monitoring-dashboards) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-monitoring-dashboard.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-monitoring-dashboard&core=gav) |
77*55e87721SMatt Gilbride| [Natural Language](https://github.com/googleapis/google-cloud-java/tree/main/java-language) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-language.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-language&core=gav) |
78*55e87721SMatt Gilbride| [Network Connectivity Center](https://github.com/googleapis/google-cloud-java/tree/main/java-networkconnectivity) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-networkconnectivity.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-networkconnectivity&core=gav) |
79*55e87721SMatt Gilbride| [Network Management API](https://github.com/googleapis/google-cloud-java/tree/main/java-network-management) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-network-management.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-network-management&core=gav) |
80*55e87721SMatt Gilbride| [OS Config API](https://github.com/googleapis/google-cloud-java/tree/main/java-os-config) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-os-config.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-os-config&core=gav) |
81*55e87721SMatt Gilbride| [OS Login](https://github.com/googleapis/google-cloud-java/tree/main/java-os-login) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-os-login.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-os-login&core=gav) |
82*55e87721SMatt Gilbride| [Organization Policy](https://github.com/googleapis/google-cloud-java/tree/main/java-orgpolicy) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-orgpolicy.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-orgpolicy&core=gav) |
83*55e87721SMatt Gilbride| [Profiler](https://github.com/googleapis/google-cloud-java/tree/main/java-profiler) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-profiler.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-profiler&core=gav) |
84*55e87721SMatt Gilbride| [Pub/Sub](https://github.com/googleapis/java-pubsub) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsub.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-pubsub&core=gav) |
85*55e87721SMatt Gilbride| [Pub/Sub Group Kafka Connector](https://github.com/googleapis/java-pubsub-group-kafka-connector) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/pubsub-group-kafka-connector.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:pubsub-group-kafka-connector&core=gav) |
86*55e87721SMatt Gilbride| [Pub/Sub Lite](https://github.com/googleapis/java-pubsublite) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsublite.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-pubsublite&core=gav) |
87*55e87721SMatt Gilbride| [Pub/Sub Lite Kafka Shim](https://github.com/googleapis/java-pubsublite-kafka) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/pubsublite-kafka.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:pubsublite-kafka&core=gav) |
88*55e87721SMatt Gilbride| [Pub/Sub Lite Spark Connector](https://github.com/googleapis/java-pubsublite-spark) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/pubsublite-spark-sql-streaming.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:pubsublite-spark-sql-streaming&core=gav) |
89*55e87721SMatt Gilbride| [Recommender](https://github.com/googleapis/google-cloud-java/tree/main/java-recommender) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-recommender.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-recommender&core=gav) |
90*55e87721SMatt Gilbride| [Redis](https://github.com/googleapis/google-cloud-java/tree/main/java-redis) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-redis.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-redis&core=gav) |
91*55e87721SMatt Gilbride| [Resource Manager API](https://github.com/googleapis/google-cloud-java/tree/main/java-resourcemanager) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-resourcemanager.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-resourcemanager&core=gav) |
92*55e87721SMatt Gilbride| [Resource Settings API](https://github.com/googleapis/google-cloud-java/tree/main/java-resource-settings) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-resource-settings.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-resource-settings&core=gav) |
93*55e87721SMatt Gilbride| [Retail](https://github.com/googleapis/google-cloud-java/tree/main/java-retail) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-retail.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-retail&core=gav) |
94*55e87721SMatt Gilbride| [Routes API](https://github.com/googleapis/google-cloud-java/tree/main/java-maps-routing) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.maps/google-maps-routing.svg)](https://search.maven.org/search?q=g:com.google.maps%20AND%20a:google-maps-routing&core=gav) |
95*55e87721SMatt Gilbride| [Scheduler](https://github.com/googleapis/google-cloud-java/tree/main/java-scheduler) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-scheduler.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-scheduler&core=gav) |
96*55e87721SMatt Gilbride| [Secret Management](https://github.com/googleapis/google-cloud-java/tree/main/java-secretmanager) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-secretmanager.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-secretmanager&core=gav) |
97*55e87721SMatt Gilbride| [Security Command Center](https://github.com/googleapis/google-cloud-java/tree/main/java-securitycenter) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-securitycenter.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-securitycenter&core=gav) |
98*55e87721SMatt Gilbride| [Security Scanner](https://github.com/googleapis/google-cloud-java/tree/main/java-websecurityscanner) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-websecurityscanner.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-websecurityscanner&core=gav) |
99*55e87721SMatt Gilbride| [Serverless VPC Access](https://github.com/googleapis/google-cloud-java/tree/main/java-vpcaccess) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-vpcaccess.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-vpcaccess&core=gav) |
100*55e87721SMatt Gilbride| [Service Control API](https://github.com/googleapis/google-cloud-java/tree/main/java-service-control) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-service-control.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-service-control&core=gav) |
101*55e87721SMatt Gilbride| [Service Directory](https://github.com/googleapis/google-cloud-java/tree/main/java-servicedirectory) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-servicedirectory.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-servicedirectory&core=gav) |
102*55e87721SMatt Gilbride| [Service Management API](https://github.com/googleapis/google-cloud-java/tree/main/java-service-management) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-service-management.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-service-management&core=gav) |
103*55e87721SMatt Gilbride| [Service Usage](https://github.com/googleapis/google-cloud-java/tree/main/java-service-usage) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-service-usage.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-service-usage&core=gav) |
104*55e87721SMatt Gilbride| [Shell](https://github.com/googleapis/google-cloud-java/tree/main/java-shell) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-shell.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-shell&core=gav) |
105*55e87721SMatt Gilbride| [Spanner](https://github.com/googleapis/java-spanner) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-spanner&core=gav) |
106*55e87721SMatt Gilbride| [Spanner JDBC](https://github.com/googleapis/java-spanner-jdbc) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner-jdbc.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-spanner-jdbc&core=gav) |
107*55e87721SMatt Gilbride| [Speech](https://github.com/googleapis/google-cloud-java/tree/main/java-speech) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-speech.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-speech&core=gav) |
108*55e87721SMatt Gilbride| [Stackdriver Monitoring](https://github.com/googleapis/google-cloud-java/tree/main/java-monitoring) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-monitoring.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-monitoring&core=gav) |
109*55e87721SMatt Gilbride| [Stackdriver Trace](https://github.com/googleapis/google-cloud-java/tree/main/java-trace) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-trace.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-trace&core=gav) |
110*55e87721SMatt Gilbride| [Storage](https://github.com/googleapis/java-storage) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-storage.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-storage&core=gav) |
111*55e87721SMatt Gilbride| [Storage Transfer Service](https://github.com/googleapis/google-cloud-java/tree/main/java-storage-transfer) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-storage-transfer.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-storage-transfer&core=gav) |
112*55e87721SMatt Gilbride| [TPU](https://github.com/googleapis/google-cloud-java/tree/main/java-tpu) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-tpu.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-tpu&core=gav) |
113*55e87721SMatt Gilbride| [Talent Solution](https://github.com/googleapis/google-cloud-java/tree/main/java-talent) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-talent.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-talent&core=gav) |
114*55e87721SMatt Gilbride| [Tasks](https://github.com/googleapis/google-cloud-java/tree/main/java-tasks) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-tasks.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-tasks&core=gav) |
115*55e87721SMatt Gilbride| [Text-to-Speech](https://github.com/googleapis/google-cloud-java/tree/main/java-texttospeech) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-texttospeech.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-texttospeech&core=gav) |
116*55e87721SMatt Gilbride| [Translation](https://github.com/googleapis/google-cloud-java/tree/main/java-translate) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-translate.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-translate&core=gav) |
117*55e87721SMatt Gilbride| [VM Migration](https://github.com/googleapis/google-cloud-java/tree/main/java-vmmigration) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-vmmigration.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-vmmigration&core=gav) |
118*55e87721SMatt Gilbride| [Vertex AI](https://github.com/googleapis/google-cloud-java/tree/main/java-aiplatform) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-aiplatform.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-aiplatform&core=gav) |
119*55e87721SMatt Gilbride| [Video Intelligence](https://github.com/googleapis/google-cloud-java/tree/main/java-video-intelligence) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-video-intelligence.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-video-intelligence&core=gav) |
120*55e87721SMatt Gilbride| [Video Transcoder](https://github.com/googleapis/google-cloud-java/tree/main/java-video-transcoder) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-video-transcoder.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-video-transcoder&core=gav) |
121*55e87721SMatt Gilbride| [Vision](https://github.com/googleapis/google-cloud-java/tree/main/java-vision) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-vision.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-vision&core=gav) |
122*55e87721SMatt Gilbride| [Web Risk](https://github.com/googleapis/google-cloud-java/tree/main/java-webrisk) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-webrisk.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-webrisk&core=gav) |
123*55e87721SMatt Gilbride| [Workflow Executions](https://github.com/googleapis/google-cloud-java/tree/main/java-workflow-executions) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-workflow-executions.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-workflow-executions&core=gav) |
124*55e87721SMatt Gilbride| [Workflows](https://github.com/googleapis/google-cloud-java/tree/main/java-workflows) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-workflows.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-workflows&core=gav) |
125*55e87721SMatt Gilbride| [Workspace Add-ons API](https://github.com/googleapis/google-cloud-java/tree/main/java-gsuite-addons) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-gsuite-addons.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-gsuite-addons&core=gav) |
126*55e87721SMatt Gilbride| [reCAPTCHA Enterprise](https://github.com/googleapis/google-cloud-java/tree/main/java-recaptchaenterprise) | [![stable][stable-stability]][stable-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-recaptchaenterprise.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-recaptchaenterprise&core=gav) |
127*55e87721SMatt Gilbride| [API Keys API](https://github.com/googleapis/google-cloud-java/tree/main/java-apikeys) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-apikeys.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-apikeys&core=gav) |
128*55e87721SMatt Gilbride| [Address Validation API](https://github.com/googleapis/google-cloud-java/tree/main/java-maps-addressvalidation) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.maps/google-maps-addressvalidation.svg)](https://search.maven.org/search?q=g:com.google.maps%20AND%20a:google-maps-addressvalidation&core=gav) |
129*55e87721SMatt Gilbride| [Advisory Notifications API](https://github.com/googleapis/google-cloud-java/tree/main/java-advisorynotifications) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-advisorynotifications.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-advisorynotifications&core=gav) |
130*55e87721SMatt Gilbride| [AlloyDB](https://github.com/googleapis/google-cloud-java/tree/main/java-alloydb) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-alloydb.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-alloydb&core=gav) |
131*55e87721SMatt Gilbride| [Analytics Admin](https://github.com/googleapis/google-cloud-java/tree/main/java-analytics-admin) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.analytics/google-analytics-admin.svg)](https://search.maven.org/search?q=g:com.google.analytics%20AND%20a:google-analytics-admin&core=gav) |
132*55e87721SMatt Gilbride| [Analytics Data](https://github.com/googleapis/google-cloud-java/tree/main/java-analytics-data) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.analytics/google-analytics-data.svg)](https://search.maven.org/search?q=g:com.google.analytics%20AND%20a:google-analytics-data&core=gav) |
133*55e87721SMatt Gilbride| [Analytics Hub](https://github.com/googleapis/google-cloud-java/tree/main/java-bigquery-data-exchange) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquery-data-exchange.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquery-data-exchange&core=gav) |
134*55e87721SMatt Gilbride| [Analytics Hub API](https://github.com/googleapis/google-cloud-java/tree/main/java-analyticshub) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-analyticshub.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-analyticshub&core=gav) |
135*55e87721SMatt Gilbride| [Anthos Multicloud](https://github.com/googleapis/google-cloud-java/tree/main/java-gke-multi-cloud) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-gke-multi-cloud.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-gke-multi-cloud&core=gav) |
136*55e87721SMatt Gilbride| [Area 120 Tables](https://github.com/googleapis/google-cloud-java/tree/main/java-area120-tables) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.area120/google-area120-tables.svg)](https://search.maven.org/search?q=g:com.google.area120%20AND%20a:google-area120-tables&core=gav) |
137*55e87721SMatt Gilbride| [Backup for GKE](https://github.com/googleapis/google-cloud-java/tree/main/java-gke-backup) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-gke-backup.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-gke-backup&core=gav) |
138*55e87721SMatt Gilbride| [Bare Metal Solution](https://github.com/googleapis/google-cloud-java/tree/main/java-bare-metal-solution) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bare-metal-solution.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bare-metal-solution&core=gav) |
139*55e87721SMatt Gilbride| [Batch](https://github.com/googleapis/google-cloud-java/tree/main/java-batch) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-batch.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-batch&core=gav) |
140*55e87721SMatt Gilbride| [BeyondCorp AppConnections](https://github.com/googleapis/google-cloud-java/tree/main/java-beyondcorp-appconnections) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-beyondcorp-appconnections.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-beyondcorp-appconnections&core=gav) |
141*55e87721SMatt Gilbride| [BeyondCorp AppConnectors](https://github.com/googleapis/google-cloud-java/tree/main/java-beyondcorp-appconnectors) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-beyondcorp-appconnectors.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-beyondcorp-appconnectors&core=gav) |
142*55e87721SMatt Gilbride| [BeyondCorp AppGateways](https://github.com/googleapis/google-cloud-java/tree/main/java-beyondcorp-appgateways) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-beyondcorp-appgateways.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-beyondcorp-appgateways&core=gav) |
143*55e87721SMatt Gilbride| [BeyondCorp ClientConnectorServices](https://github.com/googleapis/google-cloud-java/tree/main/java-beyondcorp-clientconnectorservices) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-beyondcorp-clientconnectorservices.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-beyondcorp-clientconnectorservices&core=gav) |
144*55e87721SMatt Gilbride| [BeyondCorp ClientGateways](https://github.com/googleapis/google-cloud-java/tree/main/java-beyondcorp-clientgateways) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-beyondcorp-clientgateways.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-beyondcorp-clientgateways&core=gav) |
145*55e87721SMatt Gilbride| [BigLake](https://github.com/googleapis/google-cloud-java/tree/main/java-biglake) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-biglake.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-biglake&core=gav) |
146*55e87721SMatt Gilbride| [BigQuery DataPolicy API](https://github.com/googleapis/google-cloud-java/tree/main/java-bigquerydatapolicy) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquerydatapolicy.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquerydatapolicy&core=gav) |
147*55e87721SMatt Gilbride| [BigQuery Migration](https://github.com/googleapis/google-cloud-java/tree/main/java-bigquerymigration) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-bigquerymigration.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-bigquerymigration&core=gav) |
148*55e87721SMatt Gilbride| [Certificate Manager](https://github.com/googleapis/google-cloud-java/tree/main/java-certificate-manager) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-certificate-manager.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-certificate-manager&core=gav) |
149*55e87721SMatt Gilbride| [Commerce Consumer Procurement](https://github.com/googleapis/google-cloud-java/tree/main/java-cloudcommerceconsumerprocurement) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-cloudcommerceconsumerprocurement.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-cloudcommerceconsumerprocurement&core=gav) |
150*55e87721SMatt Gilbride| [Confidential Computing API](https://github.com/googleapis/google-cloud-java/tree/main/java-confidentialcomputing) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-confidentialcomputing.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-confidentialcomputing&core=gav) |
151*55e87721SMatt Gilbride| [Connect Gateway API](https://github.com/googleapis/google-cloud-java/tree/main/java-gke-connect-gateway) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-gke-connect-gateway.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-gke-connect-gateway&core=gav) |
152*55e87721SMatt Gilbride| [Data Labeling](https://github.com/googleapis/google-cloud-java/tree/main/java-datalabeling) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datalabeling.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-datalabeling&core=gav) |
153*55e87721SMatt Gilbride| [Data Lineage](https://github.com/googleapis/google-cloud-java/tree/main/java-datalineage) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-datalineage.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-datalineage&core=gav) |
154*55e87721SMatt Gilbride| [Dataflow](https://github.com/googleapis/google-cloud-java/tree/main/java-dataflow) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dataflow.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dataflow&core=gav) |
155*55e87721SMatt Gilbride| [Dataform](https://github.com/googleapis/google-cloud-java/tree/main/java-dataform) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dataform.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dataform&core=gav) |
156*55e87721SMatt Gilbride| [Dialogflow CX](https://github.com/googleapis/google-cloud-java/tree/main/java-dialogflow-cx) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-dialogflow-cx.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-dialogflow-cx&core=gav) |
157*55e87721SMatt Gilbride| [Discovery Engine API](https://github.com/googleapis/google-cloud-java/tree/main/java-discoveryengine) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-discoveryengine.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-discoveryengine&core=gav) |
158*55e87721SMatt Gilbride| [Distributed Edge](https://github.com/googleapis/google-cloud-java/tree/main/java-distributedcloudedge) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-distributedcloudedge.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-distributedcloudedge&core=gav) |
159*55e87721SMatt Gilbride| [Document AI Warehouse](https://github.com/googleapis/google-cloud-java/tree/main/java-contentwarehouse) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-contentwarehouse.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-contentwarehouse&core=gav) |
160*55e87721SMatt Gilbride| [Enterprise Knowledge Graph](https://github.com/googleapis/google-cloud-java/tree/main/java-enterpriseknowledgegraph) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-enterpriseknowledgegraph.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-enterpriseknowledgegraph&core=gav) |
161*55e87721SMatt Gilbride| [Error Reporting](https://github.com/googleapis/google-cloud-java/tree/main/java-errorreporting) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-errorreporting.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-errorreporting&core=gav) |
162*55e87721SMatt Gilbride| [Eventarc Publishing](https://github.com/googleapis/google-cloud-java/tree/main/java-eventarc-publishing) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-eventarc-publishing.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-eventarc-publishing&core=gav) |
163*55e87721SMatt Gilbride| [KMS Inventory API](https://github.com/googleapis/google-cloud-java/tree/main/java-kmsinventory) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-kmsinventory.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-kmsinventory&core=gav) |
164*55e87721SMatt Gilbride| [Life Sciences](https://github.com/googleapis/google-cloud-java/tree/main/java-life-sciences) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-life-sciences.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-life-sciences&core=gav) |
165*55e87721SMatt Gilbride| [Live Stream API](https://github.com/googleapis/google-cloud-java/tree/main/java-video-live-stream) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-live-stream.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-live-stream&core=gav) |
166*55e87721SMatt Gilbride| [Logging Logback Appender](https://github.com/googleapis/java-logging-logback) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-logging-logback.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-logging-logback&core=gav) |
167*55e87721SMatt Gilbride| [Logging Servlet Initializer](https://github.com/googleapis/java-logging-servlet-initializer) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-logging-servlet-initializer.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-logging-servlet-initializer&core=gav) |
168*55e87721SMatt Gilbride| [Maps Platform Datasets API](https://github.com/googleapis/google-cloud-java/tree/main/java-maps-mapsplatformdatasets) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.maps/google-maps-mapsplatformdatasets.svg)](https://search.maven.org/search?q=g:com.google.maps%20AND%20a:google-maps-mapsplatformdatasets&core=gav) |
169*55e87721SMatt Gilbride| [Media Translation API](https://github.com/googleapis/google-cloud-java/tree/main/java-mediatranslation) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-mediatranslation.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-mediatranslation&core=gav) |
170*55e87721SMatt Gilbride| [Monitoring Metrics Scopes](https://github.com/googleapis/google-cloud-java/tree/main/java-monitoring-metricsscope) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-monitoring-metricsscope.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-monitoring-metricsscope&core=gav) |
171*55e87721SMatt Gilbride| [NIO Filesystem Provider for Storage](https://github.com/googleapis/java-storage-nio) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-nio.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-nio&core=gav) |
172*55e87721SMatt Gilbride| [Network Security API](https://github.com/googleapis/google-cloud-java/tree/main/java-network-security) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-network-security.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-network-security&core=gav) |
173*55e87721SMatt Gilbride| [Phishing Protection](https://github.com/googleapis/google-cloud-java/tree/main/java-phishingprotection) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-phishingprotection.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-phishingprotection&core=gav) |
174*55e87721SMatt Gilbride| [Private Catalog](https://github.com/googleapis/google-cloud-java/tree/main/java-private-catalog) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-private-catalog.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-private-catalog&core=gav) |
175*55e87721SMatt Gilbride| [Pub/Sub Lite Flink Connector](https://github.com/googleapis/java-pubsublite-flink) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-pubsublite-flink.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-pubsublite-flink&core=gav) |
176*55e87721SMatt Gilbride| [Public Certificate Authority](https://github.com/googleapis/google-cloud-java/tree/main/java-publicca) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-publicca.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-publicca&core=gav) |
177*55e87721SMatt Gilbride| [Recommendations AI](https://github.com/googleapis/google-cloud-java/tree/main/java-recommendations-ai) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-recommendations-ai.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-recommendations-ai&core=gav) |
178*55e87721SMatt Gilbride| [Registry API](https://github.com/googleapis/google-cloud-java/tree/main/java-apigee-registry) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-apigee-registry.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-apigee-registry&core=gav) |
179*55e87721SMatt Gilbride| [Run](https://github.com/googleapis/google-cloud-java/tree/main/java-run) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-run.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-run&core=gav) |
180*55e87721SMatt Gilbride| [Security Command Center Settings API](https://github.com/googleapis/google-cloud-java/tree/main/java-securitycenter-settings) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-securitycenter-settings.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-securitycenter-settings&core=gav) |
181*55e87721SMatt Gilbride| [Storage Insights API](https://github.com/googleapis/google-cloud-java/tree/main/java-storageinsights) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-storageinsights.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-storageinsights&core=gav) |
182*55e87721SMatt Gilbride| [Support API](https://github.com/googleapis/google-cloud-java/tree/main/java-cloudsupport) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-cloudsupport.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-cloudsupport&core=gav) |
183*55e87721SMatt Gilbride| [VMware Engine](https://github.com/googleapis/google-cloud-java/tree/main/java-vmwareengine) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-vmwareengine.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-vmwareengine&core=gav) |
184*55e87721SMatt Gilbride| [Video Stitcher API](https://github.com/googleapis/google-cloud-java/tree/main/java-video-stitcher) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-video-stitcher.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-video-stitcher&core=gav) |
185*55e87721SMatt Gilbride| [Workstations](https://github.com/googleapis/google-cloud-java/tree/main/java-workstations) | [![preview][preview-stability]][preview-description] | [![Maven](https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-workstations.svg)](https://search.maven.org/search?q=g:com.google.cloud%20AND%20a:google-cloud-workstations&core=gav) |
186*55e87721SMatt Gilbride
187*55e87721SMatt Gilbride[//]: # (API_TABLE_END)
188*55e87721SMatt Gilbride
189*55e87721SMatt GilbrideIf the service is not listed, [google-api-java-client][google-api-java-client-services] interfaces with additional Google Cloud APIs using a legacy REST interface.
190*55e87721SMatt Gilbride
191*55e87721SMatt Gilbride*When building Java applications, preference should be given to the libraries listed in the table.*
192*55e87721SMatt Gilbride
193*55e87721SMatt Gilbride
194*55e87721SMatt Gilbride
195*55e87721SMatt Gilbride## Specifying a Project ID
196*55e87721SMatt Gilbride
197*55e87721SMatt GilbrideMost `google-cloud` libraries require a project ID.  There are multiple ways to specify this project ID.
198*55e87721SMatt Gilbride
199*55e87721SMatt Gilbride1. When using `google-cloud` libraries from within Compute/App Engine, there's no need to specify a project ID.  It is automatically inferred from the production environment.
200*55e87721SMatt Gilbride2. When using `google-cloud` elsewhere, you can do one of the following:
201*55e87721SMatt Gilbride* Supply the project ID when building the service options.  For example, to use Datastore from a project with ID "PROJECT_ID", you can write:
202*55e87721SMatt Gilbride
203*55e87721SMatt Gilbride  ```java
204*55e87721SMatt Gilbride  Datastore datastore = DatastoreOptions.newBuilder().setProjectId("PROJECT_ID").build().getService();
205*55e87721SMatt Gilbride  ```
206*55e87721SMatt Gilbride* Specify the environment variable `GOOGLE_CLOUD_PROJECT` to be your desired project ID.
207*55e87721SMatt Gilbride* Set the project ID using the [Google Cloud SDK](https://cloud.google.com/sdk/?hl=en).  To use the SDK, [download the SDK](https://cloud.google.com/sdk/?hl=en) if you haven't already, and set the project ID from the command line.  For example:
208*55e87721SMatt Gilbride
209*55e87721SMatt Gilbride  ```
210*55e87721SMatt Gilbride  gcloud config set project PROJECT_ID
211*55e87721SMatt Gilbride  ```
212*55e87721SMatt Gilbride
213*55e87721SMatt Gilbride`google-cloud` determines the project ID from the following sources in the listed order, stopping once it finds a value:
214*55e87721SMatt Gilbride
215*55e87721SMatt Gilbride1. The project ID supplied when building the service options
216*55e87721SMatt Gilbride2. Project ID specified by the environment variable `GOOGLE_CLOUD_PROJECT`
217*55e87721SMatt Gilbride3. The App Engine / Compute Engine project ID
218*55e87721SMatt Gilbride4. The project ID specified in the JSON credentials file pointed by the `GOOGLE_APPLICATION_CREDENTIALS` environment variable
219*55e87721SMatt Gilbride5. The Google Cloud SDK project ID
220*55e87721SMatt Gilbride
221*55e87721SMatt GilbrideIn cases where the library may expect a project ID explicitly, we provide a helper that can provide the inferred project ID:
222*55e87721SMatt Gilbride   ```java
223*55e87721SMatt Gilbride     import com.google.cloud.ServiceOptions;
224*55e87721SMatt Gilbride     ...
225*55e87721SMatt Gilbride     String projectId = ServiceOptions.getDefaultProjectId();
226*55e87721SMatt Gilbride   ```
227*55e87721SMatt Gilbride
228*55e87721SMatt Gilbride## Authentication
229*55e87721SMatt Gilbride
230*55e87721SMatt Gilbride`google-cloud-java` uses
231*55e87721SMatt Gilbride[https://github.com/googleapis/google-auth-library-java](https://github.com/googleapis/google-auth-library-java)
232*55e87721SMatt Gilbrideto authenticate requests. `google-auth-library-java` supports a wide range of authentication types;
233*55e87721SMatt Gilbridesee the project's [README](https://github.com/google/google-auth-library-java/blob/main/README.md)
234*55e87721SMatt Gilbrideand [javadoc](https://cloud.google.com/java/docs/reference/google-auth-library/latest/overview) for more
235*55e87721SMatt Gilbridedetails.
236*55e87721SMatt Gilbride
237*55e87721SMatt Gilbride### Google Cloud Platform environment
238*55e87721SMatt Gilbride
239*55e87721SMatt GilbrideWhen using Google Cloud libraries from a Google Cloud Platform environment such as Compute Engine,
240*55e87721SMatt GilbrideKubernetes Engine, or App Engine, no additional authentication steps are necessary.
241*55e87721SMatt Gilbride
242*55e87721SMatt GilbrideFor example:
243*55e87721SMatt Gilbride
244*55e87721SMatt Gilbride```java
245*55e87721SMatt GilbrideStorage storage = StorageOptions.getDefaultInstance().getService();
246*55e87721SMatt Gilbride```
247*55e87721SMatt Gilbride
248*55e87721SMatt Gilbrideor:
249*55e87721SMatt Gilbride
250*55e87721SMatt Gilbride```java
251*55e87721SMatt GilbrideCloudTasksClient cloudTasksClient = CloudTasksClient.create();
252*55e87721SMatt Gilbride```
253*55e87721SMatt Gilbride
254*55e87721SMatt Gilbride### Other environments
255*55e87721SMatt Gilbride
256*55e87721SMatt Gilbride#### Using a service account (recommended)
257*55e87721SMatt Gilbride
258*55e87721SMatt Gilbride1. [Generate a JSON service account key](https://cloud.google.com/storage/docs/authentication?hl=en#service_accounts).
259*55e87721SMatt Gilbride
260*55e87721SMatt Gilbride2. After downloading that key, you must do one of the following:
261*55e87721SMatt Gilbride    * Define the environment variable GOOGLE_APPLICATION_CREDENTIALS to be the location of the key.
262*55e87721SMatt Gilbride      For example:
263*55e87721SMatt Gilbride    ```bash
264*55e87721SMatt Gilbride    export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json
265*55e87721SMatt Gilbride    ```
266*55e87721SMatt Gilbride    * Supply the JSON credentials file when building the service options. For example, this Storage
267*55e87721SMatt Gilbride      object has the necessary permissions to interact with your Google Cloud Storage data:
268*55e87721SMatt Gilbride    ```java
269*55e87721SMatt Gilbride    Storage storage = StorageOptions.newBuilder()
270*55e87721SMatt Gilbride        .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json")))
271*55e87721SMatt Gilbride        .build()
272*55e87721SMatt Gilbride        .getService();
273*55e87721SMatt Gilbride    ```
274*55e87721SMatt Gilbride
275*55e87721SMatt Gilbride#### Local development/testing
276*55e87721SMatt Gilbride
277*55e87721SMatt GilbrideIf running locally for development/testing, you can use the [Google Cloud SDK](https://cloud.google.com/sdk/).
278*55e87721SMatt GilbrideCreate Application Default Credentials with `gcloud auth application-default login`, and then
279*55e87721SMatt Gilbride`google-cloud` will automatically detect such credentials.
280*55e87721SMatt Gilbride
281*55e87721SMatt Gilbride#### Existing OAuth2 access token
282*55e87721SMatt Gilbride
283*55e87721SMatt GilbrideIf you already have an OAuth2 access token, you can use it to authenticate (notice that in this case, the
284*55e87721SMatt Gilbrideaccess token will not be automatically refreshed):
285*55e87721SMatt Gilbride
286*55e87721SMatt Gilbride```java
287*55e87721SMatt GilbrideCredentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
288*55e87721SMatt GilbrideStorage storage = StorageOptions.newBuilder()
289*55e87721SMatt Gilbride    .setCredentials(credentials)
290*55e87721SMatt Gilbride    .build()
291*55e87721SMatt Gilbride    .getService();
292*55e87721SMatt Gilbride```
293*55e87721SMatt Gilbride
294*55e87721SMatt Gilbrideor:
295*55e87721SMatt Gilbride
296*55e87721SMatt Gilbride```java
297*55e87721SMatt GilbrideCredentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
298*55e87721SMatt GilbrideCloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
299*55e87721SMatt Gilbride    .setCredentialProvider(FixedCredentialsProvider.create(credentials))
300*55e87721SMatt Gilbride    .build();
301*55e87721SMatt GilbrideCloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
302*55e87721SMatt Gilbride```
303*55e87721SMatt Gilbride
304*55e87721SMatt Gilbride### Application Default Credentials
305*55e87721SMatt Gilbride
306*55e87721SMatt GilbrideIf no credentials are provided, `google-cloud` will attempt to detect them from the environment
307*55e87721SMatt Gilbrideusing `GoogleCredentials.getApplicationDefault()` which will search for Application Default
308*55e87721SMatt GilbrideCredentials in the following locations (in order):
309*55e87721SMatt Gilbride
310*55e87721SMatt Gilbride1. The credentials file pointed to by the `GOOGLE_APPLICATION_CREDENTIALS` environment variable
311*55e87721SMatt Gilbride2. Credentials provided by the Google Cloud SDK `gcloud auth application-default login` command
312*55e87721SMatt Gilbride3. Google App Engine built-in credentials
313*55e87721SMatt Gilbride4. Google Cloud Shell built-in credentials
314*55e87721SMatt Gilbride5. Google Compute Engine built-in credentials
315*55e87721SMatt Gilbride
316*55e87721SMatt Gilbride## Troubleshooting
317*55e87721SMatt Gilbride
318*55e87721SMatt GilbrideTo get help, follow the instructions in the [Troubleshooting document](https://github.com/googleapis/google-cloud-java/blob/main/TROUBLESHOOTING.md).
319*55e87721SMatt Gilbride
320*55e87721SMatt Gilbride## Configuring a Proxy
321*55e87721SMatt Gilbride
322*55e87721SMatt GilbrideGoogle Cloud client libraries use HTTPS and gRPC in underlying communication
323*55e87721SMatt Gilbridewith the services.
324*55e87721SMatt GilbrideIn both protocols, you can configure a proxy using `https.proxyHost`
325*55e87721SMatt Gilbrideand (optional) `https.proxyPort` properties.
326*55e87721SMatt Gilbride
327*55e87721SMatt Gilbride### gRPC Custom Proxy Configuration
328*55e87721SMatt Gilbride
329*55e87721SMatt GilbrideFor a more custom proxy with gRPC, you will need supply a `ProxyDetector` to
330*55e87721SMatt Gilbridethe `ManagedChannelBuilder`:
331*55e87721SMatt Gilbride
332*55e87721SMatt Gilbride```java
333*55e87721SMatt Gilbrideimport com.google.api.core.ApiFunction;
334*55e87721SMatt Gilbrideimport com.google.api.gax.rpc.TransportChannelProvider;
335*55e87721SMatt Gilbrideimport com.google.cloud.tasks.v2.CloudTasksClient;
336*55e87721SMatt Gilbrideimport com.google.cloud.tasks.v2.CloudTasksSettings;
337*55e87721SMatt Gilbrideimport com.google.cloud.tasks.v2.stub.CloudTasksStubSettings;
338*55e87721SMatt Gilbrideimport io.grpc.HttpConnectProxiedSocketAddress;
339*55e87721SMatt Gilbrideimport io.grpc.ManagedChannelBuilder;
340*55e87721SMatt Gilbrideimport io.grpc.ProxiedSocketAddress;
341*55e87721SMatt Gilbrideimport io.grpc.ProxyDetector;
342*55e87721SMatt Gilbride
343*55e87721SMatt Gilbrideimport javax.annotation.Nullable;
344*55e87721SMatt Gilbrideimport java.io.IOException;
345*55e87721SMatt Gilbrideimport java.net.InetSocketAddress;
346*55e87721SMatt Gilbrideimport java.net.SocketAddress;
347*55e87721SMatt Gilbride
348*55e87721SMatt Gilbridepublic CloudTasksClient getService() throws IOException {
349*55e87721SMatt Gilbride  TransportChannelProvider transportChannelProvider =
350*55e87721SMatt Gilbride      CloudTasksStubSettings.defaultGrpcTransportProviderBuilder()
351*55e87721SMatt Gilbride          .setChannelConfigurator(
352*55e87721SMatt Gilbride              new ApiFunction<ManagedChannelBuilder, ManagedChannelBuilder>() {
353*55e87721SMatt Gilbride                @Override
354*55e87721SMatt Gilbride                public ManagedChannelBuilder apply(ManagedChannelBuilder managedChannelBuilder) {
355*55e87721SMatt Gilbride                  return managedChannelBuilder.proxyDetector(
356*55e87721SMatt Gilbride                      new ProxyDetector() {
357*55e87721SMatt Gilbride                        @Nullable
358*55e87721SMatt Gilbride                        @Override
359*55e87721SMatt Gilbride                        public ProxiedSocketAddress proxyFor(SocketAddress socketAddress)
360*55e87721SMatt Gilbride                            throws IOException {
361*55e87721SMatt Gilbride                          return HttpConnectProxiedSocketAddress.newBuilder()
362*55e87721SMatt Gilbride                              .setUsername(PROXY_USERNAME)
363*55e87721SMatt Gilbride                              .setPassword(PROXY_PASSWORD)
364*55e87721SMatt Gilbride                              .setProxyAddress(new InetSocketAddress(PROXY_HOST, PROXY_PORT))
365*55e87721SMatt Gilbride                              .setTargetAddress((InetSocketAddress) socketAddress)
366*55e87721SMatt Gilbride                              .build();
367*55e87721SMatt Gilbride                        }
368*55e87721SMatt Gilbride                      });
369*55e87721SMatt Gilbride                }
370*55e87721SMatt Gilbride              })
371*55e87721SMatt Gilbride          .build();
372*55e87721SMatt Gilbride  CloudTasksSettings cloudTasksSettings =
373*55e87721SMatt Gilbride      CloudTasksSettings.newBuilder()
374*55e87721SMatt Gilbride          .setTransportChannelProvider(transportChannelProvider)
375*55e87721SMatt Gilbride          .build();
376*55e87721SMatt Gilbride  return CloudTasksClient.create(cloudTasksSettings);
377*55e87721SMatt Gilbride}
378*55e87721SMatt Gilbride```
379*55e87721SMatt Gilbride
380*55e87721SMatt Gilbride## Long Running Operations
381*55e87721SMatt Gilbride
382*55e87721SMatt GilbrideLong running operations (LROs) are often used for API calls that are expected to
383*55e87721SMatt Gilbridetake a long time to complete (e.g. provisioning a GCE instance or a Dataflow pipeline).
384*55e87721SMatt GilbrideThe initial API call creates an "operation" on the server and returns an operation ID
385*55e87721SMatt Gilbrideto track its progress.
386*55e87721SMatt Gilbride
387*55e87721SMatt GilbrideOur generated gRPC clients provide a nice interface for starting the operation and
388*55e87721SMatt Gilbridethen waiting for the operation to complete. This is accomplished by returning an
389*55e87721SMatt Gilbride[`OperationFuture`](https://cloud.google.com/java/docs/reference/gax/latest/com.google.api.gax.longrunning.OperationFuture).
390*55e87721SMatt GilbrideWhen you call `get()` on the `OperationFuture` we poll the operation endpoint to
391*55e87721SMatt Gilbridecheck on the operation. These polling operations have a default timeout that
392*55e87721SMatt Gilbridevaries from service to service and will throw a `java.util.concurrent.CancellationException`
393*55e87721SMatt Gilbridewith the message: `Task was cancelled.` after that timeout has been reached.
394*55e87721SMatt Gilbride
395*55e87721SMatt Gilbride### Configuring LRO Timeouts
396*55e87721SMatt Gilbride
397*55e87721SMatt Gilbride```java
398*55e87721SMatt GilbrideClusterControllerSettings.Builder settingsBuilder = ClusterControllerSettings.newBuilder();
399*55e87721SMatt GilbrideTimedRetryAlgorithm timedRetryAlgorithm = OperationTimedPollAlgorithm.create(
400*55e87721SMatt Gilbride		RetrySettings.newBuilder()
401*55e87721SMatt Gilbride				.setInitialRetryDelay(Duration.ofMillis(500L))
402*55e87721SMatt Gilbride				.setRetryDelayMultiplier(1.5)
403*55e87721SMatt Gilbride				.setMaxRetryDelay(Duration.ofMillis(5000L))
404*55e87721SMatt Gilbride				.setInitialRpcTimeout(Duration.ZERO) // ignored
405*55e87721SMatt Gilbride				.setRpcTimeoutMultiplier(1.0) // ignored
406*55e87721SMatt Gilbride				.setMaxRpcTimeout(Duration.ZERO) // ignored
407*55e87721SMatt Gilbride				.setTotalTimeout(Duration.ofHours(24L))	// set polling timeout to 24 hours
408*55e87721SMatt Gilbride				.build());
409*55e87721SMatt GilbridesettingsBuilder.createClusterOperationSettings()
410*55e87721SMatt Gilbride		.setPollingAlgorithm(timedRetryAlgorithm);
411*55e87721SMatt GilbrideClusterControllerClient clusterControllerClient = ClusterControllerClient.create(settingsBuilder.build());
412*55e87721SMatt Gilbride```
413*55e87721SMatt Gilbride
414*55e87721SMatt Gilbride## Managing Dependencies
415*55e87721SMatt Gilbride
416*55e87721SMatt GilbrideIf you are using more than one Google Cloud client library, we recommend you use one of
417*55e87721SMatt Gilbrideour Bill of Material (BOM) artifacts to help manage dependency versions. For more information,
418*55e87721SMatt Gilbridesee [Using the Cloud Client Libraries](https://cloud.google.com/java/docs/bom).
419*55e87721SMatt Gilbride
420*55e87721SMatt Gilbride## Java Versions
421*55e87721SMatt Gilbride
422*55e87721SMatt GilbrideJava 8 or above is required for using the clients in this repository.
423*55e87721SMatt Gilbride
424*55e87721SMatt Gilbride## Supported Platforms
425*55e87721SMatt Gilbride
426*55e87721SMatt GilbrideClients in this repository use either HTTP or gRPC for the transport layer. All
427*55e87721SMatt GilbrideHTTP-based clients should work in all environments.
428*55e87721SMatt Gilbride
429*55e87721SMatt GilbrideFor clients that use gRPC, the supported platforms are constrained by the platforms
430*55e87721SMatt Gilbridethat [Forked Tomcat Native](http://netty.io/wiki/forked-tomcat-native.html) supports,
431*55e87721SMatt Gilbridewhich for architectures means only x86_64, and for operating systems means Mac OS X,
432*55e87721SMatt GilbrideWindows, and Linux. Additionally, gRPC constrains the use of platforms with
433*55e87721SMatt Gilbridethreading restrictions.
434*55e87721SMatt Gilbride
435*55e87721SMatt GilbrideThus, the following are not supported:
436*55e87721SMatt Gilbride
437*55e87721SMatt Gilbride- Android
438*55e87721SMatt Gilbride    - Consider [Firebase](https://firebase.google.com), which includes many of these APIs.
439*55e87721SMatt Gilbride    - It is possible to use these libraries in many cases, although it is unsupported.
440*55e87721SMatt Gilbride      You can find examples, such as [this one](https://github.com/GoogleCloudPlatform/android-docs-samples/tree/main/speech/SpeechRecognitionClient),
441*55e87721SMatt Gilbride      in this [example repository](https://github.com/GoogleCloudPlatform/android-docs-samples) but consider the risks carefully before using these libraries in an application.
442*55e87721SMatt Gilbride- Raspberry Pi (since it runs on the ARM architecture)
443*55e87721SMatt Gilbride- Google App Engine Standard Java 7
444*55e87721SMatt Gilbride
445*55e87721SMatt GilbrideThe following environments should work (among others):
446*55e87721SMatt Gilbride
447*55e87721SMatt Gilbride- standalone Windows on x86_64
448*55e87721SMatt Gilbride- standalone Mac OS X on x86_64
449*55e87721SMatt Gilbride- standalone Linux on x86_64
450*55e87721SMatt Gilbride- Google Compute Engine (GCE)
451*55e87721SMatt Gilbride- Google Container Engine (GKE)
452*55e87721SMatt Gilbride- Google App Engine Standard Java 8 (GAE Std J8)
453*55e87721SMatt Gilbride- Google App Engine Flex (GAE Flex)
454*55e87721SMatt Gilbride- Alpine Linux (Java 11+)
455*55e87721SMatt Gilbride
456*55e87721SMatt Gilbride## Testing
457*55e87721SMatt Gilbride
458*55e87721SMatt GilbrideThis library provides tools to help write tests for code that uses google-cloud services.
459*55e87721SMatt Gilbride
460*55e87721SMatt GilbrideSee [TESTING] to read more about using our testing helpers.
461*55e87721SMatt Gilbride
462*55e87721SMatt Gilbride## Versioning
463*55e87721SMatt Gilbride
464*55e87721SMatt GilbrideThis library follows [Semantic Versioning](http://semver.org/), with some
465*55e87721SMatt Gilbrideadditional qualifications:
466*55e87721SMatt Gilbride
467*55e87721SMatt Gilbride1. Components marked with `@BetaApi` or `@Experimental` are considered to be "0.x"
468*55e87721SMatt Gilbride   features inside a "1.x" library. This means they can change between minor and
469*55e87721SMatt Gilbride   patch releases in incompatible ways. These features should not be used by any
470*55e87721SMatt Gilbride   library "B" that itself has consumers, unless the components of library B that
471*55e87721SMatt Gilbride   use `@BetaApi` features are also marked with `@BetaApi`. Features marked as
472*55e87721SMatt Gilbride   `@BetaApi` are on a path to eventually become "1.x" features with the marker
473*55e87721SMatt Gilbride   removed.
474*55e87721SMatt Gilbride
475*55e87721SMatt Gilbride   **Special exception for google-cloud-java**: google-cloud-java is
476*55e87721SMatt Gilbride   allowed to depend on `@BetaApi` features in gax-java without declaring the consuming
477*55e87721SMatt Gilbride   code `@BetaApi`, because gax-java and google-cloud-java move in step
478*55e87721SMatt Gilbride   with each other. For this reason, gax-java should not be used
479*55e87721SMatt Gilbride   independently of google-cloud-java.
480*55e87721SMatt Gilbride
481*55e87721SMatt Gilbride1. Components marked with `@InternalApi` are technically public, but only
482*55e87721SMatt Gilbride   because of the limitations of Java's access
483*55e87721SMatt Gilbride   modifiers. For the purposes of semver, they should be considered private.
484*55e87721SMatt Gilbride
485*55e87721SMatt Gilbride1. Interfaces marked with `@InternalExtensionOnly` are public, but should only be
486*55e87721SMatt Gilbride   implemented by internal classes. For the purposes of semver, we reserve the right
487*55e87721SMatt Gilbride   to add to these interfaces without default implementations (for Java 7).
488*55e87721SMatt Gilbride
489*55e87721SMatt GilbridePlease note these clients are currently under active development. Any release versioned 0.x.y is
490*55e87721SMatt Gilbridesubject to backwards incompatible changes at any time.
491*55e87721SMatt Gilbride
492*55e87721SMatt Gilbride### Stable
493*55e87721SMatt Gilbride
494*55e87721SMatt GilbrideLibraries defined at a Stable quality level are expected to be stable and all updates in the
495*55e87721SMatt Gilbridelibraries are guaranteed to be backwards-compatible. Any backwards-incompatible changes will lead
496*55e87721SMatt Gilbrideto the major version increment (1.x.y -> 2.0.0).
497*55e87721SMatt Gilbride
498*55e87721SMatt Gilbride### Preview
499*55e87721SMatt Gilbride
500*55e87721SMatt GilbrideLibraries defined at a Preview quality level are still a work-in-progress and
501*55e87721SMatt Gilbrideare more likely to get backwards-incompatible updates. Additionally, it's possible for Preview
502*55e87721SMatt Gilbridelibraries to get deprecated and deleted before ever being promoted to Preview or Stable.
503*55e87721SMatt Gilbride
504*55e87721SMatt Gilbride## IDE Plugins
505*55e87721SMatt Gilbride
506*55e87721SMatt GilbrideIf you're using IntelliJ or Eclipse, you can add client libraries to your project using these IDE plugins:
507*55e87721SMatt Gilbride* [Cloud Tools for IntelliJ](https://cloud.google.com/tools/intellij/docs/client-libraries?utm_source=github&utm_medium=google-cloud-java&utm_campaign=ToolsforIntelliJ)
508*55e87721SMatt Gilbride* [Cloud Tools for Eclipse](https://cloud.google.com/eclipse/docs/libraries?utm_source=github&utm_medium=google-cloud-java&utm_campaign=ToolsforEclipse)
509*55e87721SMatt Gilbride
510*55e87721SMatt GilbrideBesides adding client libraries, the plugins provide additional functionality, such as service account
511*55e87721SMatt Gilbridekey management. Refer to the documentation for each plugin for more details.
512*55e87721SMatt Gilbride
513*55e87721SMatt GilbrideThese client libraries can be used on App Engine standard for Java 8 runtime and App Engine flexible
514*55e87721SMatt Gilbride(including the Compat runtime).  Most of the libraries do not work on the App Engine standard for Java 7
515*55e87721SMatt Gilbrideruntime. However, Datastore, Storage, and Bigquery should work.
516*55e87721SMatt Gilbride
517*55e87721SMatt Gilbride## Contributing
518*55e87721SMatt Gilbride
519*55e87721SMatt GilbrideContributions to this library are always welcome and highly encouraged.
520*55e87721SMatt Gilbride
521*55e87721SMatt GilbrideSee `google-cloud`'s [CONTRIBUTING] documentation and the [shared documentation](https://github.com/googleapis/google-cloud-common/blob/main/contributing/readme.md#how-to-contribute-to-gcloud) for more information on how to get started.
522*55e87721SMatt Gilbride
523*55e87721SMatt GilbridePlease note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See [Code of Conduct][code-of-conduct] for more information.
524*55e87721SMatt Gilbride
525*55e87721SMatt Gilbride## License
526*55e87721SMatt Gilbride
527*55e87721SMatt GilbrideApache 2.0 - See [LICENSE] for more information.
528*55e87721SMatt Gilbride
529*55e87721SMatt Gilbride[cloud-java]: https://cloud.google.com/java
530*55e87721SMatt Gilbride[stable-stability]: https://img.shields.io/badge/stability-stable-green
531*55e87721SMatt Gilbride[stable-description]: #stable
532*55e87721SMatt Gilbride[preview-stability]: https://img.shields.io/badge/stability-preview-yellow
533*55e87721SMatt Gilbride[preview-description]: #preview
534*55e87721SMatt Gilbride[google-api-java-client-services]: https://github.com/googleapis/google-api-java-client-services#supported-google-apis
535*55e87721SMatt Gilbride[CONTRIBUTING]:https://github.com/googleapis/google-cloud-java/blob/main/CONTRIBUTING.md
536*55e87721SMatt Gilbride[code-of-conduct]:https://github.com/googleapis/google-cloud-java/blob/main/CODE_OF_CONDUCT.md#contributor-code-of-conduct
537*55e87721SMatt Gilbride[LICENSE]: https://github.com/googleapis/google-cloud-java/blob/main/LICENSE
538*55e87721SMatt Gilbride[TESTING]: https://github.com/googleapis/google-cloud-java/blob/main/TESTING.md
539*55e87721SMatt Gilbride[cloud-platform]: https://cloud.google.com/
540*55e87721SMatt Gilbride[cloud-platform-docs]: https://cloud.google.com/docs/
541*55e87721SMatt Gilbride[client-lib-docs]: https://cloud.google.com/java/docs/reference
542