JSV.ErrorFormatter (jsv v0.10.1)

View Source

Error formatting helpers.

Errors are grouped by:

  • Instance location: the bit of data that was invalidated
  • Schema location: the part of the schema that invalidated it
  • Evaluation path: the path followed from the root to this schema location

Summary

Functions

Returns a JSON-able version of the errors contained in the ValidationError.

Returns an output unit with valid: true for the given JSV.Validator. This can be substitued to an Error struct in the nested details of an error. Mostly used to show multiple validated schemas with :oneOf.

Types

error_unit()

@type error_unit() :: %{
  :valid => boolean(),
  :instanceLocation => binary(),
  :evaluationPath => binary(),
  :schemaLocation => binary(),
  optional(:errors) => [keyword_error()]
}

keyword_error()

@type keyword_error() :: %{
  :kind => atom(),
  :message => String.t(),
  optional(:details) => [error_unit()]
}

normalize_opt()

@type normalize_opt() :: {:sort, term()} | {:keys, term()}

raw_path()

@type raw_path() :: [raw_path()] | binary() | integer() | atom()

Functions

format_data_path(rev_data_path)

@spec format_data_path(raw_path()) :: String.t()

normalize_error(e, opts \\ [])

@spec normalize_error(
  JSV.ValidationError.t(),
  keyword()
) :: map()

Returns a JSON-able version of the errors contained in the ValidationError.

This is generatlly useful to generate HTTP API responses or message broker responses.

Options

  • :sort - Controls the sort direction. Errors are sorted by instanceLocation. The default value is :desc.

  • :keys - Define the type of the keys in the normalized errors maps.

    While truly "normalized" JSON data should not have atom keys, this option defaults to :atoms for backward compatibility reasons.

valid_annot(subschema, vctx)

Returns an output unit with valid: true for the given JSV.Validator. This can be substitued to an Error struct in the nested details of an error. Mostly used to show multiple validated schemas with :oneOf.