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

Represents an action argument or calculation argument in the API specification.

`allow_nil?` and `has_default?` describe the shape of the value once supplied
(whether `nil` is a permitted value, and whether a default exists). `required?`
is orthogonal and describes input presence: whether a caller must supply this
argument at all. A field can be required-to-provide but nullable, or optional-
to-provide but non-null when provided — so consumers generating input types
should look at `required?` to decide optionality.

# `t`

```elixir
@type t() :: %Ash.Info.Manifest.Argument{
  allow_nil?: boolean(),
  custom: map(),
  description: String.t() | nil,
  has_default?: boolean(),
  name: atom(),
  required?: boolean(),
  sensitive?: boolean(),
  type: Ash.Info.Manifest.Type.t()
}
```

---

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