# `Pixir.Providers.Registry`
[🔗](https://github.com/Ranvier-Technologies/pixir/blob/main/lib/pixir/providers/registry.ex#L1)

Provider catalog and routing metadata for Pixir provider dialects.

# `entry`

```elixir
@type entry() :: %{
  provider: module(),
  default_model: String.t(),
  models: [map()],
  auth: %{
    env_var: String.t(),
    scheme: :oauth_or_api_key | :api_key_header,
    login_supported: boolean()
  },
  capabilities: %{
    reasoning_dialect: nil | String.t(),
    prompt_cache: :prompt_cache_key | :cache_control,
    prompt_contract_version: nil | String.t(),
    tool_dialect: :responses | :anthropic,
    hosted_tools: boolean()
  }
}
```

# `entry_for`

```elixir
@spec entry_for(module()) :: entry()
```

Resolve a provider module to its registry entry. Unknown modules use OpenAI defaults.

# `model_supported?`

```elixir
@spec model_supported?(String.t()) :: boolean()
```

Whether `model_id` is in the merged provider catalog.

# `models`

```elixir
@spec models(keyword()) :: [map()]
```

Merged provider model catalog advertised by ACP.

# `resolve`

```elixir
@spec resolve(String.t() | nil) :: entry()
```

Resolve a model id to the provider entry that owns its dialect.

# `resolve_request`

```elixir
@spec resolve_request(
  map(),
  keyword()
) :: {:ok, Pixir.Providers.ResolvedProviderRequest.t()} | {:error, map()}
```

Resolve one immutable Provider request selection from one Config snapshot.

---

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