# GoogleSecretStore API

Secret store backed by Google Secret Manager.

---
Canonical: /handbook/api/classes/_purista_gcloud-secret-store.GoogleSecretStore/
Source: gcloud-secret-store/src/GoogleSecretStore.impl.ts
Format: Markdown for agents
---

Secret store backed by Google Secret Manager.

Package: `@purista/gcloud-secret-store`

## Signature

```typescript
class GoogleSecretStore
```

## Examples

```typescript
const store = new GoogleSecretStore({
  project: 'projects/example-project',
  cacheTtl: 30_000,
})

await store.setSecret('acme-prod-payments-api-token', 'placeholder-secret')
const secret = await store.getSecret('acme-prod-payments-api-token')
```

## Members

### Constructors

- `new constructor(config: { cacheTtl: number; client: ClientOptions; enableCache: boolean; enableGet: boolean; enableRemove: boolean; enableSet: boolean; ... })` — Creates a Google Secret Manager-backed secret store.

### Properties

- `cache: SecretStoreCacheMap` — Optional in-memory cache of secret values.
- `client: SecretManagerServiceClient` — Google Secret Manager client used for secret operations.
- `config: { cacheTtl: number; client: ClientOptions; enableCache: boolean; enableGet: boolean; enableRemove: boolean; enableSet: boolean; ... }` — Store configuration including operation toggles and cache settings.
- `logger: Logger` — Child logger scoped to the store name.
- `name: string` — Store name used in logs and diagnostics.

### Methods

- `destroy(): Promise<void>` — Shutdown hook for store adapters.
- `getSecret<SecretNames>(...secretNames: SecretNames): Promise<ObjectWithKeysFromStringArray<SecretNames, string | undefined>>` — Get one or more secrets by name.
- `getSecretImpl<SecretNames>(...secretNames: SecretNames): Promise<ObjectWithKeysFromStringArray<SecretNames, string | undefined>>` — Adapter-specific secret lookup implementation.
- `removeSecret(secretName: string): Promise<void>` — Remove one secret by name.
- `removeSecretImpl(secretName: string): Promise<void>` — Removes a secret resource from Google Secret Manager.
- `setSecret(secretName: string, secretValue: string): Promise<void>` — Store or replace one secret value.
- `setSecretImpl(secretName: string, secretValue: string): Promise<void>` — Adds a new secret version, creating the secret resource first when needed.
