All notable changes to this project will be documented in this file.

[0.17.1] - 2026-10-08

๐Ÿ› Bug Fixes

  • Precast parameters whose schema reference is not resolved yet (#161) (Stefan Fochler)

[0.17.0] - 2026-10-04

This release brings a migration path for OpenApiSpex users.

Oaskit now provides an agent skill that migrates a Phoenix application from OpenApiSpex to Oaskit. Scripts rewrite the schemas, controllers and tests, and the agent handles the remaining cases. See the Migrating from OpenApiSpex guide to install it and choose what your API clients keep.

Oaskit also supports more of what OpenApiSpex applications rely on:

  • JSON request bodies that are not objects, such as arrays, are validated.
  • Parameters whose schema type is a union, such as [:integer, :null], are cast.
  • Oaskit.warmup_spec_cache/2 and Oaskit.SpecCacheWarmup build the spec at boot. Concurrent first requests now wait for a single build.

JSV 0.26 adds context data to normalized errors, so error handlers can render the former OpenApiSpex error format without parsing messages. Oaskit now requires JSV 0.26.

Breaking: parameters with a type union including string no longer pass numeric or boolean strings unchanged. With [:integer, :string], "007" is cast to 7.

๐Ÿš€ Features

  • Serialize spec builds and add Oaskit.warmupspec_cache/2 (_lud)
  • [breaking] Cast parameter values for type unions (lud)

๐Ÿ› Bug Fixes

  • Validate non-object JSON request bodies wrapped by Plug (lud)

๐Ÿ“š Documentation

  • Provide a migration skill for OpenAPI 3.0 users (lud)
  • Documentation changes around new JSV error ctx values (lud)

[0.16.1] - 2026-09-28

๐Ÿ› Bug Fixes

  • Fix transforming single example into examples map (lud)
  • Correctly take default request/response descriptions from schema modules as documented (lud)
  • Keep description on request bodies (lud)
  • Raise explicit error for invalid request body definitions (lud)
  • Accept maps as parameter definitions (lud)

๐Ÿšœ Refactor

  • Share media type content casting between request bodies and responses (lud)

๐Ÿ“š Documentation

  • Fix operation/2 docs and README inline schema wording (#153) (Ludovic Dem)
  • Set JSON content type in guide tests, mention HTML errors in README (lud)

โš™๏ธ Miscellaneous Tasks

  • Various typo fixes (lud)

[0.16.0] - 2026-09-25

๐Ÿš€ Features

  • [breaking] Drop intermediary JSON schema errors from JSON error responses (lud)

[0.15.0] - 2026-09-22

๐Ÿš€ Features

  • Support description, deprecated and allowReserved on parameters (#147) (Stefan Fochler)

๐Ÿ› Bug Fixes

  • Require timezone offset in the time format per RFC 3339 (lud)

๐Ÿ“š Documentation

  • Added missing docs for public API (lud)

๐Ÿงช Testing

  • Updated orval build (lud)

โš™๏ธ Miscellaneous Tasks

  • Limit justfile verbosity on mix.deps (lud)

[0.14.2] - 2026-07-06

๐Ÿ› Bug Fixes

  • Handle new texture 1.2 http structured fields parse errors (lud)

[0.14.1] - 2026-07-05

๐Ÿ› Bug Fixes

  • Removed required openIdConnectUrl parameter for mutualTLS security scheme (lud)

๐Ÿงช Testing

  • Cover HTML rendering of header validation errors (lud)
  • Cover HTML rendering and escaping of body validation errors (lud)
  • Guard against query-object-key XSS via a plain GET link (lud)

๐Ÿ›ก๏ธ Security

  • Prevent XSS in default HTML error handler (lud)
  • Pin Redoc CDN bundle with subresource integrity (lud)

[0.14.0] - 2026-06-28

๐Ÿš€ Features

  • Support object type parameters (lud)
  • Validate response headers in Oaskit.Test.validresponse/3 (_lud)

๐Ÿ“š Documentation

  • Simplify custom web module definition for API controllers (lud)

[0.13.2] - 2026-06-26

๐Ÿ“š Documentation

  • Encourage users to use custom controller setup in web module (lud)
  • Show how to use @externalresource for imported specs (_lud)

[0.13.1] - 2026-05-29

๐Ÿ“š Documentation

  • Fix docs for JSV module based schemas now expecting jsonschema/0 (#98) (_Ludovic Dem)

โš™๏ธ Miscellaneous Tasks

  • Fix compilation warnings for Elixir 1.20 (lud)

[0.13.0] - 2026-05-10

๐Ÿš€ Features

  • Upgrade to JSV 0.19 new cast system (lud)

[0.12.0] - 2026-03-19

๐Ÿš€ Features

  • [breaking] Changed schema titles for all Oaskit errors, possibly impacting client generators (lud)

โš™๏ธ Miscellaneous Tasks

  • Updated license to Apache-2.0 (lud)

[0.11.0] - 2026-01-20

๐Ÿš€ Features

  • Pass the :extensions options to the security plug (lud)

๐Ÿ› Bug Fixes

  • Added validation constraints for security scheme objects (lud)

[0.10.1] - 2026-01-15

๐Ÿ› Bug Fixes

  • Relax climate dependency version requirement (_lud)

[0.10.0] - 2026-01-08

๐Ÿ›ก๏ธ Security

  • [breaking] The security plug is now called on all operations (lud)

[0.9.1] - 2025-12-31

๐Ÿ› Bug Fixes

  • Improve handling of shared and operation tags (#69) (Jaden)
  • Fixed merging of parameters and tag with operation macro (lud)

[0.9.0] - 2025-12-11

๐Ÿš€ Features

  • [breaking] Renamed unprocessableentity to unprocessable_content (_lud)

[0.8.0] - 2025-11-21

๐Ÿš€ Features

  • Added experimental support for operation extensions (lud)

๐Ÿ› Bug Fixes

  • Take all existing operation fields from operation macro (lud)

[0.7.0] - 2025-11-13

๐Ÿš€ Features

  • Support explode and delimiters in query parameters validator (lud)
  • Automatically strip '[]' suffix from parameter names in validation (lud)
  • Add support to simple header parameters (#37) (Yannis Weishaupt)
  • Add precast for array of ref query parameter (#38) (Yannis Weishaupt)

๐Ÿšœ Refactor

  • Simplify parameter precast build code (lud)
  • Return explicit server config fetch errors (lud)

๐Ÿ“š Documentation

  • Document security option on operation macro (lud)

๐Ÿงช Testing

  • Instrument Orval to test enforced array brackets (lud)

[0.6.0] - 2025-10-13

๐Ÿš€ Features

  • Added operation-level security check using user-defined plugs (lud)
  • Added support for root level security requirements (lud)
  • Handling security is now mandatory (lud)

๐Ÿ› Bug Fixes

  • Ensure response body is a binary in Oaskit.Test.validresponse (#23) (_Yannis Weishaupt)
  • Fixed normalization of %Reference{} structs (lud)

[0.5.1] - 2025-10-10

๐Ÿ› Bug Fixes

  • Don't erase existing private conn data in ValidateRequest (#20) (Yannis Weishaupt)

๐Ÿงช Testing

  • Ensure spec and operation id are preserved in private conn data (lud)

[0.5.0] - 2025-09-16

๐Ÿš€ Features

  • [breaking] ABNF parser dependency isn't optional anymore (lud)

[0.4.1] - 2025-08-25

๐Ÿš€ Features

  • Expose SpecValidator and SpecDumper tools (lud)

[0.4.0] - 2025-08-21

๐Ÿš€ Features

  • Provide request and response data abstractions for custom validations (lud)

[0.3.1] - 2025-07-18

๐Ÿš€ Features

  • Added the :unprefix option to remove an URL prefix in Paths.fromrouter/2 (_lud)

[0.3.0] - 2025-07-10

โš™๏ธ Miscellaneous Tasks

  • Upgrade OpenAPI spec schemas for JSV 0.10 (lud)

[0.2.0] - 2025-07-05

๐Ÿš€ Features

  • Provide a JSON schema for the default error responses (lud)

[0.1.2] - 2025-06-30

๐Ÿš€ Features

  • Provide a controller to serve the specs and Redoc UI (lud)

[0.1.1] - 2025-06-29

๐Ÿ“š Documentation

  • Fix doc rendering on hexdocs.pm (lud)

โš™๏ธ Miscellaneous Tasks

  • Setup versioning (lud)

[0.1.0] - 2025-06-29

๐Ÿš€ Features

  • Initialize from proof of concept (lud)

โš™๏ธ Miscellaneous Tasks

  • Hex package setup (lud)