All 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.
- 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.
- 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
- 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)
- scope generated schemas and tags to routed resources via :resource_scope by futhr
-
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)
- document typed structs with their declared field types by HaimKortovich
v0.2.0 (2026-06-10)
-
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.
-
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
-
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)
- remove HTML div wrapper for hex.pm rendering by Tobias Bohwalli