pajv
v1.2.0
Published
A command line JSON Schema validator that supports many file formats. Fork of jessedc/ajv-cli.
Downloads
77,604
Maintainers
Readme
Polyglottal JSON Schema Validator (Polyglottal Ajv)
Command line interface for ajv that utilizes any-json to provide validation against many data formats. pajv
can validate: CSON, Hjson, JSON, JSON5, TOML, and YAML files using JSON Schema. pajv is a fork of ajv-cli.
Contents
Installation
npm install -g pajv
Help
pajv help
pajv help validate
pajv help test
Validate data
This command validates data files against JSON-schema
pajv validate -s test/schema.json -d test/valid_data.json
pajv -s test/schema.json -d test/valid_data.json
You can omit validate
command name.
Parameters
-s
- file name of JSON-schema
Only one schema can be passed in this parameter
-d
- JSON data
Multiple data files can be passed, as in -r
parameter:
pajv -s test/schema.json -d "test/valid*.json"
If some file is invalid exit code will be 1.
-r
- referenced schemas
The schema in -s
parameter can reference any of these schemas with $ref
keyword.
Multiple schemas can be passed both by using this parameter mupltiple times and with glob patterns. Glob pattern should be quoted and extensions cannot be omitted.
-m
- meta-schemas
Schemas can use any of these schemas as a meta-schema (that is the schema used in $schema
keyword - it is used to validate the schema itself).
Multiple meta-schemas can be passed, as in -r
parameter.
-c
- custom keywords/formats definitions
You can pass module(s) that define custom keywords/formats. The modules should export a function that accepts Ajv instance as a parameter. The file name should start with ".", it will be resolved relative to the current folder. The package name can also be passed - it will be used in require as is.
For example, you can use -c ajv-keywords
to add all keywords from ajv-keywords package or -c ajv-keywords/keywords/typeof
to add only typeof keyword.
Options
--errors=
: error reporting format. Possible values:js
(default): JavaScript objectjson
: JSON with indentation and line-breaksline
: JSON without indentaion/line-breaks (for easy parsing)text
: human readable error messages with data paths
--changes=
: detect changes in data after validation. Data can be modifyed with Ajv options--remove-additional
,--use-defaults
and--coerce-types
). The changes are reported in JSON-patch format (RFC6902). Possible values arejs
(default),json
andline
(see--errors
option).
Test validation result
This command asserts that the result of the validation is as expected.
pajv test -s test/schema.json -d test/valid_data.json --valid
pajv test -s test/schema.json -d test/invalid_data.json --invalid
If the option --valid
(--invalid
) is used for the test
to pass (exit code 0) the data file(s) should be valid (invalid).
This command supports the same options and parameters as validate with the exception of --changes
.
Ajv options
You can pass the following Ajv options:
|Option|Description|
|---|---|
|--data
|use $data references|
|--all-errors
|collect all errors|
|--unknown-formats=
|handling of unknown formats|
|--verbose
|include schema and data in errors|
|--json-pointers
|report data paths in errors using JSON-pointers|
|--unique-items=false
|do not validate uniqueItems keyword|
|--unicode=false
|count unicode pairs as 2 characters|
|--format=full
|format mode|
|--schema-id=
|keyword(s) to use as schema ID|
|--extend-refs=
|validation of other keywords when $ref is present in the schema|
|--missing-refs=
|handle missing referenced schemas (true/ignore/fail)|
|--inline-refs=
|referenced schemas compilation mode (true/false/<number>)|
|--remove-additional
|remove additional properties (true/all/failing)|
|--use-defaults
|replace missing properties/items with the values from default keyword|
|--coerce-types
|change type of data to match type keyword|
|--multiple-of-precision
|precision of multipleOf, pass integer number|
|--error-data-path=property
|data path in errors|
|--messages=false
|do not include text messages in errors|
Options can be passed in either dash-case and camelCase.
See Ajv Options for more information.
Version History
See https://github.com/json-schema-everywhere/pajv/releases
Licence
MIT