Releases: mattpolzin/OpenAPIKit
Add `OrderedDictionary`
Many of the Dictionary
types have been replaced by a new OrderedDictionary
. This means that encoding and decoding can retain the ordering of JSON/YAML objects. This ability is still contingent upon the specific encoder or decoder being used retaining that information in the course of its duties.
The Foundation library JSONEncoder
retains ordering on OS X, but does not on Linux. The Foundation JSONDecoder
does not retain ordering on any operating system. There is, however, currently an alternative that does retain ordering on all operating systems and seems worth trying: FineJSON.
The most popular YAML decoder/encoder, Yams, does retain ordering.
Additions and consistent `Either` specialization ordering
- Added XML Object
- Added security to Operations Object
- Swapped order of generic specializations on
Either
types in a few places so thatJSONReference
is always the first specialization parameter when present.
Big schema generation changes
Big changes to the protocols and functions responsible for generating OpenAPI schemas from Swift types. NOTE this specifically refers to generating JSONSchemas
.
Protocols were renamed or removed, functions were renamed, removed, and added. Bugs were fixed. It all functions in roughly the same way but things are much less thrown together now that I've had time to revisit the code.
Refinements
- Omit some things that are not required when they have their default values.
- Add some Content Types.
- Some file restructuring and test coverage.
Better OpenAPI node generation for arbitrary Sampleable types
Brought a generation function over from JSONAPI+OpenAPI that really belongs here; that function generates OpenAPI nodes from any type that conforms to Sampleable. This means many types of JSON data can get out of box documentation.
Renamed a few functions and similar small changes, did a lot of work on node generation that could break downstream stuff in JSONAPI+OpenAPI dependents.
Additions, Tests, Fixes
- Add
style
andexplode
toOpenAPI.Content.Encoding
- Move vendor extensions encoding into shared protocol extension.
- Add a bunch of custom encoding implementations to fix a bug where
null
was being written (from a small subset of types) when a property should simply be omitted from the encoded value. - Add some tests.
- Better error checking around vendor extension decoding.
The change to omit certain values instead of encoding null
is both a fix and a breaking change.
Add remaining `Parameter` properties
Added remaining Parameter
properties. These were added under a new Parameter.Schema
type because they are not applicable if a Content.Map
is used instead of a JSONSchema
.
Some restructuring was done when nesting Parameter
's JSONSchema
under a new Parameter.Schema
type.
Ease-of-use improvements
Focused on making declarative OpenAPI documents easier to write in Swift.
A number of changes to function/initializer arguments or argument names were made. Some of these are breaking and others are not but all of them make declarative document definitions cleaner.
Add convenience constructors for `Parameter.schemaOrContent`
0.5.4 Add convenience constructors for Parameter schemaOrContent
Add `trace` HttpVerb case
Add missing HttpVerb.trace
case.