# JSON Forms Reference

This reference covers everything Prismatic's configuration wizard supports for [JSON Forms](https://jsonforms.io/). Use it when you already know what JSON Forms is and you need exhaustive details on schema features, UI schema elements, renderers, or the options you can pass.

If you're new to JSON Forms, start with [What are JSON Forms?](https://prismatic.io/docs/integrations/data-sources/json-forms.md) and work through [Using JSON Forms](https://prismatic.io/docs/integrations/data-sources/json-forms/using-json-forms.md) before diving in here.

Prismatic adds a set of custom renderers, layouts, and options on top of what JSON Forms ships by default. Everything in this reference reflects what's available in the Prismatic configuration wizard, which may differ from stock JSON Forms.

## How to read this reference[​](#how-to-read-this-reference "Direct link to How to read this reference")

JSON Forms drives a form from two JSON documents you author:

* **[Schema](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md)** - a JSON Schema that describes the *data* your form collects.
* **[UI schema](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/ui-schema.md)** - a JSON document that describes how the schema is *rendered* - layouts, labels, visibility, and per-control behavior.

Three reference pages break the UI schema down further:

* **[Renderers](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/renderers.md)** - how each schema type maps to an input control, and which controls Prismatic customizes.
* **[Rules](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/rules.md)** - the `rule` block you attach to any UI schema element to show, hide, enable, or disable it based on form data.
* **[Options](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/options.md)** - an alphabetized catalog of every `options` key you can set on a UI schema element.

## JSON Schema in Prismatic[​](#json-schema-in-prismatic "Direct link to JSON Schema in Prismatic")

Prismatic uses the standard [JSON Schema](https://json-schema.org/) vocabulary, and the [schema reference](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md) walks through the keywords you're most likely to reach for:

* [Supported types](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#supported-types) and [nested objects](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#nested-objects) - the core building blocks of a form.
* [Formats](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#formats) - `date`, `time`, `date-time`, `password`, `email`, `uri`, and `ipv4`.
* [Validation keywords](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#validation-keywords) - `required`, `minLength`, `pattern`, `minimum`, and the rest.
* [Default values and pre-filling the form](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#default-values-and-pre-filling-the-form) - how to open a form with values already populated.
* [Dropdowns with `enum` and `oneOf`](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#dropdowns-with-enum-and-oneof) - static and third-party populated lists.
* [Arrays](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#arrays) and [`$ref`](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#references-with-ref) - repeating items and shared subschemas.
* [Composing schemas with `allOf`, `anyOf`, `oneOf`, and `not`](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#composing-schemas-with-allof-anyof-oneof-and-not) - pulling properties in through composition keywords.
* [Conditional validation with `if` / `then` / `else`](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#conditional-validation-with-if--then--else) - varying validation rules based on form data.

A handful of keywords behave differently in Prismatic than they do in the JSON Schema specification - see [Keywords Prismatic handles differently](https://prismatic.io/docs/integrations/data-sources/json-forms/reference/schema.md#keywords-prismatic-handles-differently).

## Related pages[​](#related-pages "Direct link to Related pages")

* [What are JSON Forms?](https://prismatic.io/docs/integrations/data-sources/json-forms.md)
* [Using JSON Forms](https://prismatic.io/docs/integrations/data-sources/json-forms/using-json-forms.md)
* [JSON Form Validation](https://prismatic.io/docs/integrations/data-sources/json-forms/form-validation.md)
* [JSON Forms Playground](https://prismatic.io/docs/jsonforms/playground)
* [Custom component JSON Forms data sources](https://prismatic.io/docs/custom-connectors/data-sources.md#json-forms-data-sources)
* [JSON Forms component](https://prismatic.io/docs/components/jsonforms.md)
