# `ADK.Auth.CredentialStore`
[🔗](https://github.com/zeroasterisk/adk-elixir/blob/main/lib/adk/auth/credential_store.ex#L1)

Behaviour for pluggable credential storage backends.

Mirrors Python ADK's `BaseCredentialService`. Implementations store and
retrieve credentials keyed by a credential name (typically the tool or
service name).

## Implementing a Custom Store

    defmodule MyApp.VaultStore do
      @behaviour ADK.Auth.CredentialStore

      @impl true
      def get(name, _opts), do: Vault.read(name)

      @impl true
      def put(name, credential, _opts), do: Vault.write(name, credential)

      @impl true
      def delete(name, _opts), do: Vault.delete(name)
    end

# `name`

```elixir
@type name() :: String.t()
```

# `delete`

```elixir
@callback delete(
  name(),
  keyword()
) :: :ok | {:error, term()}
```

Delete a credential by name.

# `get`

```elixir
@callback get(
  name(),
  keyword()
) :: {:ok, ADK.Auth.Credential.t()} | :not_found | {:error, term()}
```

Retrieve a credential by name.

# `put`

```elixir
@callback put(name(), ADK.Auth.Credential.t(), keyword()) :: :ok | {:error, term()}
```

Store a credential under a name.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
