# ash v3.24.7 - Table of Contents

A declarative, extensible framework for building Elixir applications.

## GUIDES

- [Home](readme.md)

- Start Here
  - [Get Started](get-started.md)

- About Ash
  - [What is Ash?](what-is-ash.md)
  - [Design Principles](design-principles.md)
  - [Contributing to Ash](contributing.md)
  - [Alternatives](alternatives.md)
  - [Changelog](changelog.md)

- Development
  - [Project Structure](project-structure.md)
  - [Working with LLMs](working-with-llms.md)
  - [Generators](generators.md)
  - [Error Handling](error-handling.md)
  - [Testing](testing.md)
  - [Development Utilities](development-utilities.md)
  - [Backwards Compatibility Config](backwards-compatibility-config.md)
  - [Upgrade](upgrading-to-3-0.md)

- Reference
  - [Ash.Resource](dsl-ash-resource.md)
  - [Ash.Domain](dsl-ash-domain.md)
  - [Ash.Notifier.PubSub](dsl-ash-notifier-pubsub.md)
  - [Ash.Policy.Authorizer](dsl-ash-policy-authorizer.md)
  - [Ash.DataLayer.Ets](dsl-ash-datalayer-ets.md)
  - [Ash.DataLayer.Mnesia](dsl-ash-datalayer-mnesia.md)
  - [Ash.Reactor](dsl-ash-reactor.md)
  - [Ash.TypedStruct](dsl-ash-typedstruct.md)
  - [Glossary](glossary.md)
  - [Expressions](expressions.md)

- Resources
  - [Domains](domains.md)
  - [Attributes](attributes.md)
  - [Relationships](relationships.md)
  - [Calculations](calculations.md)
  - [Aggregates](aggregates.md)
  - [Validations](validations.md)
  - [Changes](changes.md)
  - [Preparations](preparations.md)
  - [Code Interface](code-interfaces.md)
  - [Embedded Resources](embedded-resources.md)
  - [Identities](identities.md)
  - [Notifiers](notifiers.md)

- Actions
  - [Actions](actions.md)
  - [Read Actions](read-actions.md)
  - [Create Actions](create-actions.md)
  - [Update Actions](update-actions.md)
  - [Destroy Actions](destroy-actions.md)
  - [Generic Actions](generic-actions.md)
  - [Manual Actions](manual-actions.md)

- Security
  - [Actors &amp; Authorization](actors-and-authorization.md)
  - [Sensitive Data](sensitive-data.md)
  - [Policies](policies.md)

- Advanced
  - [Manual Installation](manual-installation.md)
  - [Multi-Step Actions](multi-step-actions.md)
  - [Reactor](reactor.md)
  - [Monitoring](monitoring.md)
  - [Pagination](pagination.md)
  - [Combination Queries](combination-queries.md)
  - [Timeouts](timeouts.md)
  - [Multitenancy](multitenancy.md)
  - [Writing Extensions](writing-extensions.md)

- How To
  - [Write Queries](write-queries.md)
  - [Define Polymorphic Relationships](polymorphic-relationships.md)
  - [Test Resources](test-resources.md)
  - [Authorize Access to Resources](authorize-access-to-resources.md)
  - [Encrypt Attributes](encrypt-attributes.md)
  - [Prevent concurrent writes](prevent-concurrent-writes.md)
  - [Wrap External APIs](wrap-external-apis.md)

- Moved
  - [Upgrade](upgrade.md)

## Modules

- Core API
  - [Ash](Ash.md): The primary interface to call actions and interact with resources.

  - [Ash.ActionInput](Ash.ActionInput.md): Input for a custom action
  - [Ash.Changeset](Ash.Changeset.md): Changesets are used to create and update data in Ash.
  - [Ash.Query](Ash.Query.md): A data structure for reading data from a resource.

- Resources
  - [Ash.CodeInterface](Ash.CodeInterface.md): Used to define the functions of a code interface for a resource.

  - [Ash.Domain](Ash.Domain.md): A domain allows you to interact with your resources, and holds domain-wide configuration.
  - [Ash.Notifier](Ash.Notifier.md): A notifier is an extension that receives various events

  - [Ash.Notifier.Notification](Ash.Notifier.Notification.md): Represents a notification that will be handled by a resource's notifiers
  - [Ash.Resource.Calculation](Ash.Resource.Calculation.md): The behaviour for defining a module calculation, and the struct for storing a defined calculation.

  - [Ash.Resource.Calculation.Builtins](Ash.Resource.Calculation.Builtins.md): Built in calculations that are automatically imported in the calculations section
  - [Ash.Resource.ManualCreate](Ash.Resource.ManualCreate.md): A module to implement manual create actions.

  - [Ash.Resource.ManualDestroy](Ash.Resource.ManualDestroy.md): A module to implement manual destroy actions.
  - [Ash.Resource.ManualRead](Ash.Resource.ManualRead.md): A module to implement manual read actions.

  - [Ash.Resource.ManualRelationship](Ash.Resource.ManualRelationship.md): A module to implement manual relationships.

  - [Ash.Resource.ManualUpdate](Ash.Resource.ManualUpdate.md): A module to implement manual update actions.

- Queries
  - [Ash.Query.Aggregate](Ash.Query.Aggregate.md): Represents an aggregated association value
  - [Ash.Query.Calculation](Ash.Query.Calculation.md): Represents a calculated attribute requested on a query
  - [Ash.Resource.Preparation](Ash.Resource.Preparation.md): The behaviour for an action-specific query preparation.
  - [Ash.Resource.Preparation.Builtins](Ash.Resource.Preparation.Builtins.md): Builtin query preparations

- Changes
  - [Ash.Resource.Change](Ash.Resource.Change.md): The behaviour for an action-specific resource change.
  - [Ash.Resource.Change.Builtins](Ash.Resource.Change.Builtins.md): Built in changes that are available to all resources

- Validations
  - [Ash.Resource.Validation](Ash.Resource.Validation.md): Represents a validation in Ash.
  - [Ash.Resource.Validation.Builtins](Ash.Resource.Validation.Builtins.md): Built in validations that are available to all resources

- Authorization
  - [Ash.Authorizer](Ash.Authorizer.md): The interface for an ash authorizer
  - [Ash.Policy.Check](Ash.Policy.Check.md): A behaviour for declaring checks, which can be used to easily construct
authorization rules.
  - [Ash.Policy.FilterCheck](Ash.Policy.FilterCheck.md): A type of check that is represented by a filter statement
  - [Ash.Policy.SimpleCheck](Ash.Policy.SimpleCheck.md): A type of check that operates only on request context, never on the data
  - [Ash.Policy.Check.Builtins](Ash.Policy.Check.Builtins.md): The global authorization checks built into ash

