Revision history for OpenAPI-Modern

0.062     2024-04-21 18:11:43Z
          - BREAKING CHANGE: operation_path is dropped from the populated
            $options hash in validate_request, validate_response, and
            find_path, and replaced with path_item_uri
          - "servers" entries are now allowed in openapi documents, but they
            are not yet considered when matching URIs to paths

0.061     2024-04-01 05:33:15Z
          - fixed incompatibility with an internal change in
            JSON::Schema::Modern 0.583

0.060     2024-03-20 20:56:37Z
          - remove use of JSON::MaybeXS, to avoid potential use of JSON::XS;
            now we use Cpanel::JSON::XS or JSON::PP directly, using the same
            environment variables as in Mojo::JSON for customization.

0.059     2024-02-10 02:29:14Z
          - now being more strict on conversions from LWP and Plack
            requests/responses to Mojolicious types

0.058     2024-01-18 04:37:30Z
          - bump internal version requirement for Math::BigInt

0.057     2024-01-15 18:36:19Z
          - fix OAS vocabulary definitions for changes in JSON::Schema::Modern
            0.579

0.056     2023-12-31 17:26:55Z
          - bump optional dependency on HTTP::Headers::Fast for a psgi
            interface (GH#70)

0.055     2023-12-31 06:21:46Z
          - fix incompatibility with JSON::Schema::Modern 0.578

0.054     2023-12-20 19:41:20Z
          - now making use of "recommended_response" in JSON::Schema::Modern to
            recommend an HTTP response code and message to use after certain
            request validation failures

0.053     2023-12-13 05:01:33Z
          - no longer improperly reporting 4xx response errors as validation
            failures when message has actually been transmitted

0.052     2023-11-26 23:48:32Z
          - "recursive_get" now optionally takes a target entity type
          - support added for validation of Plack::Request and Plack::Response
            objects

0.051     2023-11-13 01:02:33Z
          - Content-Length checking is now more properly consistent with
            RFC9112; some users of HTTP::Request and ::Response objects may
            need to make adjustments in their tests to be compliant
          - track all subschema locations, not just schema roots, for better
            $ref verification

0.050     2023-11-06 03:10:15Z
          - fix construction of an OpenAPI::Modern object with a
            pre-constructed JSON::Schema::Modern::Document::OpenAPI object
          - "recursive_get" moved from JSON::Schema::Modern::Document::OpenAPI
            to OpenAPI::Modern
          - when validating header strings against a string schema, no longer
            parse out internal whitespace surrounding commas (to use RFC9112
            semantics, validate as an array).

0.049     2023-10-29 01:01:38Z
          - fix "recursive_get" to take a uri-reference, rather than a json
            pointer
          - fix some "discriminator" tests that fail with JSON::Schema::Modern
            0.574, and some inconsistencies with the spec

0.048     2023-10-04 05:34:44Z
          - now validating all headers of a given name, not just the first,
            when provided on the request/response as separate lines
          - multiple headers of the same name can be validated as an array or
            object as per deserialization rules in the OpenAPI v3.1
            specification.

0.047     2023-09-19 04:29:16Z
          - strings are now treated as numbers without requiring the "type"
            keyword, and only from parameters, not message bodies, and only
            when no media type is provided
          - new "recursive_get" method on
            JSON::Schema::Modern::Document::OpenAPI for fetching a
            specification at a json pointer and following any $refs
            (note this interface has changed in 0.049 and 0.050)

0.046     2023-06-24 21:56:39Z
          - extra validation for Transfer-Encoding response header

0.045     2023-06-06 04:15:18Z
          - fix test for changes in JSON::Schema::Modern 0.567
          - now ensuring that $ref locations are to the correct entity type

0.044     2023-05-23 02:08:54Z
          - revert changes to YAML parsing in 0.043, pending fixes to YAML::XS

0.043     2023-05-11 04:36:24Z
          - properly detect, and fail early, on badly-parsed request or
            response objects

0.042     2023-04-08 21:22:13Z
          - improvements to some errors resulting from parsing an invalid
            OpenAPI document

0.041     2023-03-13 02:47:59Z
          - now detecting and erroring on two /paths with the same template
            semantics
          - handle new callback behaviour in JSON::Schema::Modern 0.565

0.040     2023-02-18 23:43:50Z
          - all request and response validation are now done with
            Mojo::Message::Request and ::Response objects, converting from
            HTTP::Request and HTTP::Response as needed; the $options hash is
            now populated with the mojo request

0.039     2023-02-11 23:23:17Z
          - BREAKING CHANGE: find_path now takes one argument, not two; the
            $request object is now passed with the $options hash.
          - the $options hash populated by validate_request, validate_response
            and find_path now includes the request object, when available

0.038     2023-01-15 18:51:02Z
          - fix vocabulary tests with TJSA 1.018
          - fix test for compatibility with JSM 0.561

0.037     2022-11-27 23:57:29Z
          - added operation_path to the options hash returned from find_path,
            validate_request, validate_response

0.036     2022-11-19 22:30:06Z
          - fix some media-type test cases to accomodate changes in
            JSON::Schema::Modern 0.558

0.035     2022-11-12 20:53:54Z
          - fixes to media-type parsing: correctly ignore any charset included
            with non-text Content-Types, and always interpret application/json
            as charset=utf-8 as per RFC8259 ยง11

0.034     2022-10-15 20:15:34Z
          - removed validation of readOnly properties in request bodies and
            writeOnly values in response bodies
          - bundled OAS v3.1 schemas have been updated to the 2022-10-07
            edition

0.033     2022-09-18 23:10:04Z
          - bump dependency on JSON::Schema::Modern, to pick up changes to
            error output when an openapi document is invalid

0.032     2022-08-13 23:17:31Z
          - error when a uri path specification contains duplicate capture
            names

0.031     2022-06-01 03:59:14Z
          - fix error when request or response body schema is empty (since
            v0.028)
          - use a custom error message with false schemas (to indicate the
            entire entity is forbidden)

0.030     2022-05-26 05:17:26Z
          - prohibit request bodies for HEAD and GET request unless
            requestBody explicitly specified, as this is a smuggling vector

0.029     2022-05-16 04:20:20Z
          - fix missing prereq for result serialization tests

0.028     2022-05-14 21:11:50Z
          - now only checking for readOnly values in request bodies and
            writeOnly values in response bodies (not path
            parameters/headers/query parameters).

0.027     2022-05-01 01:41:48Z
          - permit the use of unevaluatedProperties, unevaluatedItems in
            openapi subschemas, and collect annotations into the evaluation
            result
          - now checking for readOnly values in requests and writeOnly values
            in responses

0.026     2022-04-23 16:48:26Z
          - fix installation of sharedir files when fallback installers
            (ExtUtils::MakeMaker or Module::Build) are used

0.025     2022-04-03 19:58:27Z
          - find_path no longer returns an undef operation_id when there is
            no operationId defined in the schema document

0.024     2022-03-25 23:41:04Z
          - operation_id and method are now always returned in the options
            hash in validate_request, validate_response, find_path

0.023     2022-03-12 00:25:21Z
          - get_operationId has been renamed to get_operationId_path
          - updated bundled schemas from 2021-09-28 versions to 2022-02-27

0.022     2022-02-16 06:00:37Z
          - construction with an invalid document is handled more nicely
          - added new dialect schema share/strict-schema.json to the list of
            available schemas, which prohibits unrecognized keywords
          - added custom LICENSE to schema files copied from
            github.com/OAI/OpenAPI-Specification
          - distribution is renamed from JSON-Schema-Modern-Document-OpenAPI
            to OpenAPI-Modern

0.021     2022-02-11 04:44:05Z
          - absolute locations in errors are now resolved against the
            request's Host header

0.020     2022-02-10 02:56:46Z
          - validation methods and find_path now also accept the HTTP request
            method as an option
          - the request object is no longer required as an argument to
            find_path
          - validate_request, validate_response now also support Mojolicious
            request and response objects

0.019     2022-01-23 08:17:30Z
          - some instanceLocations in errors from validate_request and
            validate_response have changed to be more specific regarding the
            source of the error
          - find_path is now a public method of OpenAPI::Modern, factored out
            of validate_request and validate_response to enable third-party
            callers to reuse information between these two method calls

0.018     2022-01-17 23:37:05Z
          - fix parsing of escaped characters in URI paths and capture values

0.017     2022-01-17 18:33:07Z
          - remove erroneous logic when checking the "discriminator" keyword
          - user-provided path_template, path_captures and operation_id are
            all verified against the request URI
          - path_template, operation_id and path_captures are no longer
            required arguments for validate_request, validate_response

0.016     2022-01-06 04:22:20Z
          - fix the prereq specification for YAML::PP

0.015     2021-12-31 21:17:11Z
          - load Math::BigInt before attempting to use it

0.014     2021-12-30 05:38:03Z
          - use bignums in JSON::Schema::Modern to properly support int32,
            int64 numeric formats

0.013     2021-12-22 19:23:30Z
          - support */* as a media-type in a content specification, to
            indicate valiation checks that can be performed on any content
            type (e.g. length)
          - add support for OAS-specific formats: int32, int64, float, double,
            password

0.012     2021-12-17 06:39:38Z
          - properly handle a missing Content-Length header alongside a
            non-zero-length body payload

0.011     2021-12-16 06:17:57Z
          - spurious validation errors fixed when request body is empty,
            yet not required

0.010     2021-12-11 23:11:43Z
          - OpenAPI metaschemas are now also available via URIs ending in
            .../latest
          - improved error messaging when a media-type or charset decoder fails
          - improved handling of HTTP headers

0.009     2021-12-06 05:55:01Z
          - validation no longer errors on a missing media type if the
            corresponding schema is empty (true)
          - validate_request and validate_response now accept an operation_id
            instead of a path_template for looking up the endpoint
            specification in the openapi document
          - treat Content-Type headers and media-type entries in openapi
            documents case-insensitively, and also match wildcards
            (image/jpg falls back to image/* or */*)

0.008     2021-12-03 05:33:29Z
          - process response headers in canonical order

0.007     2021-12-02 05:43:34Z
          - properly handle missing message bodies, with possibly a mising
            Content-Type header as well
          - better type handling for numeric strings and stringy numbers
          - detect and handle infinite recursion while evaluating

0.006     2021-12-01 05:22:01Z
          - support media type encodings in parameters

0.005     2021-11-30 06:22:10Z
          - performance improvements when loading and parsing documents
          - extract and cache all operationIds in the document

0.004     2021-11-28 22:09:01Z
          - implemented validate_response()
          - when validating requests and responses, values that look like
            numbers, and are evaluated as numbers in schemas, are now coerced
            to numbers automatically

0.003     2021-11-26 01:01:47Z
          - OpenAPI::Modern is born

0.002     2021-11-17 05:49:29Z
          - minimum Perl version raised to 5.20
          - embedded schemas are now traversed for resource URIs

0.001     2021-11-10 04:50:17Z
          - Initial release.