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.1 (2026-09-07)
Bug Fixes:
generation: connect JSON API response and multipart features by Tobias Bohwalli
routes: prevent path overwrites and duplicate operation identifiers by Tobias Bohwalli
parameters: derive typed parameters from route and action capabilities by Tobias Bohwalli
includes: restrict discovery to configured public paths by Tobias Bohwalli
types: preserve compound constraints and warn on unknown mappings by Tobias Bohwalli
filters: document supported typed Ash predicates by Tobias Bohwalli
types: share constrained calculation and aggregate mapping by Tobias Bohwalli
inputs: honor defaults and require nested request members by Tobias Bohwalli
schemas: derive request components from each route contract by Tobias Bohwalli
schemas: discover embedded input and return type dependencies by Tobias Bohwalli
schemas: reject conflicting embedded component owners by Tobias Bohwalli
installer: generate compileable domain-aware scaffolds by Tobias Bohwalli
types: preserve exact decimal wire representations by Tobias Bohwalli
schemas: allow sparse and policy-filtered response fields by Tobias Bohwalli
schemas: resolve local references as JSON Pointers by Tobias Bohwalli
security: describe public operations and response headers correctly by Tobias Bohwalli
modifiers: normalize generated maps before helper updates by Tobias Bohwalli
cli: reject invalid arguments and check the YAML encoder by Tobias Bohwalli
config: forward spec options through router builders by Tobias Bohwalli
routes: retain digit and domain-prefix path parameters by Tobias Bohwalli
deps: enforce secure supported dependency minimums by Tobias Bohwalli
types: omit runtime and unencodable defaults safely by Tobias Bohwalli
schemas: preserve constraints when adding nullability by Tobias Bohwalli
schemas: distinguish resource and collection responses by Tobias Bohwalli
deps: update vulnerable Ash and Mint dependencies by Tobias Bohwalli
Performance Improvements:
- generation: reuse route discovery and completed resource schemas by Tobias Bohwalli
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