Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


    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.

    Build Status npm version Code Climate Coverage Status



    npm install -g pajv


    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.


    -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.


    • --errors=: error reporting format. Possible values:

      • js (default): JavaScript object
      • json: JSON with indentation and line-breaks
      • line: 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 are js (default), json and line (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





    npm i pajv

    Downloadslast 7 days







    last publish


    • avatar