Packages

OpenAPI 3.0 and 3.1 specification generator for Ash Framework domains

Current section

Files

Jump to
ash_oaskit CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [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 nested
`items` schema, including nullable items.
- Preserve non-string `one_of` values 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
- 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)
[Unreleased]: https://github.com/futhr/ash_oaskit/compare/v0.3.0...HEAD
[0.1.0]: https://github.com/futhr/ash_oaskit/releases/tag/v0.1.0
<!-- changelog -->
## [v0.4.1](https://github.com/futhr/ash_oaskit/compare/v0.4.0...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](https://github.com/futhr/ash_oaskit/compare/v0.3.0...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](https://github.com/futhr/ash_oaskit/compare/v0.2.1...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](https://github.com/futhr/ash_oaskit/compare/v0.2.0...v0.2.1) (2026-06-10)
### Bug Fixes:
* document typed structs with their declared field types by HaimKortovich
## [v0.2.0](https://github.com/futhr/ash_oaskit/compare/v0.1.1...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 only
`public? true` fields, matching what AshJsonApi serializes. Mark fields
`public? true` if your spec relied on the old behavior.
* derive request body schemas from the routed action by futhr
POST/PATCH bodies now reference `{Resource}{Action}Input` schemas derived
from the routed action's `accept` list and public arguments (previously
they pointed at the response `Attributes` schema). PATCH bodies require
`data.id`. Blanket `CreateInput`/`UpdateInput` schemas 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-wide `json_api` `prefix` is 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](https://github.com/futhr/ash_oaskit/compare/v0.1.0...v0.1.1) (2026-04-02)
### Bug Fixes:
* remove HTML div wrapper for hex.pm rendering by Tobias Bohwalli