- Extensions
  - [Ash.DataLayer.Ets](Ash.DataLayer.Ets.md): An ETS (Erlang Term Storage) backed Ash Datalayer, for testing and lightweight usage.
  - [Ash.DataLayer.Mnesia](Ash.DataLayer.Mnesia.md): An Mnesia backed Ash Datalayer.
  - [Ash.DataLayer.Simple](Ash.DataLayer.Simple.md): A data layer that returns structs.
  - [Ash.Notifier.PubSub](Ash.Notifier.PubSub.md): A builtin notifier to help you publish events over any kind of pub-sub tooling.
  - [Ash.Policy.Authorizer](Ash.Policy.Authorizer.md): An authorization extension for ash resources.
  - [Ash.Reactor](Ash.Reactor.md): `Ash.Reactor` is a [`Reactor`](https://hex.pm/packages/reactor) extension
which provides steps for working with Ash resources and actions.
  - [Ash.Resource](Ash.Resource.md): A resource is a static definition of an entity in your system.

- Introspection
  - [Ash.DataLayer.Ets.Info](Ash.DataLayer.Ets.Info.md): Introspection helpers for the Ets data layer
  - [Ash.DataLayer.Mnesia.Info](Ash.DataLayer.Mnesia.Info.md): Introspection helpers for Ash.DataLayer.Mnesia
  - [Ash.Domain.Info](Ash.Domain.Info.md): Introspection tools for Ash.Domain
  - [Ash.Notifier.PubSub.Info](Ash.Notifier.PubSub.Info.md): Introspection helpers for Ash.Notifier.PubSub
  - [Ash.Policy.Info](Ash.Policy.Info.md): An authorization extension for ash resources.
  - [Ash.Resource.Info](Ash.Resource.Info.md): Introspection for resources
  - [Ash.TypedStruct.Info](Ash.TypedStruct.Info.md): Introspection for typed structs

- Visualizations
  - [Ash.Domain.Info.Diagram](Ash.Domain.Info.Diagram.md): Generate Mermaid diagrams from a specified domain.
  - [Ash.Domain.Info.Livebook](Ash.Domain.Info.Livebook.md): Generate a Livebook from a specified domain.

  - [Ash.Policy.Chart.Mermaid](Ash.Policy.Chart.Mermaid.md): Generates policy mermaid charts

- Testing
  - [Ash.Generator](Ash.Generator.md): Tools for generating input to Ash resource actions and for generating seed data.
  - [Ash.Seed](Ash.Seed.md): Helpers for seeding data, useful for quickly creating lots of data either for database seeding or testing.
  - [Ash.Test](Ash.Test.md): Testing helpers for Ash.

- Builtins
  - [Ash.Policy.Check.AccessingFrom](Ash.Policy.Check.AccessingFrom.md): This check is true when the current action is being run "through" a relationship.
  - [Ash.Policy.Check.Action](Ash.Policy.Check.Action.md): This check is true when the action name matches the provided action name.
  - [Ash.Policy.Check.ActionType](Ash.Policy.Check.ActionType.md): This check is true when the action type matches the provided type
  - [Ash.Policy.Check.ActorAbsent](Ash.Policy.Check.ActorAbsent.md): This check is true when the actor is `nil`, and false when the actor is specified.
  - [Ash.Policy.Check.ActorAttributeEquals](Ash.Policy.Check.ActorAttributeEquals.md): This check is true when the value of the specified attribute of the actor equals the specified value.
  - [Ash.Policy.Check.ActorPresent](Ash.Policy.Check.ActorPresent.md): This check is true when there is an actor specified, and false when the actor is `nil`.
  - [Ash.Policy.Check.ChangingAttributes](Ash.Policy.Check.ChangingAttributes.md): This check is true when attribute changes correspond to the provided options.
  - [Ash.Policy.Check.ChangingRelationships](Ash.Policy.Check.ChangingRelationships.md): This check is true when the specified relationship is changing
  - [Ash.Policy.Check.ContextEquals](Ash.Policy.Check.ContextEquals.md): This check is true when the value of the specified key or path in the changeset or query context equals the specified value.
  - [Ash.Policy.Check.Expression](Ash.Policy.Check.Expression.md): The check module used for `expr`s in policies
  - [Ash.Policy.Check.FilteringOn](Ash.Policy.Check.FilteringOn.md): This check is true when the field provided is being referenced anywhere in a filter statement.
  - [Ash.Policy.Check.Loading](Ash.Policy.Check.Loading.md): This check is true when the field or relationship, or path to field, is being loaded and false when it is not.
  - [Ash.Policy.Check.Matches](Ash.Policy.Check.Matches.md): This check is true when the specified function returns true
  - [Ash.Policy.Check.PrivateAction](Ash.Policy.Check.PrivateAction.md): This check is true when the current action is private (`public?: false`).
  - [Ash.Policy.Check.RelatesToActorVia](Ash.Policy.Check.RelatesToActorVia.md): This check passes if the data relates to the actor via the specified relationship or path of relationships.
  - [Ash.Policy.Check.RelatingToActor](Ash.Policy.Check.RelatingToActor.md): This check is true when the specified relationship is being changed to the current actor.
  - [Ash.Policy.Check.Resource](Ash.Policy.Check.Resource.md): This check is true when the resource matches the provided resource name or names.
  - [Ash.Policy.Check.Selecting](Ash.Policy.Check.Selecting.md): This check is true when the field is being selected and false when it is not.
  - [Ash.Policy.Check.Static](Ash.Policy.Check.Static.md): This check is always the result provided
  - [Ash.Resource.Change.AtomicSet](Ash.Resource.Change.AtomicSet.md): A change that sets an attribute using an expression evaluated in the data layer during create.
  - [Ash.Resource.Change.CascadeDestroy](Ash.Resource.Change.CascadeDestroy.md): Cascade a resource's destroy action to a related resource's destroy action.
  - [Ash.Resource.Change.CascadeUpdate](Ash.Resource.Change.CascadeUpdate.md): Cascade a resource's update action to a related resource's update action.
  - [Ash.Resource.Change.Context](Ash.Resource.Change.Context.md): The context for a change.
  - [Ash.Resource.Change.GetAndLock](Ash.Resource.Change.GetAndLock.md): Refetches the record being updated or destroyed, and locks it with the given type.

  - [Ash.Resource.Change.GetAndLockForUpdate](Ash.Resource.Change.GetAndLockForUpdate.md): Refetches the record being updated or destroyed, and locks it for update.

  - [Ash.Resource.Change.Increment](Ash.Resource.Change.Increment.md): Increments an attribute's value by the amount specified, which defaults to 1.

  - [Ash.Resource.Change.OptimisticLock](Ash.Resource.Change.OptimisticLock.md): Apply an "optimistic lock" on a record being updated or destroyed.
  - [Ash.Resource.Validation.ActionIs](Ash.Resource.Validation.ActionIs.md): Validates that the action is the specified action.
  - [Ash.Resource.Validation.Context](Ash.Resource.Validation.Context.md): Context for a validation.

  - [Ash.Resource.Validation.PreFlightAuthorization](Ash.Resource.Validation.PreFlightAuthorization.md): Validates that the action is being run in a pre-flight authorization context (i.e. `Ash.can?/3`).

- Tracing
  - [Ash.Tracer](Ash.Tracer.md): A behaviour for implementing tracing for an Ash application.

  - [Ash.Tracer.Simple](Ash.Tracer.Simple.md): A simple tracer that can send traces to the current process or call a module with the trace.

  - [Ash.Tracer.Simple.Span](Ash.Tracer.Simple.Span.md): A span produced by `Ash.Tracer.Simple`

- Utilities
  - [Ash.BulkResult](Ash.BulkResult.md): The return value for bulk actions.

  - [Ash.Changeset.ManagedRelationshipHelpers](Ash.Changeset.ManagedRelationshipHelpers.md): Tools for introspecting managed relationships.
  - [Ash.CiString](Ash.CiString.md): Represents a case insensitive string
  - [Ash.Expr](Ash.Expr.md): Tools to build Ash expressions
  - [Ash.Filter](Ash.Filter.md): The representation of a filter in Ash.
  - [Ash.Filter.Runtime](Ash.Filter.Runtime.md): Tools to checks a record to see if it matches a filter statement, or to
evaluate expressions against records.

  - [Ash.Filter.Simple](Ash.Filter.Simple.md): Represents a simplified filter, with a simple list of predicates
  - [Ash.Filter.Simple.Not](Ash.Filter.Simple.Not.md): A negated predicate
  - [Ash.ForbiddenField](Ash.ForbiddenField.md): Represents a field that was hidden due to authorization rules.
  - [Ash.Mix.Tasks.Helpers](Ash.Mix.Tasks.Helpers.md): Helpers for Ash Mix tasks.

  - [Ash.NotLoaded](Ash.NotLoaded.md): Used when a field hasn't been loaded or selected.
  - [Ash.OptionsHelpers](Ash.OptionsHelpers.md): Helpers for working with nimble options

  - [Ash.Page](Ash.Page.md): Types for Ash pages
  - [Ash.Page.Keyset](Ash.Page.Keyset.md): A page of results from `keyset` based pagination.
  - [Ash.Page.Offset](Ash.Page.Offset.md): A page of results from `offset` based pagination.
  - [Ash.PlugHelpers](Ash.PlugHelpers.md): Helpers for working with the Plug connection.

  - [Ash.ProcessHelpers](Ash.ProcessHelpers.md): Helpers for working with processes and Ash actions.

  - [Ash.Resource.Builder](Ash.Resource.Builder.md): Tools for transforming resources in DSL Transformers.

  - [Ash.SatSolver](Ash.SatSolver.md)
  - [Ash.Sort](Ash.Sort.md): Utilities and types for sorting.

  - [Ash.UUID](Ash.UUID.md): Helpers for working with UUIDs
  - [Ash.UUIDv7](Ash.UUIDv7.md): Helpers for working with UUIDs version 7.
  - [Ash.Union](Ash.Union.md): A wrapper for values that are sourced from `Ash.Type.Union`.

  - [Ash.Vector](Ash.Vector.md): A vector struct for Ash.

- Types
  - [Ash.Type](Ash.Type.md): The `Ash.Type` behaviour is used to define a value type in Ash.
  - [Ash.Type.Atom](Ash.Type.Atom.md): Stores an atom as a string in the database
  - [Ash.Type.Binary](Ash.Type.Binary.md): Represents a binary.
  - [Ash.Type.Boolean](Ash.Type.Boolean.md): Represents a boolean.
  - [Ash.Type.CiString](Ash.Type.CiString.md): Stores a case insensitive string in the database
  - [Ash.Type.Comparable](Ash.Type.Comparable.md): Helpers for working with `Comparable`
  - [Ash.Type.CompositeTypeHelpers](Ash.Type.CompositeTypeHelpers.md): Shared utilities for composite type validation and error handling.
  - [Ash.Type.Date](Ash.Type.Date.md): Represents a date in the database
  - [Ash.Type.DateTime](Ash.Type.DateTime.md): Represents a datetime, with configurable precision and timezone.
  - [Ash.Type.Decimal](Ash.Type.Decimal.md): Represents a decimal.
  - [Ash.Type.Duration](Ash.Type.Duration.md): Represents a Duration
  - [Ash.Type.DurationName](Ash.Type.DurationName.md): An interval of time, primarily meant to be used in expression functions
  - [Ash.Type.Enum](Ash.Type.Enum.md): A type for abstracting enums into a single type.
  - [Ash.Type.File](Ash.Type.File.md): A type that represents a file on the filesystem.
  - [Ash.Type.File.Implementation](Ash.Type.File.Implementation.md): Behaviour for file implementations that are compatible with `Ash.Type.File`.

  - [Ash.Type.File.Source](Ash.Type.File.Source.md): Protocol for allowing the casting of something into an `Ash.Type.File`.
  - [Ash.Type.Float](Ash.Type.Float.md): Represents a float (floating point number)
  - [Ash.Type.Function](Ash.Type.Function.md): Represents a function.
  - [Ash.Type.Integer](Ash.Type.Integer.md): Represents a simple integer
  - [Ash.Type.Keyword](Ash.Type.Keyword.md): Represents a keyword list, stored as a `:map` in the database.
  - [Ash.Type.Map](Ash.Type.Map.md): Represents a map stored in the database.
  - [Ash.Type.Module](Ash.Type.Module.md): Stores a module as a string in the database.
  - [Ash.Type.NaiveDatetime](Ash.Type.NaiveDatetime.md): Represents a Naive datetime
  - [Ash.Type.NewType](Ash.Type.NewType.md): Allows defining a new type that is the combination of an existing type and custom constraints
  - [Ash.Type.String](Ash.Type.String.md): Stores a string in the database.
  - [Ash.Type.Struct](Ash.Type.Struct.md): Represents a struct.
  - [Ash.Type.Term](Ash.Type.Term.md): Represents a raw elixir term in the database
  - [Ash.Type.Time](Ash.Type.Time.md): Represents a time in the database, with a 'second' precision
  - [Ash.Type.TimeUsec](Ash.Type.TimeUsec.md): Represents a time with `microsecond` precision.
  - [Ash.Type.Tuple](Ash.Type.Tuple.md): Represents a tuple stored in the data layer as a map.
  - [Ash.Type.UUID](Ash.Type.UUID.md): Represents a UUID.
  - [Ash.Type.UUIDv7](Ash.Type.UUIDv7.md): Represents a UUID.
  - [Ash.Type.Union](Ash.Type.Union.md): A union between multiple types, distinguished with a tag or by attempting to validate.
  - [Ash.Type.UrlEncodedBinary](Ash.Type.UrlEncodedBinary.md): Represents a binary that attempts to decode input strings as a url encoded base64 string.
  - [Ash.Type.UtcDatetime](Ash.Type.UtcDatetime.md): Represents a utc datetime, with 'second' precision. A wrapper around `:datetime` for backwards compatibility.
  - [Ash.Type.UtcDatetimeUsec](Ash.Type.UtcDatetimeUsec.md): Represents a utc datetime with `microsecond` precision. A wrapper around `:datetime` for backwards compatibility.
  - [Ash.Type.Vector](Ash.Type.Vector.md): Represents a vector.

- Errors
  - [Ash.Error](Ash.Error.md): Tools and utilities used by Ash to manage and conform errors

  - [Ash.Error.Action.InvalidArgument](Ash.Error.Action.InvalidArgument.md): Used when an invalid value is provided for an action argument
  - [Ash.Error.Changes.ActionRequiresActor](Ash.Error.Changes.ActionRequiresActor.md): Used when an actor is referenced in a filter template, but no actor exists
  - [Ash.Error.Changes.InvalidArgument](Ash.Error.Changes.InvalidArgument.md): Used when an invalid value is provided for an action argument
  - [Ash.Error.Changes.InvalidAttribute](Ash.Error.Changes.InvalidAttribute.md): Used when an invalid value is provided for an attribute change
  - [Ash.Error.Changes.InvalidChanges](Ash.Error.Changes.InvalidChanges.md): Used when a change is provided that covers multiple attributes/relationships
  - [Ash.Error.Changes.InvalidRelationship](Ash.Error.Changes.InvalidRelationship.md): Used when an invalid value is provided for a relationship change
  - [Ash.Error.Changes.NoSuchAttribute](Ash.Error.Changes.NoSuchAttribute.md): Used when a change is provided for an attribute that does not exist
  - [Ash.Error.Changes.NoSuchRelationship](Ash.Error.Changes.NoSuchRelationship.md): Used when a change is provided for an relationship that does not exist
  - [Ash.Error.Changes.Required](Ash.Error.Changes.Required.md): Used when an attribute or relationship is required
  - [Ash.Error.Changes.StaleRecord](Ash.Error.Changes.StaleRecord.md): Used when a stale record is attempted to be updated or deleted
  - [Ash.Error.Exception](Ash.Error.Exception.md): Tooling for creating an Ash exception
  - [Ash.Error.Forbidden](Ash.Error.Forbidden.md): Used when authorization for an action fails
  - [Ash.Error.Forbidden.CannotFilterCreates](Ash.Error.Forbidden.CannotFilterCreates.md): Used when a create action would be filtered
  - [Ash.Error.Forbidden.DomainRequiresActor](Ash.Error.Forbidden.DomainRequiresActor.md): Used when a domain that has `require_actor? true` is provided no actor
  - [Ash.Error.Forbidden.DomainRequiresAuthorization](Ash.Error.Forbidden.DomainRequiresAuthorization.md): Used when a domain that has `authorize :always` is provided authorize?: false
  - [Ash.Error.Forbidden.ForbiddenField](Ash.Error.Forbidden.ForbiddenField.md): Raised in cases where access to a specific field was prevented
  - [Ash.Error.Forbidden.InitialDataRequired](Ash.Error.Forbidden.InitialDataRequired.md): Used when initial data was not supplied when it was required
  - [Ash.Error.Forbidden.MustPassStrictCheck](Ash.Error.Forbidden.MustPassStrictCheck.md): Used when unreachable code/conditions are reached in the framework
  - [Ash.Error.Forbidden.Placeholder](Ash.Error.Forbidden.Placeholder.md): A placeholder exception that the user should never see
  - [Ash.Error.Forbidden.Policy](Ash.Error.Forbidden.Policy.md): Raised when policy authorization for an action fails
  - [Ash.Error.Framework](Ash.Error.Framework.md): Used when an unknown/generic framework error occurs
  - [Ash.Error.Framework.AssumptionFailed](Ash.Error.Framework.AssumptionFailed.md): Used when unreachable code/conditions are reached in the framework
  - [Ash.Error.Framework.CanNotBeAtomic](Ash.Error.Framework.CanNotBeAtomic.md): Used when a change that is only atomic cannot be done atomically
  - [Ash.Error.Framework.FlagAssertionFailed](Ash.Error.Framework.FlagAssertionFailed.md): Used when unreachable code/conditions are reached in the framework
  - [Ash.Error.Framework.InvalidReturnType](Ash.Error.Framework.InvalidReturnType.md): This error is raised when a behaviour implementation returns a value that
does not match the behaviour's callback return type.
  - [Ash.Error.Framework.MustBeAtomic](Ash.Error.Framework.MustBeAtomic.md): Used when an action that must be atomic cannot be done atomically
  - [Ash.Error.Framework.PendingCodegen](Ash.Error.Framework.PendingCodegen.md): Used when an extension has pending code generation and the --check flag is provided
  - [Ash.Error.Framework.SynchronousEngineStuck](Ash.Error.Framework.SynchronousEngineStuck.md): Used when the sycnrhonous engine cannot proceed
  - [Ash.Error.Framework.UnsupportedSubject](Ash.Error.Framework.UnsupportedSubject.md): Used when a subject is provided to a validation or preparation that it does not support
  - [Ash.Error.Invalid](Ash.Error.Invalid.md): The top level invalid error
  - [Ash.Error.Invalid.ActionRequiresPagination](Ash.Error.Invalid.ActionRequiresPagination.md): Used when page option is passed but pagination is not enabled.
  - [Ash.Error.Invalid.AtomicsNotSupported](Ash.Error.Invalid.AtomicsNotSupported.md): Used when atomics for the given action type are not not supported by the data layer, but one is used.
  - [Ash.Error.Invalid.InvalidActionType](Ash.Error.Invalid.InvalidActionType.md): Used when a callback returns an invalid type
  - [Ash.Error.Invalid.InvalidCustomInput](Ash.Error.Invalid.InvalidCustomInput.md): Used when an invalid value is provided for a code interface custom input
  - [Ash.Error.Invalid.InvalidPrimaryKey](Ash.Error.Invalid.InvalidPrimaryKey.md): Used when an invalid primary key is given to `Ash.get/2`
  - [Ash.Error.Invalid.InvalidStoredData](Ash.Error.Invalid.InvalidStoredData.md): Used when stored data cannot be cast to its expected type when loading from the data layer.
  - [Ash.Error.Invalid.LimitRequired](Ash.Error.Invalid.LimitRequired.md): Used when no limit is provided, pagination is required, and no default page size is configured
  - [Ash.Error.Invalid.MultipleResults](Ash.Error.Invalid.MultipleResults.md): Used when multiple results are returned in a case where only one result was expected
  - [Ash.Error.Invalid.NoIdentityFound](Ash.Error.Invalid.NoIdentityFound.md): Used when an identity name is used that does not reference identity on the resource
  - [Ash.Error.Invalid.NoMatchingBulkStrategy](Ash.Error.Invalid.NoMatchingBulkStrategy.md): Used when an identity name is used that does not reference identity on the resource
  - [Ash.Error.Invalid.NoPrimaryAction](Ash.Error.Invalid.NoPrimaryAction.md): Used when an action name is provided that doesn't exist
  - [Ash.Error.Invalid.NoSuchAction](Ash.Error.Invalid.NoSuchAction.md): Used when an action name is provided that doesn't exist
  - [Ash.Error.Invalid.NoSuchInput](Ash.Error.Invalid.NoSuchInput.md): Used when an input is provided to an action or calculation that is not accepted
  - [Ash.Error.Invalid.NoSuchResource](Ash.Error.Invalid.NoSuchResource.md): Used when a resource or alias is provided that doesn't exist
  - [Ash.Error.Invalid.NonCountableAction](Ash.Error.Invalid.NonCountableAction.md): Used when page[:count] option is passed but the action's pagination is not countable.
  - [Ash.Error.Invalid.NonStreamableAction](Ash.Error.Invalid.NonStreamableAction.md): Used when Ash.stream is used with an action that does not support keyset pagination
  - [Ash.Error.Invalid.PaginationRequired](Ash.Error.Invalid.PaginationRequired.md): Used when `page: false` is provided but pagination is required
  - [Ash.Error.Invalid.ResourceNotAllowed](Ash.Error.Invalid.ResourceNotAllowed.md): Used when a resource or alias is provided that cannot be used with the given domain
  - [Ash.Error.Invalid.TenantRequired](Ash.Error.Invalid.TenantRequired.md): Used when a tenant is not specified
  - [Ash.Error.Invalid.Timeout](Ash.Error.Invalid.Timeout.md): Used when a request to a domain times out.
  - [Ash.Error.Invalid.TimeoutNotSupported](Ash.Error.Invalid.TimeoutNotSupported.md): Used when timeouts are not supported by the data layer, but one is set
  - [Ash.Error.Invalid.Unavailable](Ash.Error.Invalid.Unavailable.md): Used when a given resource is unavailable.
  - [Ash.Error.Load.InvalidQuery](Ash.Error.Load.InvalidQuery.md): Used when an invalid query is provided in a load
  - [Ash.Error.Load.NoSuchRelationship](Ash.Error.Load.NoSuchRelationship.md): Used when attempting to load a relationship that does not exist
  - [Ash.Error.Page.InvalidKeyset](Ash.Error.Page.InvalidKeyset.md): Used when a value is provided for a keyset that cannot be Base64 decoded.
  - [Ash.Error.Query.AggregatesNotSupported](Ash.Error.Query.AggregatesNotSupported.md): Used when the data_layer does not support aggregates, or filtering/sorting them
  - [Ash.Error.Query.CalculationRequiresPrimaryKey](Ash.Error.Query.CalculationRequiresPrimaryKey.md): Used when a calculation requires a primary key but was not supplied with one
  - [Ash.Error.Query.CalculationsNotSupported](Ash.Error.Query.CalculationsNotSupported.md): Used when the data_layer does not support calculations, or filtering/sorting them
  - [Ash.Error.Query.InvalidArgument](Ash.Error.Query.InvalidArgument.md): Used when an invalid value is provided for an action argument
  - [Ash.Error.Query.InvalidCalculationArgument](Ash.Error.Query.InvalidCalculationArgument.md): Used when an invalid value is provided for a calculation argument
  - [Ash.Error.Query.InvalidExpression](Ash.Error.Query.InvalidExpression.md): Used when an invalid expression is used in a filter
  - [Ash.Error.Query.InvalidFilterReference](Ash.Error.Query.InvalidFilterReference.md): Used when an invalid reference is used in a filter
  - [Ash.Error.Query.InvalidFilterValue](Ash.Error.Query.InvalidFilterValue.md): Used when an invalid value is provided for a filter
  - [Ash.Error.Query.InvalidLimit](Ash.Error.Query.InvalidLimit.md): Used when an invalid limit is provided
  - [Ash.Error.Query.InvalidLoad](Ash.Error.Query.InvalidLoad.md): Used when an invalid load is provided
  - [Ash.Error.Query.InvalidOffset](Ash.Error.Query.InvalidOffset.md): Used when an invalid offset is provided
  - [Ash.Error.Query.InvalidPage](Ash.Error.Query.InvalidPage.md): Used when an invalid page option is provided
  - [Ash.Error.Query.InvalidQuery](Ash.Error.Query.InvalidQuery.md): A generic error that can be used to add an error to a query for a specific field

  - [Ash.Error.Query.InvalidSortOrder](Ash.Error.Query.InvalidSortOrder.md): Used when an invalid sort order is provided
  - [Ash.Error.Query.LockNotSupported](Ash.Error.Query.LockNotSupported.md): Used when the data_layer does not support a given lock type
  - [Ash.Error.Query.NoComplexSortsWithKeysetPagination](Ash.Error.Query.NoComplexSortsWithKeysetPagination.md): Due to the filter-based implementation of keyset pagination, it cannot be used with sorts on calculations.
  - [Ash.Error.Query.NoReadAction](Ash.Error.Query.NoReadAction.md): Used when a resource would be read but has no read action
  - [Ash.Error.Query.NoSuchAttribute](Ash.Error.Query.NoSuchAttribute.md): Used when an attribute that doesn't exist is used in a query
  - [Ash.Error.Query.NoSuchField](Ash.Error.Query.NoSuchField.md): Used when a field(attribute, calculation, aggregate or relationship) that doesn't exist is used in a query
  - [Ash.Error.Query.NoSuchFilterPredicate](Ash.Error.Query.NoSuchFilterPredicate.md): Used when a filter predicate that does not exist is referenced
  - [Ash.Error.Query.NoSuchFunction](Ash.Error.Query.NoSuchFunction.md): Used when an function that doesn't exist is used in a query
  - [Ash.Error.Query.NoSuchOperator](Ash.Error.Query.NoSuchOperator.md): Used when an operator that doesn't exist is used in a query
  - [Ash.Error.Query.NoSuchRelationship](Ash.Error.Query.NoSuchRelationship.md): Used when an relationship that doesn't exist is used in a query
  - [Ash.Error.Query.NotFound](Ash.Error.Query.NotFound.md): Used when an entity that not exist is referenced
  - [Ash.Error.Query.ReadActionRequired](Ash.Error.Query.ReadActionRequired.md): Used when a relationship is filtered and the destination does not have a default read action
  - [Ash.Error.Query.ReadActionRequiresActor](Ash.Error.Query.ReadActionRequiresActor.md): Used when an actor is referenced in a filter template, but no actor exists
  - [Ash.Error.Query.Required](Ash.Error.Query.Required.md): Used when a filter or argument is required in a query
  - [Ash.Error.Query.UnsortableField](Ash.Error.Query.UnsortableField.md): Used when attempting to sort on a field that cannot be used for sorting
  - [Ash.Error.Query.UnsupportedPredicate](Ash.Error.Query.UnsupportedPredicate.md): Used when the data_layer does not support a provided predicate
  - [Ash.Error.SimpleDataLayer.NoDataProvided](Ash.Error.SimpleDataLayer.NoDataProvided.md): Used when no data was provided to the simple data layer
  - [Ash.Error.Stacktrace](Ash.Error.Stacktrace.md): Utilities for working with stacktraces
  - [Ash.Error.Unknown](Ash.Error.Unknown.md): The top level unknown error container
  - [Ash.Error.Unknown.InvalidCastedValue](Ash.Error.Unknown.InvalidCastedValue.md): Used when a value fails to dump to its native (storage) format
  - [Ash.Error.Unknown.InvalidStoredValue](Ash.Error.Unknown.InvalidStoredValue.md): Used when a stored value fails to be cast from the data layer
  - [Ash.Error.Unknown.UnknownError](Ash.Error.Unknown.UnknownError.md): Used when an unknown error occurs

- DSL Transformers
  - [Ash.DataLayer.Verifiers.RequirePreCheckWith](Ash.DataLayer.Verifiers.RequirePreCheckWith.md): Ensures that all identities have a `pre_check_with` configured, or raises.

  - [Ash.Notifier.PubSub.Verifiers.VerifyActionNames](Ash.Notifier.PubSub.Verifiers.VerifyActionNames.md): Verifies action names in configured publications
  - [Ash.Notifier.PubSub.Verifiers.VerifyCalcTransforms](Ash.Notifier.PubSub.Verifiers.VerifyCalcTransforms.md): Verifies that atom transforms reference valid calculations and derives `returns` from them.
  - [Ash.Domain.Verifiers.EnsureNoEmbeds](Ash.Domain.Verifiers.EnsureNoEmbeds.md): Ensures that all resources for a given domain are not embeds.

  - [Ash.Domain.Verifiers.ValidateArgumentsToCodeInterface](Ash.Domain.Verifiers.ValidateArgumentsToCodeInterface.md): Validate the arguments defined in the code interface
and reject arguments that are not action attributes/arguments

  - [Ash.Domain.Verifiers.ValidateRelatedResourceInclusion](Ash.Domain.Verifiers.ValidateRelatedResourceInclusion.md): Ensures that all related resources are included in a domain.

  - [Ash.Policy.Authorizer.Transformers.AddMissingFieldPolicies](Ash.Policy.Authorizer.Transformers.AddMissingFieldPolicies.md): Adds field policies for any missing fields
  - [Ash.Policy.Authorizer.Transformers.CacheFieldPolicies](Ash.Policy.Authorizer.Transformers.CacheFieldPolicies.md): Cache field policies for each field
  - [Ash.Resource.Transformers.AttributesByName](Ash.Resource.Transformers.AttributesByName.md): Persists attribute_names and attributes_by_name.

  - [Ash.Resource.Transformers.BelongsToAttribute](Ash.Resource.Transformers.BelongsToAttribute.md): Creates the attribute for belongs_to relationships that have `define_attribute?: true`

  - [Ash.Resource.Transformers.CacheActionInputs](Ash.Resource.Transformers.CacheActionInputs.md): Stores the set of valid input keys for each action
  - [Ash.Resource.Transformers.CacheCalculations](Ash.Resource.Transformers.CacheCalculations.md): Persists commonly used calculation information.

  - [Ash.Resource.Transformers.CachePrimaryKey](Ash.Resource.Transformers.CachePrimaryKey.md): Validates and caches the primary key of a resource
  - [Ash.Resource.Transformers.CacheRelationships](Ash.Resource.Transformers.CacheRelationships.md): Persists commonly used relationship information.

  - [Ash.Resource.Transformers.CacheUniqueKeys](Ash.Resource.Transformers.CacheUniqueKeys.md): Stores the set of unique keys for a resource
  - [Ash.Resource.Transformers.CreateJoinRelationship](Ash.Resource.Transformers.CreateJoinRelationship.md): Creates an automatically named `has_many` relationship for each many_to_many.

  - [Ash.Resource.Transformers.DefaultAccept](Ash.Resource.Transformers.DefaultAccept.md): Sets the default `accept` for each action
  - [Ash.Resource.Transformers.GetByReadActions](Ash.Resource.Transformers.GetByReadActions.md): Transform any read actions which contain a `get_by` option.

  - [Ash.Resource.Transformers.HasDestinationField](Ash.Resource.Transformers.HasDestinationField.md): Guesses the `destination_attribute` for has many and has one relationships unless provided
  - [Ash.Resource.Transformers.ManyToManyDestinationAttributeOnJoinResource](Ash.Resource.Transformers.ManyToManyDestinationAttributeOnJoinResource.md): Guesses the `destination_attribute_on_join_resource` for many to many relationships unless provided.

  - [Ash.Resource.Transformers.ManyToManySourceAttributeOnJoinResource](Ash.Resource.Transformers.ManyToManySourceAttributeOnJoinResource.md): Guesses the `source_attribute_on_join_resource` for many to many relationships unless provided.

  - [Ash.Resource.Transformers.RequireUniqueActionNames](Ash.Resource.Transformers.RequireUniqueActionNames.md): Ensures that all actions have unique names.

  - [Ash.Resource.Transformers.RequireUniqueFieldNames](Ash.Resource.Transformers.RequireUniqueFieldNames.md): Confirms that a resource does not have multiple fields(attributes, calculations, aggregates, and relationships) with the same name.

  - [Ash.Resource.Transformers.ResolveAutoTypes](Ash.Resource.Transformers.ResolveAutoTypes.md): Resolves `:auto` types on calculations by analyzing their expressions.
  - [Ash.Resource.Transformers.ResolvePipelines](Ash.Resource.Transformers.ResolvePipelines.md): Resolves `pipe_through` on actions by replacing PipeThrough entities with pipeline contents in-place.
  - [Ash.Resource.Transformers.SetPrimaryActions](Ash.Resource.Transformers.SetPrimaryActions.md): Validates the primary action configuration
  - [Ash.Resource.Transformers.SetRelationshipSource](Ash.Resource.Transformers.SetRelationshipSource.md): Sets the `source` key on relationships to be the resource they were defined on
  - [Ash.Resource.Transformers.ValidationsAndChangesForType](Ash.Resource.Transformers.ValidationsAndChangesForType.md): Persists global changes/validations and what type they go on.

  - [Ash.Resource.Verifiers.NoReservedFieldNames](Ash.Resource.Verifiers.NoReservedFieldNames.md): Confirms that a resource does not use reserved names for field names.
  - [Ash.Resource.Verifiers.ValidateAccept](Ash.Resource.Verifiers.ValidateAccept.md): Validates that accept and reject lists only contain valid attributes
  - [Ash.Resource.Verifiers.ValidateActionTypesSupported](Ash.Resource.Verifiers.ValidateActionTypesSupported.md): Confirms that all action types declared on a resource are supported by its data layer

  - [Ash.Resource.Verifiers.ValidateAggregateField](Ash.Resource.Verifiers.ValidateAggregateField.md): Ensures that the aggregate field references an attribute, calculation, or aggregate (not a relationship).

  - [Ash.Resource.Verifiers.ValidateAggregatesSupported](Ash.Resource.Verifiers.ValidateAggregatesSupported.md): Confirms that all aggregates are supported by the data layer

  - [Ash.Resource.Verifiers.ValidateArgumentsToCodeInterface](Ash.Resource.Verifiers.ValidateArgumentsToCodeInterface.md): Validate the arguments defined in the code interface
and reject arguments that are not action attributes/arguments

  - [Ash.Resource.Verifiers.ValidateAtomicValidationDefaultTargetAttribute](Ash.Resource.Verifiers.ValidateAtomicValidationDefaultTargetAttribute.md): Ensures that the `atomic_validation_default_target_attribute` option references an existing attribute.

  - [Ash.Resource.Verifiers.ValidateEagerIdentities](Ash.Resource.Verifiers.ValidateEagerIdentities.md): Confirms that eager identities are not declared on a resource with no primary read.

  - [Ash.Resource.Verifiers.ValidateManagedRelationshipOpts](Ash.Resource.Verifiers.ValidateManagedRelationshipOpts.md): Confirms that all action types declared on a resource are supported by its data layer

  - [Ash.Resource.Verifiers.ValidateMultitenancy](Ash.Resource.Verifiers.ValidateMultitenancy.md): Ensures that the multitenancy configuration is valid for the given resource

  - [Ash.Resource.Verifiers.ValidatePrimaryKey](Ash.Resource.Verifiers.ValidatePrimaryKey.md): Validates and caches the primary key of a resource
  - [Ash.Resource.Verifiers.ValidateRelationshipAttributes](Ash.Resource.Verifiers.ValidateRelationshipAttributes.md): Validates that all relationships point to valid fields

  - [Ash.Resource.Verifiers.ValidateRelationshipAttributesMatch](Ash.Resource.Verifiers.ValidateRelationshipAttributesMatch.md): Shows a warning on potentially incompatible relationship attributes.

  - [Ash.Resource.Verifiers.ValidateThroughRelationships](Ash.Resource.Verifiers.ValidateThroughRelationships.md): Validates that all `through` relationship paths reference existing relationships
and resolve to the declared destination.

  - [Ash.Resource.Verifiers.VerifyActionsAtomic](Ash.Resource.Verifiers.VerifyActionsAtomic.md): Raises an error on update or destroy actions with `require_atomic?` set to
true when it is known at compile time that they will not be atomic.

  - [Ash.Resource.Verifiers.VerifyCalculations](Ash.Resource.Verifiers.VerifyCalculations.md): Validates calculation configurations.
  - [Ash.Resource.Verifiers.VerifyFilterExpressions](Ash.Resource.Verifiers.VerifyFilterExpressions.md): Raises an error if a filter expression references an undefined argument.

  - [Ash.Resource.Verifiers.VerifyGenericActionReactorInputs](Ash.Resource.Verifiers.VerifyGenericActionReactorInputs.md): Returns an error if a generic action calls a Reactor module without specifying
an argument for all expected inputs.

  - [Ash.Resource.Verifiers.VerifyIdentityFields](Ash.Resource.Verifiers.VerifyIdentityFields.md): Raises an error on potentially incompatible identity attributes.

  - [Ash.Resource.Verifiers.VerifyPrimaryKeyPresent](Ash.Resource.Verifiers.VerifyPrimaryKeyPresent.md): Raises an error when a required primary key is missing

  - [Ash.Resource.Verifiers.VerifyPrimaryReadActionHasNoArguments](Ash.Resource.Verifiers.VerifyPrimaryReadActionHasNoArguments.md): Verifies that primary read actions do not have any arguments
  - [Ash.Resource.Verifiers.VerifyReservedCalculationArguments](Ash.Resource.Verifiers.VerifyReservedCalculationArguments.md): Verifies that standard context keys are not used as calculation arguments
  - [Ash.Resource.Verifiers.VerifySelectedByDefault](Ash.Resource.Verifiers.VerifySelectedByDefault.md): Raises an error when a required primary key is missing

- Expressions
  - [Ash.Filter.Predicate](Ash.Filter.Predicate.md): Represents a predicate which can be simplified and/or compared with other predicates
  - [Ash.Query.BooleanExpression](Ash.Query.BooleanExpression.md): Represents a boolean expression
  - [Ash.Query.Call](Ash.Query.Call.md): Represents a function call/AST node in an Ash query expression
  - [Ash.Query.Exists](Ash.Query.Exists.md): Determines if a given related entity exists.

  - [Ash.Query.Function](Ash.Query.Function.md): A function is a predicate with an arguments list.
  - [Ash.Query.Not](Ash.Query.Not.md): Represents the negation of the contained expression
  - [Ash.Query.Operator](Ash.Query.Operator.md): An operator is a predicate with a `left` and a `right`
  - [Ash.Query.Parent](Ash.Query.Parent.md): Used to access values from the "source" of a given expression.
  - [Ash.Query.Ref](Ash.Query.Ref.md): Represents a relation/attribute reference
  - [Ash.Query.Function.Ago](Ash.Query.Function.Ago.md): Subtracts the given interval or Duration from the current time in UTC.
  - [Ash.Query.Function.At](Ash.Query.Function.At.md): Gets an element in the list by index

  - [Ash.Query.Function.CompositeType](Ash.Query.Function.CompositeType.md): Constructs a composite type in a way that is natively understood by the data layer
  - [Ash.Query.Function.Contains](Ash.Query.Function.Contains.md): Returns true if the first string contains the second.
  - [Ash.Query.Function.CountNils](Ash.Query.Function.CountNils.md): Returns the count of nil.
  - [Ash.Query.Function.DateAdd](Ash.Query.Function.DateAdd.md): Adds the given interval or Duration to the current time in UTC
Adds the given interval or Duration to the current time in UTC
  - [Ash.Query.Function.DateTimeAdd](Ash.Query.Function.DateTimeAdd.md): Adds the given interval or Duration to the current time in UTC
  - [Ash.Query.Function.Error](Ash.Query.Function.Error.md): If the predicate is truthy, the provided exception is raised with the provided values.
  - [Ash.Query.Function.Fragment](Ash.Query.Function.Fragment.md): Adds the given interval from the current time in UTC.
  - [Ash.Query.Function.FromNow](Ash.Query.Function.FromNow.md): Adds the given interval or Duration from the current time in UTC.
  - [Ash.Query.Function.GetPath](Ash.Query.Function.GetPath.md): Gets the value at the provided path in the value, which must be a map or embed.
  - [Ash.Query.Function.Has](Ash.Query.Function.Has.md): Returns true if the second argument is found in the first
  - [Ash.Query.Function.If](Ash.Query.Function.If.md): If predicate is truthy, then the second argument is returned, otherwise the third.

  - [Ash.Query.Function.Intersects](Ash.Query.Function.Intersects.md): Returns true if the two arguments intersect.
  - [Ash.Query.Function.IsDistinctFrom](Ash.Query.Function.IsDistinctFrom.md): is_distinct_from(left, right)
  - [Ash.Query.Function.IsNil](Ash.Query.Function.IsNil.md): true if the provided field is nil

  - [Ash.Query.Function.IsNotDistinctFrom](Ash.Query.Function.IsNotDistinctFrom.md): is_not_distinct_from(left, right)
  - [Ash.Query.Function.Lazy](Ash.Query.Function.Lazy.md): Runs the provided MFA and returns the result as a known value.
  - [Ash.Query.Function.Length](Ash.Query.Function.Length.md): Returns the length of a list attribute defined by the composite type `{:array, Type}`.
  - [Ash.Query.Function.Minus](Ash.Query.Function.Minus.md): Negates the value

  - [Ash.Query.Function.Now](Ash.Query.Function.Now.md): Returns the current datetime

  - [Ash.Query.Function.Rem](Ash.Query.Function.Rem.md): Rounds a float, decimal or integer to the given number of points

  - [Ash.Query.Function.RequiredError](Ash.Query.Function.RequiredError.md): Returns the given value when it is present, or a required error when it is nil.
  - [Ash.Query.Function.Round](Ash.Query.Function.Round.md): Rounds a float, decimal or integer to the given number of points

  - [Ash.Query.Function.StartOfDay](Ash.Query.Function.StartOfDay.md): Converts a date or datetime into the start of day
  - [Ash.Query.Function.StringDowncase](Ash.Query.Function.StringDowncase.md): Downcase a string

  - [Ash.Query.Function.StringEndsWith](Ash.Query.Function.StringEndsWith.md): Returns true if the first string ends with the second.
  - [Ash.Query.Function.StringJoin](Ash.Query.Function.StringJoin.md): Joins a list of values.
  - [Ash.Query.Function.StringLength](Ash.Query.Function.StringLength.md): Trims whitespace from a string

  - [Ash.Query.Function.StringPosition](Ash.Query.Function.StringPosition.md): Returns the zero-based position of a substring within a string, nil if the string does not contain the substring.
  - [Ash.Query.Function.StringSplit](Ash.Query.Function.StringSplit.md): Split a string into a list of strings
  - [Ash.Query.Function.StringStartsWith](Ash.Query.Function.StringStartsWith.md): Returns true if the first string starts with the second.
  - [Ash.Query.Function.StringTrim](Ash.Query.Function.StringTrim.md): Trims whitespace from a string

  - [Ash.Query.Function.Today](Ash.Query.Function.Today.md): Returns the current date.

  - [Ash.Query.Function.Type](Ash.Query.Function.Type.md): Casts the value to a given type. Can also be used to provide type hints to data layers, where appropriate.

  - [Ash.Query.Operator.Eq](Ash.Query.Operator.Eq.md): left == right
  - [Ash.Query.Operator.GreaterThan](Ash.Query.Operator.GreaterThan.md): left > right
  - [Ash.Query.Operator.GreaterThanOrEqual](Ash.Query.Operator.GreaterThanOrEqual.md): left >= right
  - [Ash.Query.Operator.Has](Ash.Query.Operator.Has.md): left has 1
  - [Ash.Query.Operator.In](Ash.Query.Operator.In.md): left in [1, 2, 3]
  - [Ash.Query.Operator.IsNil](Ash.Query.Operator.IsNil.md): left is_nil true/false
  - [Ash.Query.Operator.LessThan](Ash.Query.Operator.LessThan.md): left < right
  - [Ash.Query.Operator.LessThanOrEqual](Ash.Query.Operator.LessThanOrEqual.md): left <= right
  - [Ash.Query.Operator.NotEq](Ash.Query.Operator.NotEq.md): left != right
  - [Ash.Query.Operator.Overlaps](Ash.Query.Operator.Overlaps.md): left overlaps [1, 2, 3]

- DSL Structs
  - [Ash.Notifier.PubSub.Publication](Ash.Notifier.PubSub.Publication.md): Represents a configured publication from the pubsub notifier on an Ash.Resource
  - [Ash.Policy.FieldPolicy](Ash.Policy.FieldPolicy.md): Represents a field policy in an Ash.Resource
  - [Ash.Policy.Policy](Ash.Policy.Policy.md): Represents a policy on an Ash.Resource
  - [Ash.Resource.Actions](Ash.Resource.Actions.md): Types for Ash actions
  - [Ash.Resource.Actions.Action](Ash.Resource.Actions.Action.md): Represents a custom action on a resource.
  - [Ash.Resource.Actions.Argument](Ash.Resource.Actions.Argument.md): Represents an argument to an action
  - [Ash.Resource.Actions.Create](Ash.Resource.Actions.Create.md): Represents a create action on a resource.
  - [Ash.Resource.Actions.Destroy](Ash.Resource.Actions.Destroy.md): Represents a destroy action on a resource.
  - [Ash.Resource.Actions.Implementation](Ash.Resource.Actions.Implementation.md): An implementation of a [generic action](generic-actions.md).
  - [Ash.Resource.Actions.Implementation.Context](Ash.Resource.Actions.Implementation.Context.md): The context passed into generic action functions
  - [Ash.Resource.Actions.Metadata](Ash.Resource.Actions.Metadata.md): Represents metadata from an action
  - [Ash.Resource.Actions.PipeThrough](Ash.Resource.Actions.PipeThrough.md): Represents a `pipe_through` declaration on an action.
  - [Ash.Resource.Actions.Read](Ash.Resource.Actions.Read.md): Represents a read action on a resource.
  - [Ash.Resource.Actions.Read.Pagination](Ash.Resource.Actions.Read.Pagination.md): Represents the pagination configuration of a read action
  - [Ash.Resource.Actions.Update](Ash.Resource.Actions.Update.md): Represents a update action on a resource.
  - [Ash.Resource.Aggregate](Ash.Resource.Aggregate.md): Represents a named aggregate on the resource that can be loaded
  - [Ash.Resource.Aggregate.CustomAggregate](Ash.Resource.Aggregate.CustomAggregate.md): The root behavior for a custom aggregate.
  - [Ash.Resource.Aggregate.JoinFilter](Ash.Resource.Aggregate.JoinFilter.md): Represents a join filter on a resource aggregate
  - [Ash.Resource.Attribute](Ash.Resource.Attribute.md): Represents an attribute on a resource
  - [Ash.Resource.Calculation.Argument](Ash.Resource.Calculation.Argument.md): An argument to a calculation
  - [Ash.Resource.Calculation.Context](Ash.Resource.Calculation.Context.md): The context and arguments of a calculation

  - [Ash.Resource.Calculation.LoadAttribute](Ash.Resource.Calculation.LoadAttribute.md): Loads an attribute as a calculation.
  - [Ash.Resource.Calculation.LoadRelationship](Ash.Resource.Calculation.LoadRelationship.md): Loads a relationship as a calculation.
  - [Ash.Resource.CalculationInterface](Ash.Resource.CalculationInterface.md): Represents a function that evaluates a calculation in a resource's code interface

  - [Ash.Resource.Identity](Ash.Resource.Identity.md): Represents a unique constraint on a resource
  - [Ash.Resource.Interface](Ash.Resource.Interface.md): Represents a function in a resource's code interface
  - [Ash.Resource.Interface.CustomInput](Ash.Resource.Interface.CustomInput.md): Represents a custom input to a code interface
  - [Ash.Resource.Interface.CustomInput.Transform](Ash.Resource.Interface.CustomInput.Transform.md): Represents a transformation applied to a custom input
  - [Ash.Resource.Relationships](Ash.Resource.Relationships.md): Types Ash relationships
  - [Ash.Resource.Relationships.BelongsTo](Ash.Resource.Relationships.BelongsTo.md): Represents a belongs_to relationship on a resource
  - [Ash.Resource.Relationships.HasMany](Ash.Resource.Relationships.HasMany.md): Represents a has_many relationship on a resource
  - [Ash.Resource.Relationships.HasOne](Ash.Resource.Relationships.HasOne.md): Represents a has_one relationship on a resource
  - [Ash.Resource.Relationships.ManyToMany](Ash.Resource.Relationships.ManyToMany.md): Represents a many_to_many relationship on a resource

- Other
  - [Ash.Actions.BulkManualActionHelpers](Ash.Actions.BulkManualActionHelpers.md):   Helper functions used for handling manual actions when used in bulk operations.

  - [Ash.Actions.Read.AsyncLimiter](Ash.Actions.Read.AsyncLimiter.md): A utility for limiting the number of concurrent async operations
  - [Ash.BehaviourHelpers](Ash.BehaviourHelpers.md): Helpers for Ash behaviour modules: return-type validation and documentation of the wrapper pattern.
  - [Ash.Can](Ash.Can.md): Contains the Ash.can function logic.

  - [Ash.Changeset.OriginalDataNotAvailable](Ash.Changeset.OriginalDataNotAvailable.md): A value placed in changeset.data to indicate that the original data is not available
  - [Ash.Context](Ash.Context.md): Functions for working with the context provided to various callbacks in Ash.

  - [Ash.CustomExpression](Ash.CustomExpression.md): A module for defining custom functions that can be called in Ash expressions.
  - [Ash.DataLayer](Ash.DataLayer.md): The behaviour for backing resource actions with persistence layers.

  - [Ash.Domain.Dsl.ResourceReference](Ash.Domain.Dsl.ResourceReference.md): A resource reference in a domain
  - [Ash.Domain.Igniter](Ash.Domain.Igniter.md): Codemods for working with Ash.Domain modules
  - [Ash.Extension](Ash.Extension.md): A behavior of additional callbacks that extensions can implement, specific to Ash.
  - [Ash.Gettext](Ash.Gettext.md): Provides the `error_message/1` macro for marking translatable error message strings.
  - [Ash.Igniter](Ash.Igniter.md): Codemods and utilities for working with Ash & Igniter
  - [Ash.Info](Ash.Info.md): General introspection helpers for Ash applications.
  - [Ash.Notifier.PubSub.Persisters.SetCalcReturns](Ash.Notifier.PubSub.Persisters.SetCalcReturns.md): Sets `returns` and `constraints` on publications whose `transform` names a calculation.
  - [Ash.Policy.PolicyGroup](Ash.Policy.PolicyGroup.md): Represents a policy group on an Ash.Resource
  - [Ash.Query.Combination](Ash.Query.Combination.md): Represents one combination in a combination of queries.

  - [Ash.Query.UpsertConflict](Ash.Query.UpsertConflict.md): Returns the conflicting new information.

  - [Ash.Reactor.ActionStep](Ash.Reactor.ActionStep.md): The Reactor step which is used to execute generic actions.

  - [Ash.Reactor.AshStep](Ash.Reactor.AshStep.md): A reactor step which runs a step-module or an anonymous function, and enqueues any returned
notifications before returning.
  - [Ash.Reactor.BulkCreateStep](Ash.Reactor.BulkCreateStep.md): The Reactor step which is used to execute create actions in bulk.

  - [Ash.Reactor.BulkDestroyStep](Ash.Reactor.BulkDestroyStep.md): The Reactor step which is used to execute destroy actions in bulk.

  - [Ash.Reactor.BulkUpdateStep](Ash.Reactor.BulkUpdateStep.md): The Reactor step which is used to execute update actions in bulk.

  - [Ash.Reactor.ChangeStep](Ash.Reactor.ChangeStep.md): The Reactor step which is used to execute change steps.

  - [Ash.Reactor.CreateStep](Ash.Reactor.CreateStep.md): The Reactor step which is used to execute create actions.

  - [Ash.Reactor.DestroyStep](Ash.Reactor.DestroyStep.md): The Reactor step which is used to execute update actions.

  - [Ash.Reactor.Dsl.Action](Ash.Reactor.Dsl.Action.md): The `action` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.ActionLoad](Ash.Reactor.Dsl.ActionLoad.md): Add a load statement to an action.

  - [Ash.Reactor.Dsl.ActionTransformer](Ash.Reactor.Dsl.ActionTransformer.md): Responsible for transforming actions.

  - [Ash.Reactor.Dsl.Actor](Ash.Reactor.Dsl.Actor.md): Specify the actor used to execute an action.

  - [Ash.Reactor.Dsl.AshStep](Ash.Reactor.Dsl.AshStep.md): The ash_step DSL module.
  - [Ash.Reactor.Dsl.BulkCreate](Ash.Reactor.Dsl.BulkCreate.md): The `bulk_create` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.BulkDestroy](Ash.Reactor.Dsl.BulkDestroy.md): The `bulk_destroy` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.BulkUpdate](Ash.Reactor.Dsl.BulkUpdate.md): The `bulk_update` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Change](Ash.Reactor.Dsl.Change.md): The `change` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Context](Ash.Reactor.Dsl.Context.md): Specify context to merge into an action's context.

  - [Ash.Reactor.Dsl.Create](Ash.Reactor.Dsl.Create.md): The `create` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Destroy](Ash.Reactor.Dsl.Destroy.md): The `destroy` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Inputs](Ash.Reactor.Dsl.Inputs.md): The `inputs` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Load](Ash.Reactor.Dsl.Load.md): The `load` step entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.MiddlewareTransformer](Ash.Reactor.Dsl.MiddlewareTransformer.md): Ensures that the required middlewares are added to the Reactor.

  - [Ash.Reactor.Dsl.Read](Ash.Reactor.Dsl.Read.md): The `read` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.ReadOne](Ash.Reactor.Dsl.ReadOne.md): The `read_one` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Tenant](Ash.Reactor.Dsl.Tenant.md): Specify the tenant used to execute an action.

  - [Ash.Reactor.Dsl.Transaction](Ash.Reactor.Dsl.Transaction.md): The `transaction` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.Dsl.Update](Ash.Reactor.Dsl.Update.md): The `update` entity for the `Ash.Reactor` reactor extension.

  - [Ash.Reactor.LoadStep](Ash.Reactor.LoadStep.md): The Reactor step which is used to execute load steps.

  - [Ash.Reactor.MergeInputsStep](Ash.Reactor.MergeInputsStep.md): A custom step which merges any number of `inputs` results into a single map.

  - [Ash.Reactor.Notifications](Ash.Reactor.Notifications.md): Reactor middleware used to collect and emit notifications upon successful
