# `Selecto.Domain.Choices.Request`

Stable choice-source membership question shape.

A request describes the working-domain field/value being checked, the choice
source it is bound to, any actor, tenant, record, or context data a future
resolver needs to prove membership, and the server-owned Domain-of-Interest
filter bundle that constrains the choice.

# `t`

```elixir
@type t() :: %Selecto.Domain.Choices.Request{
  actor: term(),
  choice_source: atom() | String.t(),
  choice_source_config: map(),
  constraint_filters: map(),
  constraint_policy: map(),
  context: map(),
  domain: atom() | String.t() | nil,
  field: atom() | String.t(),
  field_binding: map(),
  filters: [term()],
  metadata: map(),
  record: map(),
  reference: map(),
  source_relationship: atom() | String.t() | nil,
  source_relationship_config: map() | nil,
  tenant: term(),
  value: term()
}
```

# `new`

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

Builds a request from atom-keyed or string-keyed map/keyword attributes.

---

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