# jsv v0.16.0 - Table of Contents ## GUIDES - [Changelog](changelog.md) - Schemas - [Defining Schemas](defining-schemas.md) - [Custom Cast Functions](cast-functions.md) - Build - [Building Schemas](build-basics.md) - [Resolvers](resolvers.md) - [Vocabularies](vocabularies.md) - Validation - [Validate Data With Schemas](validation-basics.md) - [Decimal Support](decimal-support.md) - Dev Log - [API Changes in JSV 0.9](api-changes-v0-9.md) ## Modules - Main API - [JSV](JSV.md): JSV is a JSON Schema Validator. - Schema Definition - [JSV.Schema](JSV.Schema.md): This module defines a struct where all the supported keywords of the JSON schema specification are defined as keys. Text editors that can predict the struct keys will make autocompletion available when writing schemas. - [JSV.Schema.Helpers](JSV.Schema.Helpers.md): Helpers to define schemas in plain Elixir code. - Build - [JSV.BuildError](JSV.BuildError.md): A simple wrapper for errors returned from `JSV.build/2`. - [JSV.FormatValidator](JSV.FormatValidator.md): Behaviour for format validator implementations. - Validation - [JSV.Root](JSV.Root.md): Internal representation of a JSON schema built with `JSV.build/2`. - [JSV.ValidationError](JSV.ValidationError.md): The data structure returned by `JSV.validate/3` when validation fails. - Resolvers - [JSV.Resolver](JSV.Resolver.md): A behaviour describing the implementation of a [guides/build/custom resolver. Resolves remote resources when building a JSON schema. - [JSV.Resolver.Embedded](JSV.Resolver.Embedded.md): A `JSV.Resolver` implementation that resolves known schemas shipped as part of the `JSV` library. - [JSV.Resolver.Httpc](JSV.Resolver.Httpc.md): A `JSV.Resolver` implementation that will fetch the schemas from the web with the help of the `:httpc` module. - [JSV.Resolver.Internal](JSV.Resolver.Internal.md): A `JSV.Resolver` implementation that resolves URIs pointing to the application code base or JSV code base. - [JSV.Resolver.Local](JSV.Resolver.Local.md): This module allows to build `JSV.Resolver` implementations that resolves schemas based on disk based on their `$id` property. It is not itself a `JSV.Resolver` implementation. - Vocabulary - [JSV.Vocabulary](JSV.Vocabulary.md): Behaviour for vocabulary implementation. - [JSV.Vocabulary.V202012.Applicator](JSV.Vocabulary.V202012.Applicator.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/applicator` vocabulary. - [JSV.Vocabulary.V202012.Content](JSV.Vocabulary.V202012.Content.md): Placeholder implementation for the `https://json-schema.org/draft/2020-12/vocab/content` vocabulary. No validation is performed. - [JSV.Vocabulary.V202012.Core](JSV.Vocabulary.V202012.Core.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/core` vocabulary. - [JSV.Vocabulary.V202012.Format](JSV.Vocabulary.V202012.Format.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/format-annotation` and `https://json-schema.org/draft/2020-12/vocab/format-assertion` vocabularies. - [JSV.Vocabulary.V202012.MetaData](JSV.Vocabulary.V202012.MetaData.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/meta-data` vocabulary. - [JSV.Vocabulary.V202012.Unevaluated](JSV.Vocabulary.V202012.Unevaluated.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/unevaluated` vocabulary. - [JSV.Vocabulary.V202012.Validation](JSV.Vocabulary.V202012.Validation.md): Implementation for the `https://json-schema.org/draft/2020-12/vocab/validation` vocabulary. - [JSV.Vocabulary.V7.Applicator](JSV.Vocabulary.V7.Applicator.md): Implementation of the applicator vocabulary with draft 7 sepecifiticies. - [JSV.Vocabulary.V7.Content](JSV.Vocabulary.V7.Content.md): Implementation of the content vocabulary with draft 7 sepecifiticies. No validation is performed. - [JSV.Vocabulary.V7.Core](JSV.Vocabulary.V7.Core.md): Implementation of the core vocabulary with draft 7 sepecifiticies. - [JSV.Vocabulary.V7.Format](JSV.Vocabulary.V7.Format.md): Implementation of the format vocabulary with draft 7 sepecifiticies. - [JSV.Vocabulary.V7.MetaData](JSV.Vocabulary.V7.MetaData.md): Implementation of the meta-data vocabulary with draft 7 sepecifiticies. - [JSV.Vocabulary.V7.Validation](JSV.Vocabulary.V7.Validation.md): Implementation of the validation vocabulary with draft 7 sepecifiticies. - Utilities - [JSV.Codec](JSV.Codec.md): JSON encoder/decoder based on available implementation. - [JSV.Helpers.MapExt](JSV.Helpers.MapExt.md): Helpers to work with maps. - [JSV.Helpers.Traverse](JSV.Helpers.Traverse.md): Helpers to work with nested generic data structures. - [JSV.Normalizer](JSV.Normalizer.md): A Normalizer for JSON data structures. - [JSV.Normalizer.Normalize](JSV.Normalizer.Normalize.md): Protocol used by `JSV.Normalizer` to transform structs into JSON-compatible data structures when normalizing a schema. - [JSV.Schema.Composer](JSV.Schema.Composer.md): This module contains a composable API to build schemas in a functionnal way. - Internal - [JSV.BooleanSchema](JSV.BooleanSchema.md): Represents a boolean schema. Boolean schemas accept or reject any data according to their boolean value. - [JSV.Builder](JSV.Builder.md): Internal logic to build raw schemas into `JSV.Root` structs. - [JSV.ErrorFormatter](JSV.ErrorFormatter.md): Error formatting helpers. - [JSV.Key](JSV.Key.md): Helpers around the different key formats used in the resolver, builder and validator states to index sub schemas, referenced schemas, anchor or meta schemas. - [JSV.RNS](JSV.RNS.md): A namespace for a schema ID or reference. - [JSV.Ref](JSV.Ref.md): Representation of a JSON Schema reference (`$ref` or `$dynamicRef`). - [JSV.Resolver.Resolved](JSV.Resolver.Resolved.md): Metadata gathered from a remote schema or a sub-schema. - [JSV.Subschema](JSV.Subschema.md): Build result for a raw map schema. - [JSV.Validator](JSV.Validator.md): This is the home of the recursive validation logic. - [JSV.Validator.Error](JSV.Validator.Error.md): Representation of an error encountered during validation. - [JSV.Validator.ValidationContext](JSV.Validator.ValidationContext.md): Validation context carried along by the `JSV.Validator` and given to all vocabulary implementations. ## Mix Tasks - Internal - [mix jsv.gen_test_suite](Mix.Tasks.Jsv.GenTestSuite.md) - [mix jsv.gen_test_suite.value_dumper](Mix.Tasks.Jsv.GenTestSuite.ValueDumper.md) - [mix jsv.update_jsts_ref](Mix.Tasks.Jsv.UpdateJstsRef.md)