completion of the Reactor.

  - [Ash.Reactor.ReadOneStep](Ash.Reactor.ReadOneStep.md): The Reactor step which is used to execute get actions.

  - [Ash.Reactor.ReadStep](Ash.Reactor.ReadStep.md): The Reactor step which is used to execute read actions.

  - [Ash.Reactor.Step](Ash.Reactor.Step.md): Minimal behaviour for reactor step modules invoked by `Ash.Reactor.AshStep`.
  - [Ash.Reactor.Tracer](Ash.Reactor.Tracer.md): Reactor middleware which threads Ash's tracing information through to new
processes spawned by Reactor.

  - [Ash.Reactor.TransactionStep](Ash.Reactor.TransactionStep.md): The Reactor step which is used to wrap other steps in an Ash data layer
transaction.

  - [Ash.Reactor.UpdateStep](Ash.Reactor.UpdateStep.md): The Reactor step which is used to execute update actions.

  - [Ash.Resource.Dsl.Filter](Ash.Resource.Dsl.Filter.md): Introspection target for a filter for read actions and relationships
  - [Ash.Resource.Igniter](Ash.Resource.Igniter.md): Codemods for working with Ash.Resource modules
  - [Ash.Resource.ManualCreate.BulkContext](Ash.Resource.ManualCreate.BulkContext.md): The context passed into manual bulk_create action functions
  - [Ash.Resource.ManualCreate.Context](Ash.Resource.ManualCreate.Context.md): The context passed into manual create action functions
  - [Ash.Resource.ManualDestroy.BulkContext](Ash.Resource.ManualDestroy.BulkContext.md): The context passed into manual bulk_update action functions
  - [Ash.Resource.ManualDestroy.Context](Ash.Resource.ManualDestroy.Context.md): The context passed into manual update action functions
  - [Ash.Resource.ManualRelationship.Context](Ash.Resource.ManualRelationship.Context.md): The context passed into manual relationship functions
  - [Ash.Resource.ManualUpdate.BulkContext](Ash.Resource.ManualUpdate.BulkContext.md): The context passed into manual update action functions
  - [Ash.Resource.ManualUpdate.Context](Ash.Resource.ManualUpdate.Context.md): The context passed into manual update action functions
  - [Ash.Resource.Pipeline](Ash.Resource.Pipeline.md): Represents a reusable pipeline of changes, validations, and preparations
