canonical: https://jentic.com/apis/googleapis.com/public-certificate-authority

# Google Public Certificate Authority API

The Google Public Certificate Authority API creates and manages ACME External Account Binding (EAB) keys associated with Google Trust Services, the publicly trusted CA operated by Google. EAB keys let an ACME client tie its account to a specific Google Cloud project so it can request publicly trusted TLS certificates from Google Trust Services through any RFC 8555 ACME workflow. The API surface is intentionally minimal - its single endpoint mints the EAB key material that downstream ACME clients consume.

## For AI agents

Mint ACME External Account Binding keys that authorize ACME clients to request publicly trusted TLS certificates from Google Trust Services.

## Scope

Does not issue certificates directly, manage ACME orders, or operate private CAs - use only to mint ACME External Account Binding keys for Google Trust Services.

## Capabilities

- Create ACME external account binding keys scoped to a Google Cloud project
- Tie ACME account registration to a Google Cloud project for billing and quota tracking
- Authorize automated certificate issuance from Google Trust Services through standard ACME clients
- Enable certbot, lego, acme.sh, and other ACME clients to use Google Trust Services as their CA
- Provision EAB keys on demand from CI pipelines or infrastructure-as-code workflows

## Use cases

### Public TLS via ACME with Google Trust Services

Configure an ACME client such as certbot, lego, or acme.sh to request publicly trusted TLS certificates from Google Trust Services. The Public CA API mints the EAB key material the client uses during account registration, after which all certificate issuance happens through the standard ACME flow.

Example prompt: Call POST /v1/{+parent}/externalAccountKeys with parent projects/my-project/locations/global, then pass the returned keyId and b64MacKey to certbot via --eab-kid and --eab-hmac-key.

### Automated Certificate Renewal in CI

Wire EAB key creation into infrastructure-as-code or CI pipelines so a new account-bound ACME identity is provisioned on demand, then used to renew certificates for managed domains. This avoids hard-coding EAB keys in version control and lets renewal pipelines stay self-contained.

Example prompt: Mint a fresh EAB key in CI, register a new ACME account against acme-v02.api.pki.goog, and use it to issue a wildcard certificate for *.example.com.

### Multi-Tenant Certificate Provisioning

Platforms that issue certificates on behalf of customer domains can mint per-tenant EAB keys so each tenant's certificate issuance traces back to a distinct ACME account, simplifying revocation and audit. The Public CA API issues these EAB keys in a single, schema-stable call.

Example prompt: For each new tenant, mint an EAB key under projects/platform/locations/global and store the keyId and b64MacKey in the tenant's secret bundle for ACME use.

### Agent-Driven Certificate Bootstrapping

An infrastructure agent uses Jentic to obtain an EAB key, register an ACME account, and request a publicly trusted certificate when bringing up a new service domain, all without human intervention or copy-pasted EAB credentials.

Example prompt: Search Jentic for create acme external account binding key, load the schema, and execute it for the agent's deployment project to bootstrap ACME registration.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1/{+parent}/externalAccountKeys | Create an ACME external account binding key for the given project and location |

## Key resources

- **externalAccountKeys** — ACME EAB keys minted under a Google Cloud project for use with Google Trust Services

## Why Jentic

- **Setup:** Wiring the Public Certificate Authority API by hand means setting up Google OAuth 2.0, refreshing scoped access tokens, and formatting the parent resource name for the single external account key endpoint on publicca.googleapis.com. Through Jentic you install once, import the Public Certificate Authority API from the API Directory, store the OAuth credential once, and your agent calls it.
- **Permission scoping:** This API puts the parent project in the URL path (/v1/{+parent}/externalAccountKeys), so a rule can pin your agent to one project: it can create external account binding keys there and nothing else. Because this is the only operation the API exposes, that is the full extent of what a rule needs to allow.
- **Credential handling:** Your Google OAuth credential is stored once, encrypted, by your own Jentic One instance and a scoped access token is injected at execution time. The credential never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create an ACME external account binding key', and Jentic returns the single Public Certificate Authority operation with its input schema so the agent calls the right endpoint without reading Google's discovery document for a one-endpoint API.

## Related APIs

- **Certificate Authority API** — Issues private CA certificates instead of publicly trusted ones
- **Cloud DNS API** — Manages DNS records used to satisfy ACME DNS-01 challenges
- **Secret Manager API** — Stores EAB key material and issued certificates securely

## FAQ

### What authentication does the Public CA API use?

The API uses Google OAuth 2.0 with the cloud-platform scope, sent as a Bearer token. Through Jentic the OAuth client and refresh token live in the vault and only short-lived access tokens are injected at call time, so the underlying credentials never enter the agent context.

### What does the Public CA API actually issue?

It does not issue certificates directly - it issues ACME External Account Binding (EAB) keys that you then plug into a standard ACME client. The ACME client uses those EAB credentials when registering an account with Google Trust Services, and certificates are issued through the normal ACME challenge and finalize flow.

### How do I create an EAB key through Jentic?

Search Jentic for create acme external account binding key, load the schema for projects.locations.externalAccountKeys.create which maps to POST /v1/{+parent}/externalAccountKeys, and execute it with parent set to projects/your-project/locations/global. The response contains the keyId and base64-encoded HMAC key your ACME client needs.

### What are the rate limits for the Public CA API?

Per-project EAB key creation quotas are documented on Google's Public CA quotas page and are typically modest because each key supports many subsequent ACME issuances. Plan to mint a small number of EAB keys and reuse them across many certificate orders.

### Is the Public CA API free?

Calling the API itself does not incur a charge, and certificates issued by Google Trust Services through ACME are free to issue under standard terms. Standard Google Cloud quotas and acceptable use policies apply.

### Can I use this with certbot or lego?

Yes, any RFC 8555 compliant ACME client that supports External Account Binding can be configured to use Google Trust Services. Pass the keyId and b64MacKey returned by this API as the EAB credentials, and point the client at the Google Trust Services ACME directory.

### Can I limit what my agent is allowed to do with the Public Certificate Authority API?

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use, and this API exposes only one operation: creating ACME External Account Binding keys under a Google Cloud project. Since the project is set in the URL path (/v1/{+parent}/externalAccountKeys), your rule can pin the agent to a single project so it can mint EAB keys there and nothing else. That single scope covers the full extent of what this API can do.
