NAME

json-schema-eval - A command-line interface to JSON::Schema::Modern::evaluate()

VERSION

version 0.597

SYNOPSIS

json-schema-eval \
  [ --specification_version|version <version> ] \
  [ --output_format <format> ] \
  [ --short_circuit ] \
  [ --max_traversal_depth <depth> ] \
  [ --validate_formats ] \
  [ --validate_content_schemas ] \
  [ --collect_annotations ] \
  [ --strict ] \
  [ --data <filename> ] \
  [ --schema <filename> ] \
  [ --validate-schema [filename] ]
  [ --add-schema <filename> ]
  [ --dump-identifiers ]

DESCRIPTION

A command-line interface to "evaluate" in JSON::Schema::Modern.

data.json contains:

{"hello": 42.1}

schema.json contains:

{"properties": {"hello": {"type": ["string", "integer"]}}}

Run:

json-schema-eval --data data.json --schema schema.json

produces output:

{
  "errors" : [
    {
      "error" : "got number, not one of string, integer",
      "instanceLocation" : "/hello",
      "keywordLocation" : "/properties/hello/type"
    },
    {
      "error" : "not all properties are valid",
      "instanceLocation" : "",
      "keywordLocation" : "/properties"
    }
  ],
  "valid" : false
}

Or run:

json-schema-eval --validate-schema schema.json

produces output:

{
  "valid": true
}

The exit value ($?) is 0 when the result is valid, 1 when it is invalid, and some other non-zero value if an exception occurred.

OPTIONS

All boolean and string options used as constructors to JSON::Schema::Modern are available.

Additionally, --data is used to provide the filename containing a json-encoded data instance, and --schema provides the filename containing a json-encoded schema.

If either or both of these are not provided, STDIN is used as input.

Only JSON-encoded data and schemas are supported at this time.

Alternatively, you can use --validate-schema and either provide a filename containing a json-encoded schema, or omit the argument to read a schema from STDIN. The schema will be evaluated against its meta-schema for the corresponding specification version.

Additional schemas, that you wish to use via the $ref keyword, can be added with --add-schema <filename>. The actual filename is insignificant: Make sure you use an $id keyword within that schema that matches the value you use in the $ref. This option can be used more than once.

SUPPORT

Bugs may be submitted through https://github.com/karenetheridge/JSON-Schema-Modern/issues.

I am also usually active on irc, as 'ether' at irc.perl.org and irc.libera.chat.

You can also find me on the JSON Schema Slack server and OpenAPI Slack server, which are also great resources for finding help.

AUTHOR

Karen Etheridge <ether@cpan.org>

COPYRIGHT AND LICENCE

This software is copyright (c) 2020 by Karen Etheridge.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.