that can be referenced from multiple actions via `pipe_through`.

  - [Ash.Resource.Preparation.Context](Ash.Resource.Preparation.Context.md): The context for a preparation.

  - [Ash.Scope](Ash.Scope.md): Determines how the `actor`, `tenant` and `context` are extracted from a data structure.
  - [Ash.Scope.ToOpts](Ash.Scope.ToOpts.md)
  - [Ash.Subject](Ash.Subject.md): Provides a consistent API for common operations across `Ash.Changeset`,
`Ash.Query`, and `Ash.ActionInput`. It allows you to write generic code that works
with any of these types without needing to pattern match or special-case your logic.

  - [Ash.ToTenant](Ash.ToTenant.md): Converts a value to a tenant.
  - [Ash.TypedStruct](Ash.TypedStruct.md): A DSL for defining typed structs with field validation and constraints.
  - [Ash.TypedStruct.Field](Ash.TypedStruct.Field.md): Represents a field on a typed struct
  - [Comp](Comp.md): Provides utilities to implement and work with `Comparable` types

  - [Comparable](Comparable.md): Protocol which describes ordering relation for pair of types

  - [Comparable.Type.Any.To.Any](Comparable.Type.Any.To.Any.md)
  - [Comparable.Type.Ash.CiString.To.Ash.CiString](Comparable.Type.Ash.CiString.To.Ash.CiString.md)
  - [Comparable.Type.Ash.CiString.To.BitString](Comparable.Type.Ash.CiString.To.BitString.md)
  - [Comparable.Type.Atom.To.BitString](Comparable.Type.Atom.To.BitString.md)
  - [Comparable.Type.BitString.To.Ash.CiString](Comparable.Type.BitString.To.Ash.CiString.md)
  - [Comparable.Type.BitString.To.Atom](Comparable.Type.BitString.To.Atom.md)
  - [Comparable.Type.BitString.To.Decimal](Comparable.Type.BitString.To.Decimal.md)
  - [Comparable.Type.Date.To.Date](Comparable.Type.Date.To.Date.md)
  - [Comparable.Type.DateTime.To.DateTime](Comparable.Type.DateTime.To.DateTime.md)
  - [Comparable.Type.Decimal.To.BitString](Comparable.Type.Decimal.To.BitString.md)
  - [Comparable.Type.Decimal.To.Decimal](Comparable.Type.Decimal.To.Decimal.md)
  - [Comparable.Type.Decimal.To.Float](Comparable.Type.Decimal.To.Float.md)
  - [Comparable.Type.Decimal.To.Integer](Comparable.Type.Decimal.To.Integer.md)
  - [Comparable.Type.Float.To.Decimal](Comparable.Type.Float.To.Decimal.md)
  - [Comparable.Type.Integer.To.Decimal](Comparable.Type.Integer.To.Decimal.md)
  - [Comparable.Type.List.To.List](Comparable.Type.List.To.List.md)
  - [Comparable.Type.Map.To.Map](Comparable.Type.Map.To.Map.md)
  - [Comparable.Type.NaiveDateTime.To.NaiveDateTime](Comparable.Type.NaiveDateTime.To.NaiveDateTime.md)
  - [Comparable.Type.Time.To.Time](Comparable.Type.Time.To.Time.md)
  - [Comparable.Type.Tuple.To.Tuple](Comparable.Type.Tuple.To.Tuple.md)

