Changelog of @hackage/openapi3 3.2.4

Unreleased

3.2.4

  • Give title to sub schemas of sum types #88.

3.2.3

  • Fix generation of allOf / oneOf schemas when variants are not objects #49.
  • Support parsing OpenAPI 3.0.1, 3.0.2, 3.0.3 versions #68.
  • Support GHC-9.4 #61.
  • Output scopes in schema even if empty #65.
  • Fix mtl-2.3 compatibility #60.

3.2.2

  • Fix bug with infinite recursion in GToSchema #37.

3.2.1

  • Support aeson-2.0.3.
  • Support GHC-9.2 (doctests still fail).

3.2.0

  • Support aeson-2 #34.
  • Use SecurityDefinitions type for _componentsSecuritySchemes #32.

3.1.0

  • Use format: date-time for ToParamSchema ZonedTime instance (see #20).
  • Support generating schema for any polymorphic types via Typeable (see #19).
  • Allow hashable-1.3.1, prettify doctests (see #18).

3.0.2.0

  • Fix definition for HTTP security scheme (see #10);
  • Fix error message in exclusiveMaximum / exclusiveMinimum validation (see #15);

3.0.1.0

  • Support polymorphic types in schema generator.

3.0.0

  • Switch to OpenAPI 3.0 specification.

2.6.1

  • More GHC-8.10 related cleanup, tighten lower bound on some dependencies. (see #216);
  • Add "format" field for uint32 and uint64 (see #215);

2.6

  • GHC 8.10 support (see #210);
  • Move aeson-pretty to other dependencies (see #206);
  • Merge OAuth2 scopes (see #151);

2.5

Highlights:

  • Add instance for TimeOfDay (see #196);
  • Add support for optics (see #200);
  • Slightly better validation errors (see #195);

Fixes and minor changes:

  • Minor cleanup (see #194);
  • Allow base-4.13 and other GHC-8.8 related stuff (see #198);
  • Fix stack.yaml (see #201);

2.4

  • Allow hashable-1.3, semigroups-0.19, network-3.1, time-1.9, generics-sop-0.5
  • Tags aren't sorted (see #165)
  • Schema type is optional (see #138, #164)
  • Take concrete 'Proxy' as argument (see #180)
  • GHC-8.8 preparations

2.3.1.1

  • Allow network-3.0

2.3.1

  • Add a quickcheck generator for aeson Values that match a swagger schema (see #162)
  • Add ToParamSchema instance for SetCookie (see #173)
  • Make nullary schemas valid (see #168)

2.3.0.1

  • Support GHC-8.6

2.3

Major changes:

  • Add support for additionalProperties with Bool value (see #159);
  • Add ToSchema Object instance (for aeson's Object) (see d72466a);

Dependencies and CI:

  • Aeson 1.4 (see #158);
  • Update .travis.yml (see #160);
  • Allow network 2.7 (see #155);
  • Allow lens-4.17 (see #161);

2.2.2

  • Add ToSchema Version instance
  • Use base-compat-batteries (0.10)
  • PVP bounds

2.2.1

  • Add Semigroup instances
  • GHC-8.4 compatibility
  • `Schema (NonEmpty a) instance (see #141)
  • Fix optional property for unary records (see #142)
  • Add fromAesonOptions helper (see #146)
  • Fix non-termination when using datatypeNameModifier with recursive data types (see #132)

2.2

  • Treat unknown properties as validation errors in validateToJSON (see #126);
  • Add validateJSON and validateJSONWithPatternChecker to validate JSON Value against Schema without classes (see #126);
  • Add more Schema helpers (see #126):
    • genericNameSchema — to give a custom schema Generic-based name;
    • genericDeclareNamedSchemaNewtype — to derive NamedSchema for newtypes;
    • declareSchemaBoundedEnumKeyMapping — to derive more specific Schema for maps with Bounded Enum keys;
  • Add a few tests with invalid Schema.

2.1.6

  • Add ToParamSchema and ToSchema instances for Fixed (see #121) and Natural (see #123);
  • Fix instance for NominalDiffTime (see #121);
  • Fix build for aeson-1.2.2.0 (see #125).

2.1.5

  • Type error by default when deriving Generic-based instances for mixed sum types (see #118);
  • Adjust allOf to accept referenced schemas (see #119);
  • Add instances for Identity (see #116);
  • Add Gitter chat badge (see #114).

2.1.4.1

  • GHC-8.2 support (see #95, #106 and #108);
  • Documentation corrections (see #105);
  • Allow generics-sop-0.3 (see #102);
  • Fix ToSchema example in docs (see #104).

2.1.4

  • Add liftDeclare (see #100);
  • Add MonadDeclare instances for all monad transformers (see #100).

2.1.3

  • Add UUID instances (see #81).
  • Add TypeError ToSchema and ToParamSchema ByteString instances (see #78)
  • Improve documentation for generic sum type instance derivation (see #75)
  • Compile warning free (see #82)

2.1.2.1

  • Bug fix previous release

2.1.2

  • Minor changes:
    • Support aeson-1.0.0.0 (see #70).

2.1.1

  • Minor changes:
    • Proper Schema examples for Char, Day, LocalTime, ZonedTime and UTCTime.

2.1

  • Major changes:
    • Use InsOrdHashMap to preserve insertion order for endpoints and definitions (see #56);
    • Add support for GHC 8.0 (see #65).

2.0.2

  • Fixes:
    • Fix additionalProperties to allow references;
    • Fix ToSchema instances for Map and HashMap (prevent infinite recursion for recursive values).

2.0.1

  • Fixes:
    • Re-export Pattern synonym from Data.Swagger;
    • Documentation fixes.

2.0

  • Major changes:

    • GHC 7.8 support (see #49);
    • Switch to classy field lenses (see #41);
    • Add Data.Swagger.Schema.Validation (see #18);
    • Add Data.Swagger.Operation with helpers (see #50);
    • Add IsString instances for some types (see #47);
    • Add helpers to sketch Schema from JSON (see #48).
  • Minor changes:

    • Make NamedSchema a data rather than type (see #42);
    • Change Definitions to Definitions Schema;
    • Add schema templates for "binary", "byte" and "password" formats (see 63ed597);
    • Add Monoid instance for Contact;
    • Change tags to be Set rather than list.
  • Fixes:

    • Fix schema for () and nullary constructors (see ab65c4a);
    • Fix Operation FromJSON instance to allow missing tags and parameters properties.

1.2.1

  • Minor changes:

    • Change _SwaggerItemsPrimitive type from a Prism' to a more restrictive Review-like Optic'.
  • Fixes:

    • Fix build for GHC 8.0-rc1.

1.2

  • Minor changes (see #36):

    • Change default ToSchema instance for unit data types (i.e. types with one nullable constructor like data Unit = Unit): now these types are treated like sum types with only one alternative;
    • Add generic ToParamSchema instance for unit data types;
    • Add items: [] to schema for () (making it a valid schema).
  • Fixes:

    • Do not omit items: [] from Schema JSON;
    • Do not generate unused definitions for nested newtypes (see #38).

1.1.1

  • Fixes:
    • CollectionFormat Param -> CollectionFormat ParamOtherSchema; this change was necessary after putting CollectionFormat to SwaggerItems.

1.1

  • Major changes:

    • Put CollectionFormat in one place (see 3cc860d).
  • Minor changes:

    • Use Swagger formats for Int32, Int64, Float, Double, Day and ZonedTime (see #32);
    • Export HeaderName, TagName, HttpStatusCode type synonyms;
    • Add ToParamSchema instances for [a], Set a and HashSet a;
    • Add Monoid instances for Header and Example.
  • Fixes:

    • Use overwrite strategy for HashMap SwaggerMonoid instances by default.

1.0

  • Major changes:

    • Add Data and Typeable instances for Data.Swagger types;
    • Merge ParamType/ItemsType/SchemaType into SwaggerType GADT;
    • Merge collection format types into CollectionFormat GADT;
    • Introduce SwaggerItems GADT, replacing Items and SchemaItems in ParamSchema (see #24);
    • Move type, format and items fields to ParamSchema (former SchemaComon);
    • Prepend reference path automatically (see commit 49d1fad) and thus remove "#/definitions/" from user code, leaving much clearer Reference "Name";
    • Change Data.Swagger.Schema (see #19):
      • Change the only method of ToSchema to declareNamedSchema which should produce a NamedSchema along with a list of schema definitions used to produce it;
      • Add declareSchema, declareSchemaRef;
      • Replace genericTo* helpers with genericDeclare* helpers;
      • Add paramSchemaTo[Named]Schema helpers to facilitate code reuse for primitive schemas;
      • Add helpers for inlining Schema references dynamically (see #23);
    • Add ToParamSchema class (see #17) with
      • generic default implementation and
      • instances for some base types compliant with http-api-data instances;
    • Add Data.Swagger.Declare module with
      • DeclareT monad transformer;
      • MonadDeclare type class;
      • various helpers;
    • Rename parameter-related types:
      • Parameter -> Param;
      • ParameterSchema -> ParamAnySchema;
      • ParameterOtherSchema -> ParamOtherSchema;
      • ParameterLocation -> ParamLocation;
      • SchemaCommon -> ParamSchema;
      • parameter* fields renamed to param* fields;
      • schemaCommon* fields renamed to paramSchema* fields;
      • HasSchemaCommon -> HasParamSchema.
  • Minor changes:

    • Replace TH-generated JSON instances with Generic-based (see #25);
    • Drop template-haskell dependency;
    • Omit empty array/object properties from toJSON output (#22);
    • Remove minLength property from schemas for time types;
    • Move SchemaOptions to Data.Swagger.SchemaOptions;
    • Remove useReferences from SchemaOptions (see #23);
    • Place all internal submodules under Data.Swagger.Internal;
    • Better documentation (see #26).

0.4.1

  • Fixes:
    • Use PackageImports for Data.HashSet to avoid test failure on stackage (see #15);
    • Add an upper version bound for aeson due to aeson-0.10.0.0 bug (see bos/aeson#293);
    • Switch to Cabal-based multi GHC Travis config.

0.4

  • Remove Swagger/swagger prefixes;
  • Add ToSchema type class with default generic implementation;
  • Add configurable generic ToSchema helpers;
  • Add doctest test suite;
  • Fixes:
    • Fix HasSchemaCommon instance for Schema;
    • Change minimum, maximum and multipleOf properties to be any number, not necessarily an integer;
    • Fix all warnings.

0.3

  • Fixes:
    • Fix SwaggerMonoid Text instance;
    • Wrap Bool in Maybe everywhere;
    • These changes make all Data.Swagger Monoid instances obey monoid laws (previously right identity law was broken by some instances).

0.2

  • Add Data.Swagger.Lens;
  • Support references;
  • Fixes:
    • Fix FromJSON SwaggerHost instance;
    • Add missing Maybes for field types;
    • Decode petstore swagger.json successfully.