Scroll to navigation

JSON::Validator::OpenAPI(3pm) User Contributed Perl Documentation JSON::Validator::OpenAPI(3pm)

NAME

JSON::Validator::OpenAPI - OpenAPI is both a subset and superset of JSON Schema

DESCRIPTION

JSON::Validator::OpenAPI can validate Open API (also known as "Swagger") requests and responses that is passed through a Mojolicious powered web application.

Currently v2 should be fully supported, while v3 should be considered higly EXPERIMENTAL.

Please report in issues <https://github.com/jhthorsen/json-validator/issues> or open pull requests to enhance the 3.0 support.

See also Mojolicious::Plugin::OpenAPI for more details about how to use this module.

ATTRIBUTES

JSON::Validator::OpenAPI inherits all attributes from JSON::Validator.

formats

Open API support the same formats as JSON::Validator, but adds the following to the set:

  • byte

    A padded, base64-encoded string of bytes, encoded with a URL and filename safe alphabet. Defined by RFC4648.

  • date

    An RFC3339 date in the format YYYY-MM-DD

  • double

    Cannot test double values with higher precision then what the "number" type already provides.

  • float

    Will always be true if the input is a number, meaning there is no difference between "float" and "double". Patches are welcome.

  • int32

    A signed 32 bit integer.

  • int64

    A signed 64 bit integer. Note: This check is only available if Perl is compiled to use 64 bit integers.

version

  $str = $self->version;

Used to get the OpenAPI Schema version to use. Will be set automatically when using "load_and_validate_schema", unless already set. Supported values are "2" an "3".

METHODS

JSON::Validator::OpenAPI inherits all attributes from JSON::Validator.

load_and_validate_schema

  $self = $self->load_and_validate_schema($schema, \%args);

Will load and validate $schema against the OpenAPI specification. $schema can be anything "schema" in JSON::Validator accepts. The expanded specification will be stored in "schema" in JSON::Validator on success. See "schema" in JSON::Validator for the different version of $url that can be accepted.

%args can be used to further instruct the expansion and validation process:

  • allow_invalid_ref

    Setting this to a true value, will disable the first pass. This is useful if you don't like the restrictions set by OpenAPI, regarding where you can use $ref in your specification.

  • version_from_class

    Setting this to a module/class name will use the version number from the class and overwrite the version in the specification:

      {
        "info": {
          "version": "1.00" // <-- this value
        }
      }
        

The validation is done with a two pass process:

1.
First it will check if the $ref is only specified on the correct places. This can be disabled by setting "allow_invalid_ref" to a true value.
2.
Validate the expanded version of the spec, (without any $ref) against the OpenAPI schema.

validate_input

  @errors = $self->validate_input($data, $schema);

This method will make sure "readOnly" is taken into account, when validating data sent to your API.

validate_request

  @errors = $self->validate_request($c, $schema, \%input);

Takes an Mojolicious::Controller and a schema definition and returns a list of errors, if any. Validated input parameters are moved into the %input hash.

validate_response

  @errors = $self->validate_response($c, $schema, $status, $data);

COPYRIGHT AND LICENSE

Copyright (C) 2014-2015, Jan Henning Thorsen

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

SEE ALSO

JSON::Validator.

<http://openapi-specification-visual-documentation.apihandyman.io/>

2018-11-17 perl v5.28.0