# ash_parc v0.1.0 - Table of Contents

> Ash adapter for Parc: one declared authorization policy, gating writes and row-scoping reads across every resource.

## Pages

- [AshParc](readme.md)
- [Changelog](changelog.md)

## Modules

- [AshParc](AshParc.md): Ash adapter for `Parc`, the framework-agnostic PARC authorization contract. `Parc`
defines the request, the pipeline of preparers, the decider, and the
allow/deny/challenge/error verdict (see `Parc` and `Parc.PolicyDecider`); AshParc
binds that contract to Ash's policy DSL, so one policy, declared once, can
authorize every action across every resource.
- [AshParc.PolicyCheck](AshParc.PolicyCheck.md): Generic `Ash.Policy.SimpleCheck` behind `AshParc.can_perform/2`, the enforcement
point (PEP) gating a write or generic action. It builds a `Parc.Request` via
`AshParc.RequestBuilder` (which raises on a context with no recognized subject), runs
it through the policy's own `run/1`, and maps the resulting
`t:Parc.PolicyDecider.response/0` to the check outcome: allow passes, deny and
challenge fail, an error becomes a check error (see `Parc.PolicyDecider`).
- [AshParc.RequestBuilder](AshParc.RequestBuilder.md): Builds a `Parc.Request` from an `Ash.Policy.Authorizer` context wrapped changeset,
query, or action input. This is the request construction half of the AshParc
adapter.
- [AshParc.ResetAshContext](AshParc.ResetAshContext.md): A `Parc.RequestPreparer` that uplifts allowed Ash shared-context keys into the
PARC context itself, then drops the raw `:ash_context` bundle that
`AshParc.RequestBuilder` placed in the request.

