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

Represents a single function in the filter capabilities catalog.

Built from `Ash.Filter.builtin_functions/0` and from the `functions/1`
callback of each data layer reachable from the manifest's resources.

`signatures` may be the atom `:var_args` for functions that accept arbitrary
arity (e.g. `fragment`).

`data_layer_module` is `nil` for Ash builtins and a module atom for entries
sourced from a specific data layer (e.g. `AshPostgres.DataLayer`).
Consumers can use it to intersect a resource's data layer against the
catalog when deciding which functions to render for that resource.

# `t`

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

---

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