# `Ash.Info.Manifest.Operator`
[🔗](https://github.com/ash-project/ash/blob/v3.25.2/lib/ash/info/manifest/operator.ex#L5)

Represents a single operator in the filter capabilities catalog.

Built from `Ash.Filter.builtin_operators/0`.

## Canonical name vs. aliases

`name` is the **user-facing operator symbol** — the spelling that appears
in `Ash.Query.filter` expressions and that extensions should render to
clients (e.g. `:==`, `:<`, `:in`, `:is_nil`).

`aliases` carries the legacy/module-derived spellings (e.g. `:eq`,
`:less_than`). New consumers should key off `name`. Tools that already
render the module-derived names (e.g. some historical ash_graphql input
shapes) can substitute via aliases for backward compatibility.

Each per-field `%Ash.Info.Manifest.ApplicableOperator{}` records `name` (the
canonical symbol), not an alias. Consumers look up the full operator
definition via `Ash.Info.Manifest.operator_lookup/1`.

# `t`

```elixir
@type t() :: %Ash.Info.Manifest.Operator{
  aliases: [atom()],
  custom: map(),
  description: String.t() | nil,
  module: module(),
  name: atom(),
  predicate?: boolean(),
  returns: Ash.Info.Manifest.ArgumentSignature.arg_spec() | :unknown,
  signatures: [Ash.Info.Manifest.ArgumentSignature.t()]
}
```

---

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