# `TypeSafeSDK.Models`
[🔗](https://github.com/nshkrdotcom/typesafe_sdk/blob/v0.4.0/lib/typesafe_sdk/models.ex#L1)

Models API resource and pure catalog helpers.

# `find`

```elixir
@spec find(
  [TypeSafeSDK.ModelMetadata.t()] | TypeSafeSDK.ListModelsResponse.t(),
  String.t()
) ::
  {:ok, TypeSafeSDK.ModelMetadata.t()} | {:error, TypeSafeSDK.Error.t()}
```

Find one model by exact identifier; no fuzzy or prefix matching is performed.

# `find!`

```elixir
@spec find!(
  [TypeSafeSDK.ModelMetadata.t()] | TypeSafeSDK.ListModelsResponse.t(),
  String.t()
) ::
  TypeSafeSDK.ModelMetadata.t()
```

Exact lookup that raises the SDK error on failure.

# `latest`

```elixir
@spec latest(
  [TypeSafeSDK.ModelMetadata.t()] | TypeSafeSDK.ListModelsResponse.t(),
  term()
) ::
  {:ok, TypeSafeSDK.ModelMetadata.t()} | {:error, TypeSafeSDK.Error.t()}
```

Select the objectively latest model by `release_date`.

`selector` may be `:all`, an exact model name, a keyword/map of exact model
fields, or a unary predicate. Invalid/missing release dates and ties fail
closed instead of falling back to lexical or provider-return order.

# `list`

```elixir
@spec list(TypeSafeSDK.Client.t(), keyword()) ::
  {:ok, TypeSafeSDK.ListModelsResponse.t()} | {:error, term()}
```

---

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