# ash_versioned v0.2.0 - API Reference

## Modules

- [AshVersioned.ActorValue](AshVersioned.ActorValue.md): Resolves the provided actor using the actor configuration.

- [AshVersioned.Changes.ActorAttribution](AshVersioned.Changes.ActorAttribution.md): Ensures that actor attribution is applied to the changeset extracted from
`context.actor`. See `AshVersioned.ActorValue`, `AshVersioned.Resource.BelongsToActor`,
`AshVersioned.Resource.ReferenceActor` for more details.

- [AshVersioned.Changes.RejectUpsert](AshVersioned.Changes.RejectUpsert.md): Rejects any create call that has `upsert?: true` at runtime (see
`AshVersioned.Transformers.WireActions`).

- [AshVersioned.IdentityScoping](AshVersioned.IdentityScoping.md): Determines whether an `Ash.Resource.Identity` is usable on an `AshVersioned.Resource`.
All user-defined identities on a versioned resource must conform to exactly one of these
constraints
- [AshVersioned.Preparations.FilterLatest](AshVersioned.Preparations.FilterLatest.md): Scopes read actions to include `latest_attribute == true`, and if `archive` is declared
on the resource, `archived == false`.
- [AshVersioned.ReferenceActorValue](AshVersioned.ReferenceActorValue.md): The default `transform` function for a `reference_actor` field.

- [AshVersioned.Relationships](AshVersioned.Relationships.md): Adds `belongs_to_versioned`, `has_one_versioned`, and `has_many_versioned` to the
`relationships` section of any resource for relationships _to_ `AshVersioned.Resource`
resources.
- [AshVersioned.Resource](AshVersioned.Resource.md): Configures a resource for versioning. The source table gets a stable resource
identifier, a version number, and a flag marking a row as the latest version, and
mutations append new rows instead of updating in place.
- [AshVersioned.Resource.Archive](AshVersioned.Resource.Archive.md): Represents the `archive` entity declared inside the `versioning` DSL section of
`AshVersioned.Resource`.
- [AshVersioned.Resource.BelongsToActor](AshVersioned.Resource.BelongsToActor.md): Represents a `belongs_to_actor` declared inside the `versioning` DSL section of
`AshVersioned.Resource`.

- [AshVersioned.Resource.Identity](AshVersioned.Resource.Identity.md): Represents the `identity` entity declared inside the `versioning` DSL section of
`AshVersioned.Resource`.

- [AshVersioned.Resource.Info](AshVersioned.Resource.Info.md): Introspection helpers for the `AshVersioned.Resource` extension.

- [AshVersioned.Resource.Latest](AshVersioned.Resource.Latest.md): Represents the `latest` entity declared inside the `versioning` DSL section of
`AshVersioned.Resource`.

- [AshVersioned.Resource.ManualIncrement](AshVersioned.Resource.ManualIncrement.md): Implements the core atomic primitive for `AshVersioned.Resource`s: mark the current
latest row as stale and insert a new version in a single transaction. This works for all
update actions and, if the resource has `archive` set, destroy actions.
- [AshVersioned.Resource.ReferenceActor](AshVersioned.Resource.ReferenceActor.md): Represents a `reference_actor` field declared inside the `versioning` DSL section of
`AshVersioned.Resource`.
- [AshVersioned.Resource.Version](AshVersioned.Resource.Version.md): Represents the `version` entity declared inside the `versioning` DSL section of
`AshVersioned.Resource`.

- [AshVersioned.Transformers.AddFields](AshVersioned.Transformers.AddFields.md): Resolves the `AshVersioned.Resource` entities for `identity`, `version`, `latest`, and
(optionally) `archived`. For the required versioning attributes, defaults are provided
if not declared. These are used to configure the resource for versioning, defining the
attributes and default read scopes.
- [AshVersioned.Transformers.ResolveVersionedRelationships](AshVersioned.Transformers.ResolveVersionedRelationships.md): Resolves every `belongs_to_versioned` relationship.
- [AshVersioned.Transformers.WireActions](AshVersioned.Transformers.WireActions.md): Wires up the actions and overrides that make versioning work.
- [AshVersioned.Verifiers.VerifyActionsRegistered](AshVersioned.Verifiers.VerifyActionsRegistered.md): Ensures that every action named in `exclude_update_actions` is a defined update action
on the resource, and that every action named in `exclude_read_actions` is a defined read
action.
- [AshVersioned.Verifiers.VerifyCreateActionPresent](AshVersioned.Verifiers.VerifyCreateActionPresent.md): An `AshVersioned.Resource` resource must declare at least one `create` action.

- [AshVersioned.Verifiers.VerifyIdentityScoping](AshVersioned.Verifiers.VerifyIdentityScoping.md): Every `identity` on an `AshVersioned.Resource` resource must pass
`AshVersioned.IdentityScoping.safe?/4`.

- [AshVersioned.Verifiers.VerifyNoArchivalConflict](AshVersioned.Verifiers.VerifyNoArchivalConflict.md): `AshArchival.Resource` and `AshVersioned.Resource` cannot be combined.

- [AshVersioned.Verifiers.VerifyNoCustomManual](AshVersioned.Verifiers.VerifyNoCustomManual.md): AshVersioned does not support resource-supplied `manual` update or destroy action
implementations.

- [AshVersioned.Verifiers.VerifyNotDeletable](AshVersioned.Verifiers.VerifyNotDeletable.md): An `AshVersioned.Resource` is not deletable. Resources can be declared with `archive`,
which turns destroy actions to soft deletions supported by AshVersioned.

- [AshVersioned.Verifiers.VerifyPrimaryKey](AshVersioned.Verifiers.VerifyPrimaryKey.md): An `AshVersioned.Resource` must declare a generated surrogate primary key. AshVersioned
does not support natural or composite primary keys.

- [AshVersioned.Verifiers.VerifyVersionedRelationships](AshVersioned.Verifiers.VerifyVersionedRelationships.md): Verifies that every `belongs_to_versioned`, `has_one_versioned`, and
`has_many_versioned` relationship points to an `AshVersioned.Resource`, and that every
`belongs_to_versioned` joins on the destination's identity attribute.
- [AshVersioned.Verifiers.VerifyVersioningAttributes](AshVersioned.Verifiers.VerifyVersioningAttributes.md): Verifies every attribute AshVersioned relies on, whether generated or adopted.

- [AshVersioned.VersionedRelationship](AshVersioned.VersionedRelationship.md): Shared configuration for relationships to versioned resources, used by
`belongs_to_actor` (`AshVersioned.Resource`) and by `belongs_to_versioned`,
`has_one_versioned`, and `has_many_versioned` (`AshVersioned.Relationships`).

## Mix Tasks

- [mix publish_check](Mix.Tasks.PublishCheck.md): Verifies that a pending release is internally consistent.

