# `CliSubprocessCore.ModelRegistry.Model`
[🔗](https://github.com/nshkrdotcom/cli_subprocess_core/blob/v0.1.0/lib/cli_subprocess_core/model_registry/model.ex#L1)

Canonical model metadata loaded by `CliSubprocessCore.ModelRegistry`.

# `t`

```elixir
@type t() :: %CliSubprocessCore.ModelRegistry.Model{
  aliases: [String.t()],
  catalog_version: String.t() | nil,
  default: boolean(),
  default_reasoning_effort: String.t() | nil,
  extra: map(),
  family: String.t() | nil,
  id: String.t(),
  metadata: map(),
  provider: atom(),
  reasoning_efforts: %{required(String.t()) =&gt; number() | nil},
  visibility: visibility()
}
```

# `visibility`

```elixir
@type visibility() :: :public | :private | :internal | :restricted
```

# `matches_id_or_alias?`

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

# `new`

```elixir
@spec new(atom(), map()) ::
  {:ok, t()} | {:error, {:model_unavailable, atom(), term()}}
```

# `parse`

```elixir
@spec parse(atom(), keyword() | map()) ::
  {:ok, t()} | {:error, {:model_unavailable, atom(), term()}}
```

# `resolve_id`

```elixir
@spec resolve_id(t(), String.t()) :: {:ok, String.t()} | :error
```

# `schema`

```elixir
@spec schema() :: Zoi.schema()
```

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

---

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