# JSON Schema support

This section lists the level of support for JSON Schema elements. For more information about JSON Schemas, see https://json-schema.org/specification.html.

## Fully supported

* Basic types: null, boolean, object, array, number, integer and string.
* Mixed types: "type": ["string", "null"] for example.
* Defined types: $defs and $definitions
* allOf and oneOf
* items and prefixItems
* maxLength and minLength
* maxItems and minItems
* required
* Formats: date-time, date and time

## Supported with limitations

| Element | Limitation |
| --- | --- |
| References: $id, $anchor and<br>$ref | External references to JSON Schemas using $ref work with<br>protocol files and HTTP/HTTPS only. For HTTP, there is no provisioning for proxy or<br>security parameters; it is recommended to use compound JSON Schemas where all references<br>are within the same document rather than external references. |
| anyOf | anyOf is treated as oneOf if there is more than one<br>alternative, and as allOf otherwise. |
| Recursive schemas | Recursive schemas are supported, however they may have a performance impact on<br>Talend Data Mapper<br>structures if they are heavily used. You can define recursive schemas to exclude in Window &gt; Preferences &gt; Mapping &gt; Representations. For more information, see [Representation preferences](https://help.qlik.com/talend/en-US/data-mapper-user-guide/8.0/representation-preferences). |
| patternProperties | patternProperties are translated into a key/value pair Map<br>group. This is done only if there are no properties for the same object, otherwise<br>patternProperties are ignored. The regular expression values in<br>patternProperties are ignored. |
| enum and const | enum and const values must be primitive types.<br>Mixed types in enum are not supported; all values must have the same<br>type. |

## Not supported

* not
* if, then and else
* dependentSchemas and dependentRequired
* Extensions (keywords not defined in the specs) and $vocabulary
* $dynamicRef and $dynamicAnchor
* $vocabulary
* contains
* additionalProperties: the value is always false
* propertyNames
* unevaluatedItems and unevaluatedProperties
* Output formatting
* multipleOf
* maximum and minimum
* exclusiveMaximum and exclusiveMinimum
* pattern
* uniqueItems, maxContains and minContains
* maxProperties and minProperties
* readOnly, writeOnly and examples