# `Sake.Context`
[🔗](https://github.com/hattoriai/sake/blob/v0.4.0/lib/sake/context.ex#L1)

What a component learns about the request it serves.

`scope` is the host's principal (the current user, organization, or
anything the host puts there); `token` and `scopes` are set when the
endpoint has authorization; `inputs` holds the client's answers
(elicitation, sampling, roots) on a retry; `progress` reports progress
to the client when it asked for it; `task` is the task ID when the
component runs as a task (see `Sake.Tasks`); `assigns` holds what the
server's middleware decided for this request (see `Sake.Middleware`).

# `t`

```elixir
@type t() :: %Sake.Context{
  assigns: term(),
  client_capabilities: term(),
  client_info: term(),
  conn_assigns: term(),
  era: term(),
  inputs: term(),
  log_level: term(),
  method: term(),
  progress: term(),
  protocol_version: term(),
  request_id: term(),
  reraise: term(),
  scope: term(),
  scopes: term(),
  secret: term(),
  server: term(),
  task: term(),
  token: term(),
  trace: term(),
  transport: term()
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

---

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