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.
--avoid-type-null
is now deprecated, and acts as an alias for--use-nullable-for-merge-patch
. This flag now generates complete OpenAPI 3.0-compatible MergePatch types using a clever hack based onnullable: true
andoneOf:
. It also now sets the file version number toopenapi: 3.0.0
when used, because 3.1 does not supportnullable: true
.
- Stable release. See
CHANGELOG.md
for details of fixes and features since 0.2.1.
- See the "Changed" section in v0.2.2-beta.4. This should only affect people using
discriminator
andoneOf
interfaces.
- Include the discriminator in
Put
types, as originally planned (#31).
- Fix bug where we generated spurious
type: ~
entries for certain schema types usingoneOf
(#30).
- Binaries for Linux and Mac systems (#27).
- Allow including definitions from external files using
$includeFiles
(#24). Seeexamples/include_files/
for an example of how this works. Start frombase.yml
.
- See the "Changed" section in v0.2.2-beta.4. This should only affect people using
discriminator
andoneOf
interfaces.
- Improved error messages in many cases (#28).
- Published release is made from the public
main
branch.
- Copy the
description
of an interface to all the variants we generate (#23). This will allow removing theallOf
workaround that has been used with Readme.com. - Emit
type: "object"
for interfaces usingoneOf
(#13).
- BREAKING: Completely overhaul how we handle
oneOf
interfaces and discriminators (#18). This work is ongoing and not yet fully documented, but you can find a working example inexamples/oneof_example.yml
. This will require changing existing YAML files to use the new, TypeScript-like style. However, this feature is still incomplete. For ongoing discussion, see (#26).
- Added support for
title
in interfaces.
- Pass through
description
in interfaces. - Do not output
discriminator: null
if no discriminator is present.
- Pass through
- Experimental: Add
title
anddescription
to theoneOf
schemas introduced forMergePatch
types. The goal here is to make auto-generated documentation prettier.
- Experimental: Add support for using
oneOf
in interfaces. Seeoneof_example.yml
andoneof_example_output.yml
for example input and output.
- Allow a
description
field as an optional sibling to$interface
and$ref
. This will be included in the generated$ref
field.
- If
--avoid-type-null
is passed, generateMergePatch
types that with the schematype: object
. This allows basic compatibility with OpenAPI 3.0, but it skips all merge patch validation. - When run on OpenAPI 3.0 files, act as if
--avoid-type-null
were set.
- BREAKING: Don't generate schemas that would only match the empty object. For example, if an object has no mutable fields, don't generate the
MergePatch
orPut
variants.
More fixes for 0.1.1. It looks like we need more regression tests for the corner cases.
- Fixed bug introduced in 0.1.1 that broke
$ref
and$interface
inMergePatch
types.
- Fixed bug introduced in 0.1.1 that prevented using
$ref
and$interface
in with array schemas. - Cleaned up some error messages.
- Added support for
components.responses
. - Slightly improved error messages for interfaces and schemas.
- Initial implementation of interface generation.