openapi-interfaces 0.4.0

Generate OpenAPI schemas for related GET, POST, PUT and JSON Merge Patch types
# 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.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.4.0 - 2022-06-13

### Changed

- `--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 on `nullable: true` and `oneOf:`. It also now sets the file version number to `openapi: 3.0.0` when used, because 3.1 does not support `nullable: true`.

## 0.3.0 - 2022-06-13

### Added

- Stable release. See [`CHANGELOG.md`](https://github.com/faradayio/openapi-interfaces/blob/main/CHANGELOG.md) for details of fixes and features since 0.2.1.

### Changed

- See the "Changed" section in v0.2.2-beta.4. This should only affect people using `discriminator` and `oneOf` interfaces.

## 0.3.0-rc.3 - 2022-06-10

### Fixed

- Include the discriminator in `Put` types, as originally planned (#31).

## 0.3.0-rc.2 - 2022-06-09

### Fixed

- Fix bug where we generated spurious `type: ~` entries for certain schema types using `oneOf` (#30).

## 0.3.0-rc.1 - 2022-06-08

### Added

- Binaries for Linux and Mac systems ([#27](https://github.com/faradayio/openapi-interfaces/issues/27)).
- Allow including definitions from external files using `$includeFiles` ([#24](https://github.com/faradayio/openapi-interfaces/issues/24)). See [`examples/include_files/`](https://github.com/faradayio/openapi-interfaces/tree/main/examples/include_files) for an example of how this works. Start from `base.yml`.

### Changed

- See the "Changed" section in v0.2.2-beta.4. This should only affect people using `discriminator` and `oneOf` interfaces.

### Fixed

- Improved error messages in many cases ([#28](https://github.com/faradayio/openapi-interfaces/issues/28)).

## 0.2.2-beta.5 - 2022-06-03

### Fixed

- Published release is made from the public `main` branch.

## 0.2.2-beta.4 - 2022-06-03 [YANKED]

### Fixed

- Copy the `description` of an interface to all the variants we generate ([#23](https://github.com/faradayio/openapi-interfaces/issues/23)). This will allow removing the `allOf` workaround that has been used with Readme.com.
- Emit `type: "object"` for interfaces using `oneOf` ([#13](https://github.com/faradayio/openapi-interfaces/issues/13)).

### Changed

- BREAKING: Completely overhaul how we handle `oneOf` interfaces and discriminators ([#18](https://github.com/faradayio/openapi-interfaces/issues/18)). This work is ongoing and not yet fully documented, but you can find a working example in [`examples/oneof_example.yml`](https://github.com/faradayio/openapi-interfaces/blob/main/examples/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](https://github.com/faradayio/openapi-interfaces/issues/26)).

## 0.2.2-beta.3 - 2022-04-22

### Added

- Added support for `title` in interfaces.

### Fixed

- Pass through `description` in interfaces.
- Do not output `discriminator: null` if no discriminator is present.

### Fixed

- Pass through

## 0.2.2-beta.2 - 2022-04-16

### Added

- **Experimental:** Add `title` and `description` to the `oneOf` schemas introduced for `MergePatch` types. The goal here is to make auto-generated documentation prettier.

## 0.2.2-beta.1 - 2022-04-15

### Added

- **Experimental:** Add support for using `oneOf` in interfaces. See [`oneof_example.yml`](https://github.com/faradayio/openapi-interfaces/blob/main/examples/oneof_example.yml) and [`oneof_example_output.yml`](https://github.com/faradayio/openapi-interfaces/blob/main/examples/oneof_example_output.yml) for example input and output.

## 0.2.1 - 2022-04-12

### Added

- Allow a [`description` field](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#fixed-fields-19) as an optional sibling to`$interface` and `$ref`. This will be included in the generated `$ref` field.

## 0.2.0 - 2021-10-02

### Added

- If `--avoid-type-null` is passed, generate `MergePatch` types that with the schema `type: 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.

### Changed

- 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` or `Put` variants.

## 0.1.3 - 2021-10-02

More fixes for 0.1.1. It looks like we need more regression tests for the corner cases.

### Fixed

- Fixed bug introduced in 0.1.1 that broke `$ref` and `$interface` in `MergePatch` types.

## 0.1.2 - 2021-10-02

### Fixed

- Fixed bug introduced in 0.1.1 that prevented using `$ref` and `$interface` in with array schemas.
- Cleaned up some error messages.

## 0.1.1 - 2021-10-01

### Added

- Added support for `components.responses`.
- Slightly improved error messages for interfaces and schemas.

## 0.1.0 - 2021-09-23

### Added

- Initial implementation of interface generation.