Skip to content

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

License

Notifications You must be signed in to change notification settings

thyageshm/boon

This branch is 2 commits behind santhosh-tekuri/boon:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a9a9852 · Jan 7, 2025
Jan 6, 2025
Mar 25, 2023
Jan 7, 2025
Jan 7, 2025
Jan 6, 2025
May 23, 2024
Feb 26, 2023
Jan 7, 2025
Jan 7, 2025
Jan 7, 2025
Oct 22, 2024
Oct 22, 2024
Jul 30, 2024

Repository files navigation

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

Examples Changelog

Library Features

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

CLI

to install: cargo install boon-cli --locked

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%