# ash v3.14.0 - 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 & 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.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. - 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): Used when a callback returns an invalid 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.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.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.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.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.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.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.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.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.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.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.Igniter](Ash.Igniter.md): Codemods and utilities for working with Ash & Igniter - [Ash.Info](Ash.Info.md): General introspection helpers for Ash applications. - [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.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.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.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.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.