Ash.Info.Manifest.Generator (ash v3.25.1)

Copy Markdown View Source

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{}

Summary

Functions

Generate an API specification.

Functions

generate(opts)

@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.