# `Latch.ClientMetadata`

Client metadata document for atproto OAuth.

Served at the `client_id` URL. Authorization servers fetch it to discover
redirect URIs, scopes, and the client's public signing key.

# `t`

```elixir
@type t() :: map()
```

# `build`

```elixir
@spec build(keyword()) :: t()
```

Builds the client metadata document as a JSON-serializable map.

## Options
- `:client_id` (required) - full URL of the metadata document itself
- `:redirect_uris` (required) - list of callback URLs
- `:scope` (required) - space-separated scopes, must include `atproto`
- `:jwk` (required) - client signing key, only the public part is published
- `:client_name` (optional)
- `:client_uri` (optional) - must share the `client_id` hostname
- `:mode` - `:confidential`, `:public` or `:localhost`

---

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