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

Represents a resource action in the API specification.

`inputs` is the unified list of action inputs — action arguments and any
attributes the action accepts are normalized into a single list of
`%Ash.Info.Manifest.Argument{}` entries. Each entry's `allow_nil?` and
`has_default?` reflect the action's effective semantics (e.g. an accepted
attribute named in `require_attributes` will have `allow_nil?: false`; one
named in `allow_nil_input` will have `allow_nil?: true`).

# `action_type`

```elixir
@type action_type() :: :read | :create | :update | :destroy | :action
```

# `t`

```elixir
@type t() :: %Ash.Info.Manifest.Action{
  custom: map(),
  description: String.t() | nil,
  get?: boolean(),
  inputs: [Ash.Info.Manifest.Argument.t()],
  metadata: [Ash.Info.Manifest.Metadata.t()],
  name: atom(),
  pagination: Ash.Info.Manifest.Pagination.t() | nil,
  primary?: boolean(),
  returns: Ash.Info.Manifest.Type.t() | nil,
  type: action_type()
}
```

---

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