.. _install_tools_schema_validator_check_tool:

Schema validator check tool
===========================

The schema validator tool validates that the passed in configuration conforms to
a given schema. The configuration may be JSON or YAML. To validate the entire
config, please refer to the
:ref:`config load check tool<install_tools_config_load_check_tool>`.

Input
  The tool expects two required inputs:

  1. The schema type to check the passed in configuration against. The supported types are:

    * `route` - for :ref:`route configuration<envoy_v3_api_msg_config.route.v3.RouteConfiguration>` validation.
    * `discovery_response` for :ref:`discovery response<envoy_v3_api_msg_service.discovery.v3.DiscoveryResponse>` validation.
    * `bootstrap` for :ref:`bootstrap<envoy_v3_api_msg_config.bootstrap.v3.Bootstrap>` validation.

  2. The path to the configuration file.

  Optional inputs include:

  1. ``--fail-on-deprecated``: Will force failure if any deprecated fields are used.
  2. ``--fail-on-wip``: Will force failure if any work-in-progress fields are used.

Output
  If the configuration conforms to the schema, the tool will exit with status
  EXIT_SUCCESS. If the configuration does not conform to the schema, an error
  message is outputted detailing what doesn't conform to the schema. The tool
  will exit with status EXIT_FAILURE.

Building
  The tool is included in the :ref:`tools image <install_tools>`.

  The tool can also be built locally using Bazel. ::

    bazel build //test/tools/schema_validator:schema_validator_tool

Running
  The tool takes a path as described above. ::

    bazel-bin/test/tools/schema_validator/schema_validator_tool  --schema-type SCHEMA_TYPE  --config-path PATH