Bowtie Open in GitHub Codespaces Open in Gitpod

Bowtie is a meta-validator of the JSON Schema specification, by which we mean it coordinates executing other validator implementations, collecting and reporting on their results.

It has a few parts:

  • a command line tool which can be used to access any of the 27 JSON Schema implementations integrated with it. Use it to validate any schema and instance against any implementation.

  • a report, accessible at https://bowtie.report/, showing how well each implementation complies with the specification and which tests they fail (if any)

  • a protocol which new implementations can integrate with in order to have their implementation be supported by Bowtie

It’s called Bowtie because it fans in lots of JSON then fans out lots of results: >·<. Looks like a bowtie, no? Also because it’s elegant – we hope.

If you’re just interested in how implementations stack up against each other, you can find the most up to date report at https://bowtie.report/.

Installation

Via Homebrew (macOS or Linuxbrew)

Bowtie is available in a tap which is located here, and can be installed via:

brew install bowtie-json-schema/tap/bowtie

As a Single Executable

There is an experimental PyApp of Bowtie published to GitHub on each release.

You can find the latest one here.

Once downloading it, run chmod +x on it and you should be able to use it as-is if you have an existing Python installation.

If you use it (successfully or otherwise) please provide feedback.

Manual Installation via PyPI

Bowtie is written in Python, and uses a container runtime to execute JSON Schema implementations, so you’ll need both Python and a suitable container runtime installed.

If you have no previous container runtime installed (e.g. Docker), follow the installation instructions for podman specific to your operating system. Ensure you’ve started a Podman VM if you are on macOS.

Then follow the pipx installation process to install pipx, and finally use it to install Bowtie via:

pipx install bowtie-json-schema

which should give you a working Bowtie installation, which you can check via:

bowtie --help

Further usage details of the command-line interface can be found here.