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

Main pipeline for generating an `%Ash.Info.Manifest{}` from an OTP app's Ash domains.

Pipeline:
1. Discover domains and resources
2. Optionally filter to specified actions
3. Run reachability analysis
4. Build resource and type structs
5. Produce `%Ash.Info.Manifest{}`

# `generate`

```elixir
@spec generate(keyword()) :: {:ok, Ash.Info.Manifest.t()} | {:error, term()}
```

Generate an API specification.

## Options

  * `:otp_app` - The OTP app to scan (required)
  * `:action_entrypoints` - Optional list of action entrypoints. Each entry can be:
    * `{resource_module, action_name}` — simple tuple (config defaults to `%{}`)
    * `%{resource: module, action: atom, config: map}` — with extension-specific config
    When omitted, all actions across all domains are included.
  * `:overrides` - Optional keyword list of overrides:
    * `:always` - Keyword list of items to always include regardless of reachability:
      * `:resources` - List of resource modules. These are added as reachability roots
        (with no action arguments traversed) so their field types and relationships
        are also discovered.
      * `:types` - List of Ash type modules to include as standalone types directly.

## Visibility Options

By default, only items with `public?: true` are included. Set any of these to `true`
to also include private items:

  * `:include_private_attributes?` - Include private attributes (default: `false`)
  * `:include_private_calculations?` - Include private calculations (default: `false`)
  * `:include_private_aggregates?` - Include private aggregates (default: `false`)
  * `:include_private_relationships?` - Include private relationships (default: `false`)
  * `:include_private_arguments?` - Include private action arguments (default: `false`)
  * `:include_private_actions?` - Include private actions (default: `false`).
    Private actions (`public? false`) are omitted from `entrypoints` even
    when explicitly named in `:action_entrypoints`.

---

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