# `StatifierUI.Trace.Projection.Profile`
[🔗](https://github.com/riddler/statifier-ui/blob/v0.11.0/lib/statifier_ui/trace/projection.ex#L134)

A named projection profile: the two allowlists plus `allow_source`.

Built through `StatifierUI.Trace.Projection.profile/2`, which validates
the shapes rather than letting a malformed allowlist silently allow or
deny more than the host meant. Profiles are a producer input; where a
host stores them and how it picks one per tenant is host business.

# `position`

```elixir
@type position() ::
  :event_data
  | :log_value
  | :send_data
  | :invoke_params
  | :invoke_content
  | :donedata
```

An unlocated value position, from the closed set `StatifierUI.Trace.Projection.positions/0` returns.

# `segment`

```elixir
@type segment() :: String.t() | integer()
```

One segment of a datamodel location path: an object key or an array index.

# `t`

```elixir
@type t() :: %StatifierUI.Trace.Projection.Profile{
  allow_paths: [[segment()]],
  allow_positions: MapSet.t(position()),
  allow_source: boolean(),
  name: String.t()
}
```

---

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