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
Changed
- Updated Ash to 3.31 and Igniter to 0.8.3. The resolved dependency refresh also includes Mint's HTTP/1 header-size and HTTP/2 continuation-frame security fixes.
- Custom Ash types now receive their declared constraints in
json_schema/1, matching AshJsonApi's callback contract.
Fixed
- Exclude attributes, calculations, and aggregates that Ash marks as unsortable from JSON:API sort parameters.
- Exclude calculations with required arguments from sort parameters.
- Map array length and item constraints to
minItems,maxItems, and the nesteditemsschema, including nullable items. - Preserve non-string
one_ofvalues and emit the strict UUIDv7 pattern.
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.4.0 (2026-08-24)
Features:
guidance: add terse prose skills by futhr
guidance: align automatic repository skills by Tobias Bohwalli
Bug Fixes:
bind publication to validated release identity by Tobias Bohwalli
harden schema generation and releases by Tobias Bohwalli
align generated schemas with Ash metadata by futhr
support domains without ash_json_api by futhr
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