# `Latch.Config`

The internal configuration that drives the library.

## Fields
  * `:store` - a module implementing `Latch.Store`
  * `:name` - the name of the Latch instance
  * `:mode` - `:confidential`, `:public`, or `:localhost`
  * `:redirect_uri_path` - the OAuth callback path
  * `:scope` - the requsted scopes
  * `:client_id_path` - the path of the published client metadata document
  * `:signing_key` - the JSON-encoded ES256 private JWK for `private_key_jwt` as string
  * `:client_name` - shown on the authorization consent screen
  * `:client_uri` - client home page
  * `:base_url_fun` - function to build the base URL for `redirect_uri` and `client_id`, because the host is frequently only known at runtime.

# `mode`

```elixir
@type mode() :: :confidential | :public | :localhost
```

# `t`

```elixir
@type t() :: %Latch.Config{
  base_url_fun: (-&gt; String.t()),
  client_id_path: String.t() | nil,
  client_name: String.t() | nil,
  client_uri: String.t() | nil,
  mode: mode(),
  name: atom() | pid(),
  redirect_uri_path: String.t(),
  request_ttl: non_neg_integer(),
  scope: String.t(),
  signing_key: map() | nil,
  store: module()
}
```

# `client_id`

# `confidential?`

# `localhost?`

# `redirect_uri`

---

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