Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
:resource_scopeoption (:all|:routed, default:all) onuse AshOaskit,AshOaskit.spec/1, and the version shortcuts. With:routed, only resources contributing at least one JSON:API route seed the generated schemas and tags; relationship and embedded destinations are still pulled in transitively, so the components are exactly the closure the served paths reference. Use it when a listed domain contains internal resources whose shape should not appear in a public spec.
0.1.0 - 2026-03-31
Added
- OpenAPI 3.0 and 3.1 specification generation from Ash domains
- Automatic schema extraction from Ash resource attributes
- AshJsonApi route integration for path generation
- Comprehensive type mapping:
- String types:
string,ci_string,atom - Numeric types:
integer,float,decimal - Boolean type
- Date/time types:
date,time,datetime,utc_datetime,utc_datetime_usec,naive_datetime - Other types:
uuid,binary,map,term - Array types with nested type support
- String types:
- Constraint support:
min,max,min_length,max_length,match,one_of - Plug controller for serving specs from Phoenix applications
- Mix task for CLI spec generation (
mix ash_oaskit.generate) - Igniter installation task (
mix igniter.install ash_oaskit) - JSON and YAML output formats
- Configurable API metadata (title, version, description, servers, contact, license)
v0.3.0 (2026-06-30)
Features:
- scope generated schemas and tags to routed resources via :resource_scope by futhr
Bug Fixes:
honor JSON:API names and visibility in specs by futhr
derive schema and tag names from the JSON:API type by futhr
v0.2.1 (2026-06-10)
Bug Fixes:
- document typed structs with their declared field types by HaimKortovich
v0.2.0 (2026-06-10)
Breaking Changes:
only include public fields in generated specs by futhr
The visibility filter checked a
:private?field that does not exist on Ash 3.x structs, so specs exposed every attribute, calculation, aggregate, and relationship — including non-public ones. Specs now include onlypublic? truefields, matching what AshJsonApi serializes. Mark fieldspublic? trueif your spec relied on the old behavior.derive request body schemas from the routed action by futhr
POST/PATCH bodies now reference
{Resource}{Action}Inputschemas derived from the routed action'sacceptlist and public arguments (previously they pointed at the responseAttributesschema). PATCH bodies requiredata.id. BlanketCreateInput/UpdateInputschemas are no longer emitted for resources without body-bearing routes.include resource-level routes and domain prefix in paths by futhr
Routes declared on the resource (
json_api do routes do ... end end) now appear in specs, and the domain-widejson_apiprefixis prepended to generated paths.
Features:
generate a spec module from the igniter installer by futhr
serve spec modules and Redoc UI from AshOaskit.Router by futhr
add spec modules via use AshOaskit by futhr
enrich operation summaries and descriptions by futhr
document JSON:API query parameters on related routes by futhr
complete Ash built-in type mappings by futhr
Bug Fixes:
derive HTTP methods and operations from the route struct by futhr
emit valid nullable $ref schemas for OpenAPI 3.0 by futhr
v0.1.1 (2026-04-02)
Bug Fixes:
- remove HTML div wrapper for hex.pm rendering by Tobias Bohwalli