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 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:
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.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
http://openapi-specification-visual-documentation.apihandyman.io/