## Mix Tasks

- Other
  - [mix ash](Mix.Tasks.Ash.md): Prints Ash tasks and their information.
  - [mix ash.codegen](Mix.Tasks.Ash.Codegen.md): Runs all codegen tasks for any extension on any resource/domain in your application.
  - [mix ash.extend](Mix.Tasks.Ash.Extend.md): Adds an extension or extensions to the domain/resource
  - [mix ash.gen.base_resource](Mix.Tasks.Ash.Gen.BaseResource.md): Generates a base resource
  - [mix ash.gen.change](Mix.Tasks.Ash.Gen.Change.md): Generates a custom change
  - [mix ash.gen.custom_expression](Mix.Tasks.Ash.Gen.CustomExpression.md): Generates a custom expression
  - [mix ash.gen.domain](Mix.Tasks.Ash.Gen.Domain.md): Generates an Ash.Domain
  - [mix ash.gen.enum](Mix.Tasks.Ash.Gen.Enum.md): Generates an Ash.Type.Enum
  - [mix ash.gen.gettext](Mix.Tasks.Ash.Gen.Gettext.md): Copies Ash's `.pot` file into your application's `priv/gettext/` directory.
  - [mix ash.gen.preparation](Mix.Tasks.Ash.Gen.Preparation.md): Generates a custom preparation
  - [mix ash.gen.resource](Mix.Tasks.Ash.Gen.Resource.md): Generate and configure an Ash.Resource.
  - [mix ash.gen.validation](Mix.Tasks.Ash.Gen.Validation.md): Generates a custom validation
  - [mix ash.generate_livebook](Mix.Tasks.Ash.GenerateLivebook.md): Generates a Livebook for each Ash domain.
  - [mix ash.generate_policy_charts](Mix.Tasks.Ash.GeneratePolicyCharts.md): Generates a Mermaid Flow Chart for a given resource's policies.
  - [mix ash.generate_resource_diagrams](Mix.Tasks.Ash.GenerateResourceDiagrams.md): Generates a Mermaid Resource Diagram for each Ash domain.
  - [mix ash.gettext.extract](Mix.Tasks.Ash.Gettext.Extract.md): Extracts translatable error messages from Ash source files and generates
a `.pot` (Portable Object Template) file.
  - [mix ash.install](Mix.Tasks.Ash.Install.md): Installs Ash into a project. Should be called with `mix igniter.install ash`
  - [mix ash.migrate](Mix.Tasks.Ash.Migrate.md): Runs all migration tasks for any extension on any resource/domain in your application.

  - [mix ash.patch.extend](Mix.Tasks.Ash.Patch.Extend.md): Adds an extension or extensions to the domain/resource. Use `ash.extend` instead.

  - [mix ash.reset](Mix.Tasks.Ash.Reset.md): Runs all tear down tasks for any extension on any resource/domain in your application, followed by setup tasks.

  - [mix ash.rollback](Mix.Tasks.Ash.Rollback.md): Runs all rollback tasks for any extension on any resource/domain in your application.

  - [mix ash.setup](Mix.Tasks.Ash.Setup.md): Runs all setup tasks for any extension on any resource/domain in your application.
  - [mix ash.tear_down](Mix.Tasks.Ash.TearDown.md): Runs all tear down tasks for any extension on any resource/domain in your application.

