boon icon indicating copy to clipboard operation
boon copied to clipboard

JSONSchema (draft 2020-12, draft 2019-09, draft-7, draft-6, draft-4) Validation in Rust

License Crates.io docs.rs Build Status codecov dependency status

Examples Changelog

Library Features

  • [x] pass JSON-Schema-Test-Suite excluding optional(compare with other impls at bowtie)
    • [x] draft-04
    • [x] draft-06
    • [x] draft-07
    • [x] draft/2019-09
    • [x] draft/2020-12
  • [x] detect infinite loop traps
    • [x] $schema cycle
    • [x] validation cycle
  • [x] custom $schema url
  • [x] vocabulary based validation
  • [x] ECMA-262 regex compatibility (pass tests from optional/ecmascript-regex.json)
  • [x] format assertions
    • [x] flag to enable in draft >= 2019-09
    • [x] custom format registration
    • [x] built-in formats
      • [x] regex, uuid
      • [x] ipv4, ipv6
      • [x] hostname, email
      • [x] idn-hostname, idn-email
      • [x] date, time, date-time, duration
      • [x] json-pointer, relative-json-pointer
      • [x] uri, uri-reference, uri-template
      • [x] iri, iri-reference
      • [x] period
  • [x] content assertions
    • [x] flag to enable in draft >= 7
    • [x] contentEncoding
      • [x] base64
      • [x] custom
    • [x] contentMediaType
      • [x] application/json
      • [x] custom
    • [x] contentSchema
  • [x] errors
    • [x] introspectable
    • [x] hierarchy
      • [x] alternative display with #
    • [x] output
      • [x] flag
      • [x] basic
      • [x] detailed
  • [ ] custom vocabulary

CLI

to install: cargo install boon-cli

or download it from releases

Usage: boon [OPTIONS] SCHEMA [INSTANCE...]

Options:
    -h, --help          Print help information
    -q, --quiet         Do not print errors
    -d, --draft <VER>   Draft used when '$schema' is missing. Valid values 4,
                        6, 7, 2019, 2020 (default 2020)
    -o, --output <FMT>  Output format. Valid values simple, alt, flag, basic,
                        detailed (default simple)
    -f, --assert-format
                        Enable format assertions with draft >= 2019
    -c, --assert-content
                        Enable content assertions with draft >= 7
        --cacert <FILE> Use the specified PEM certificate file to verify the
                        peer. The file may contain multiple CA certificates
    -k, --insecure      Use insecure TLS connection

This cli can validate both schema and multiple instances.

It support both json and yaml files

exit code is:

  • 1 if command line arguments are invalid.
  • 2 if there are errors