Revision history for OpenAPI-Modern

0.092     2025-09-03 22:49:24Z
          - removed the 'json_schema_dialect' constructor argument for
            JSON::Schema::Modern::Document::OpenAPI (use jsonSchemaDialect in
            the document instead)
          - the 'openapi_uri' constructor argument for OpenAPI::Modern is no
            longer required, as it can be calculated from the JSMDO default

0.091     2025-08-16 20:52:35Z
          - various internal changes to adjust for changes in
            JSON::Schema::Modern 0.617

0.090     2025-08-04 00:57:05Z
          - update bundled schemas to their latest versions

0.089     2025-07-31 21:03:29Z
          - internal changes to JSON::Schema::Modern::Document::OpenAPI with
            how the evaluator object is stored and tracked

0.088     2025-07-19 17:09:08Z
          - better type inference for serialized parameters (also looks inside
            the "allOf" keyword, respects keywords adjacent to "$ref", and now
            infers null and boolean data using the "type" keyword)

0.087     2025-06-17 21:01:06Z
          - various fixes to instance and keyword locations in some errors
            when validating requests and responses
          - full support for "server urls" when matching URIs against
            path-items

0.086     2025-06-15 22:58:48Z
          - allow for "x-*" properties in /paths/*
          - "debug" option added to OpenAPI::Modern

0.085     2025-04-22 17:42:36Z
          - no longer resolving error, annotation locations against scheme or
            host from the HTTP request/response

0.084     2025-04-11 21:10:20Z
          - no longer require the user to define a custom metaschema when
            changing jsonSchemaDialect (we dynamically create one for you)
          - pre-emptive support for '$self' property in the OpenAPI document
            (to be officially added in v3.2)

0.083     2025-02-28 23:48:29Z
          - fix Sereal serialization and deserialization hooks
          - operation_uri is now resolved against the document uri and request
            uri, just like error locations are

0.082     2025-02-11 02:51:02Z
          - bump a prereq to work around a mysterious XS bug (RT#159140)

0.081     2025-02-08 19:12:50Z
          - fix a prereq declaration

0.080     2025-02-07 06:24:48Z
          - fix incorrect discriminator test, that was added for a change
            reverted before the OpenAPI v3.1.1 release
          - fix incorrect traversal semantics that new checks in
            JSON::Schema::Modern 0.602 would surface
          - fix a prerequisite declaration for a required HTTP method

0.079     2025-01-31 23:33:40Z
          - fix use of error modes for changes in JSON::Schema::Modern 0.600
          - fix use of document traversal for changes in JSON::Schema::Modern
            0.600

0.078     2025-01-27 05:41:19Z
          - remove use of prototypes combined with signatures (unstable on
            perls 5.22 through 5.26)

0.077     2025-01-26 21:05:06Z
          - fix usage of JSON::Schema::Modern::Result objects, in preparation
            for an upcoming deprecation of boolean overloads

0.076     2024-12-27 22:25:32Z
          - now supporting $refs in path-item objects (e.g. those under
            /paths/<path template>)

0.075     2024-12-22 19:51:49Z
          - now using metaschemas published for OpenAPI 3.1.1 in November 2024.

0.074     2024-12-14 18:07:54Z
          - some adjustments to error messages and locations when matching a
            provided request uri against /paths/* entries in an openapi document

0.073     2024-11-02 23:33:29Z
          - fix test that would break with the latest JSON::Schema::Modern (0.594)

0.072     2024-10-24 16:36:44Z
          - fix module loading, for downstream dependencies (broken in 0.071)

0.071     2024-10-20 23:18:32Z
          - fix tests that changed their output with JSON::Schema::Modern 0.592

0.070     2024-10-07 20:57:24Z
          - fix use of document traversal for changes in JSON::Schema::Modern 0.591

0.069     2024-09-28 23:34:35Z
          - adjust for changes in JSON::Schema::Modern 0.591 (which deprecate
            a form of "add_schema")

0.068     2024-09-14 23:35:47Z
          - path-item+operation lookup can now be performed by operation_id
            alone (a valid usecase for response validation)

0.067     2024-07-27 23:55:46Z
          - fix path template regex to allow for [/?#] characters in capture
            names

0.066     2024-07-13 23:27:00Z
          - now preserving the numeric/string type of any path capture values
            passed in via the $options hash, while still evaluating path
            parameter values as both strings and numbers

0.065     2024-05-25 23:56:08Z
          - BREAKING CHANGE: path_item_uri is dropped from the populated
            $options hash in validate_request, validate_response, and
            find_path, and replaced with operation_uri (note that the
            path-item uri is always one level up)
          - add support for "allowEmptyValue" option in query parameter
            descriptions

0.064     2024-05-07 00:14:00Z
          - fix: requests with an empty URI path (e.g. "https://example.com?foo=1")
            now matches path "/".
          - fix: preserve all headers of the same name when validating a
            Plack::Response object
          - support added for validation of Catalyst::Request and
            Catalyst::Response objects

0.063     2024-04-27 22:26:47Z
          - the url scheme of absoluteKeywordLocations in errors is now taken
            from the incoming request, rather than always being "https"
          - fix matching of request uri against path templates so that
            all characters are matched literally, not treated as regexes

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 (note this changed
            again to operation_uri in v0.065)
          - "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 (reverted in v0.085)

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.
