Main pipeline for generating an %Ash.Info.Manifest{} from an OTP app's Ash domains.
Pipeline:
- Discover domains and resources
- Optionally filter to specified actions
- Run reachability analysis
- Build resource and type structs
- Produce
%Ash.Info.Manifest{}
Summary
Functions
Generate an API specification.
Functions
@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 fromentrypointseven when explicitly named in:action_entrypoints.
Enforcement Options
:enforce_public_accept?- Whentrue(default), raisesAsh.Info.Manifest.Error.NonPublicAcceptif any action entrypoint's accept list contains non-public attributes. Set tofalseto disable this check (e.g. for extensions that intentionally expose private attributes to internal callers).