# `TypeSafeSDK.Question`
[🔗](https://github.com/nshkrdotcom/typesafe_sdk/blob/v0.4.1/lib/typesafe_sdk/question.ex#L1)

Question validation and legacy wire normalization. Strict evaluation uses `TypeSafeSDK.Prepared`.

# `t`

```elixir
@type t() ::
  TypeSafeSDK.Noul.t() | TypeSafeSDK.Choice.t() | TypeSafeSDK.Score.t() | map()
```

# `normalize_questions`

```elixir
@spec normalize_questions(map()) :: {:ok, map()} | {:error, TypeSafeSDK.Error.t()}
```

# `validate`

```elixir
@spec validate(term()) :: :ok | {:error, TypeSafeSDK.Error.t()}
```

Validates one question with strict semantic rules, without sending HTTP.

# `validate!`

```elixir
@spec validate!(term()) :: term()
```

Validates and returns the question, or raises a path-aware SDK error.

---

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