# AshGrant v0.17.0 - Table of Contents

Permission-based authorization extension for Ash Framework

## Pages

- [Home](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

- Guides
  - [Getting Started](getting-started.md)
  - [RBAC / ABAC / ReBAC / More](authorization-patterns.md)
  - [Permissions](permissions.md)
  - [Scopes](scopes.md)
  - [Field-Level Permissions](field-level-permissions.md)
  - [Scope Naming Convention](scope-naming-convention.md)
  - [Argument-Based Scope](argument-based-scope.md)
  - [Advanced Patterns](advanced-patterns.md)
  - [Checks &amp; Policies](checks-and-policies.md)
  - [Debugging &amp; Introspection](debugging-and-introspection.md)
  - [Public API Contract](public-api-contract.md)
  - [Policy Testing](policy-testing.md)
  - [Migration Guide](migration.md)

## Modules

- [AshGrant](AshGrant.md): Permission-based authorization extension for Ash Framework.
- [AshGrant.ArgumentAnalyzer](AshGrant.ArgumentAnalyzer.md): Compile-time analysis of which scopes reference which `^arg(...)` templates.
- [AshGrant.Calculation.CanPerform](AshGrant.Calculation.CanPerform.md): Ash calculation that produces per-record boolean values for UI visibility.
- [AshGrant.Changes.ResolveArgument](AshGrant.Changes.ResolveArgument.md): Runtime change that lazily populates an action argument from the record's
own relationships.
- [AshGrant.Check](AshGrant.Check.md): SimpleCheck for write and generic actions.
- [AshGrant.Domain](AshGrant.Domain.md): Domain-level extension for AshGrant.
- [AshGrant.Domain.Dsl](AshGrant.Domain.Dsl.md): DSL definition for the AshGrant domain-level extension.
- [AshGrant.Domain.Info](AshGrant.Domain.Info.md): Introspection helpers for AshGrant domain-level DSL configuration.
- [AshGrant.Dsl](AshGrant.Dsl.md): DSL definition for AshGrant extension.
- [AshGrant.Dsl.CanPerform](AshGrant.Dsl.CanPerform.md): Represents a can_perform entity in the AshGrant DSL.
- [AshGrant.Dsl.FieldGroup](AshGrant.Dsl.FieldGroup.md): Represents a field group definition in the AshGrant DSL.
- [AshGrant.Dsl.ResolveArgument](AshGrant.Dsl.ResolveArgument.md): Represents a `resolve_argument` declaration in the AshGrant DSL.
- [AshGrant.Dsl.Scope](AshGrant.Dsl.Scope.md): Represents a scope definition in the AshGrant DSL.
- [AshGrant.Dsl.ScopeThrough](AshGrant.Dsl.ScopeThrough.md): Represents a scope_through entity in the AshGrant DSL.
- [AshGrant.Evaluator](AshGrant.Evaluator.md): Permission evaluation with deny-wins semantics.
- [AshGrant.Explainer](AshGrant.Explainer.md): Provides detailed explanations of authorization decisions.
- [AshGrant.Explanation](AshGrant.Explanation.md): Represents a detailed explanation of an authorization decision.
- [AshGrant.ExprStringify](AshGrant.ExprStringify.md): Converts `Ash.Expr` terms and scope filter values into human-readable,
LLM-friendly strings.
- [AshGrant.FieldCheck](AshGrant.FieldCheck.md): SimpleCheck for field-level authorization within Ash's `field_policies`.
- [AshGrant.FieldFilterCheck](AshGrant.FieldFilterCheck.md): Per-record field-group visibility check (issue #117 phase ②).
- [AshGrant.FilterCheck](AshGrant.FilterCheck.md): FilterCheck for read actions.
- [AshGrant.Info](AshGrant.Info.md): Introspection helpers for AshGrant DSL configuration.
- [AshGrant.Introspect](AshGrant.Introspect.md): Permission introspection helpers for various use cases.
- [AshGrant.Permission](AshGrant.Permission.md): Permission struct with parsing and matching capabilities.
- [AshGrant.PermissionInput](AshGrant.PermissionInput.md): Permission input struct with optional metadata for debugging and explain functionality.
- [AshGrant.PermissionResolver](AshGrant.PermissionResolver.md): Behaviour for resolving permissions from an actor.
- [AshGrant.PermissionValidation](AshGrant.PermissionValidation.md): Validates resolved actor permissions and signals invalid combinations.
- [AshGrant.Permissionable](AshGrant.Permissionable.md): Protocol for converting values to `AshGrant.PermissionInput` structs.
- [AshGrant.PolicyExport](AshGrant.PolicyExport.md): Exports policy configuration to various documentation formats.
- [AshGrant.PolicyExport.Markdown](AshGrant.PolicyExport.Markdown.md): Generates Markdown documentation for policy configuration.
- [AshGrant.PolicyExport.Mermaid](AshGrant.PolicyExport.Mermaid.md): Generates Mermaid flowchart diagrams for policy visualization.
- [AshGrant.PolicyTest](AshGrant.PolicyTest.md): DSL-based policy configuration testing for AshGrant.
- [AshGrant.PolicyTest.Assertions](AshGrant.PolicyTest.Assertions.md): Assertion macros for policy tests.
- [AshGrant.PolicyTest.Dsl](AshGrant.PolicyTest.Dsl.md): DSL macros for defining policy tests.
- [AshGrant.PolicyTest.DslGenerator](AshGrant.PolicyTest.DslGenerator.md): Generates Elixir DSL code from YAML policy test files.
- [AshGrant.PolicyTest.Result](AshGrant.PolicyTest.Result.md): Represents the result of a single policy test execution.
- [AshGrant.PolicyTest.Runner](AshGrant.PolicyTest.Runner.md): Executes policy tests and collects results.
- [AshGrant.PolicyTest.YamlExporter](AshGrant.PolicyTest.YamlExporter.md): Exports policy test modules to YAML format.
- [AshGrant.PolicyTest.YamlParser](AshGrant.PolicyTest.YamlParser.md): Parses YAML policy test files and runs them.
- [AshGrant.Preparations.ApplyMasking](AshGrant.Preparations.ApplyMasking.md): Ash Resource Preparation that applies field masking to read results.
- [AshGrant.ScopeResolver](AshGrant.ScopeResolver.md): Behaviour for resolving scopes to filter expressions.
- [AshGrant.Transformers.AddArgumentResolvers](AshGrant.Transformers.AddArgumentResolvers.md): Spark DSL transformer that wires up `resolve_argument` declarations.
- [AshGrant.Transformers.AddCanPerformCalculations](AshGrant.Transformers.AddCanPerformCalculations.md): Spark DSL transformer that generates CanPerform calculations from DSL entities.
- [AshGrant.Transformers.AddDefaultPolicies](AshGrant.Transformers.AddDefaultPolicies.md): Spark DSL transformer that auto-generates policies when `default_policies` is enabled.
- [AshGrant.Transformers.AddFieldPolicies](AshGrant.Transformers.AddFieldPolicies.md): Auto-generates Ash `field_policies` from `field_group` definitions.
- [AshGrant.Transformers.AddMaskingPreparation](AshGrant.Transformers.AddMaskingPreparation.md): Adds the masking preparation to resources that have field groups with masking.
- [AshGrant.Transformers.MergeDomainConfig](AshGrant.Transformers.MergeDomainConfig.md): Spark DSL transformer that merges domain-level AshGrant configuration into resources.
- [AshGrant.Transformers.ResolveFieldGroupFields](AshGrant.Transformers.ResolveFieldGroupFields.md): Resolves `:all` and deprecated `[:*]` wildcard in field group `fields` to concrete attribute names.
- [AshGrant.Transformers.ValidateFieldGroups](AshGrant.Transformers.ValidateFieldGroups.md): Validates field group definitions at compile time.
- [AshGrant.Transformers.ValidateResolverPresent](AshGrant.Transformers.ValidateResolverPresent.md): Spark DSL transformer that validates a resolver is present after domain merge.
- [AshGrant.Transformers.ValidateScopeThroughs](AshGrant.Transformers.ValidateScopeThroughs.md): Spark DSL transformer that validates scope_through entities at compile time.
- [AshGrant.Transformers.ValidateScopes](AshGrant.Transformers.ValidateScopes.md): Spark DSL transformer that validates scope definitions at compile time.

- Exceptions
  - [AshGrant.PermissionValidation.InvalidPermissionError](AshGrant.PermissionValidation.InvalidPermissionError.md): Raised in `:strict` mode when an actor's permissions contain a deny rule that
carries a field_group — an invalid combination. See `AshGrant.PermissionValidation`.

  - [AshGrant.PolicyTest.AssertionError](AshGrant.PolicyTest.AssertionError.md): Error raised when a policy test assertion fails.

## Mix Tasks

- [mix ash_grant.explain](Mix.Tasks.AshGrant.Explain.md): Explains an AshGrant access decision from the command line.
- [mix ash_grant.export](Mix.Tasks.AshGrant.Export.md): Exports policy configuration to various formats.
- [mix ash_grant.import](Mix.Tasks.AshGrant.Import.md): Imports YAML policy tests and generates Elixir DSL code.
- [mix ash_grant.verify](Mix.Tasks.AshGrant.Verify.md): Runs policy configuration tests.

