Analyzer reference

Supported JSON Schema subset

Schemvia compares the values accepted by two schemas. It supports a deliberately small subset so that every verdict can be explained and, for breaking changes, backed by a concrete counterexample.

Return to analyzer

Supported constructs

These keywords may appear at the root or inside a property schema. JSON Schema keywords not listed here are reported as unsupported.

type
null, boolean, object, array, number, integer, or string. A non-empty type array is also supported.
properties
Defines named nested object properties.
required
Marks property names as required. Names must be unique.
enum
Restricts a value to a non-empty list of JSON values.
const
Restricts a value to one JSON value.
minimum / maximum
Inclusive numeric bounds.
exclusiveMinimum / exclusiveMaximum
Exclusive numeric bounds.
minLength / maxLength
Inclusive string-length bounds, measured in Unicode characters.

What the result means

Backward compatibility

The proposed schema must accept every value accepted by the existing schema.

Object properties are optional unless they appear in required. Unknown object properties are not constrained because additionalProperties is outside this subset. An integer is also a valid number, matching JSON Schema semantics.

A compatible result means the analyzer found no breaking change within the supported model. An incompatible result includes the affected path and may include a value that was valid before and rejected after.

Input limits

Schemas are customer data and are bounded before analysis. These defaults protect response time and keep analysis deterministic.

Schema depth
32 levels
Properties
256 total properties
Enum entries
100 entries per enum
JSON values
16 levels deep and 2,000 nodes
String values
4,096 characters

A schema that is invalid, uses an unsupported keyword, or exceeds an ingestion limit cannot produce a normal compatibility verdict. If analysis work exceeds its budget, Schemvia returns incomplete rather than calling the change compatible or incompatible.

A supported schema

{
  "type": "object",
  "properties": {
    "name": { "type": "string", "minLength": 1 },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

Features such as items, additionalProperties, oneOf, references, and formats are not currently supported. They must be removed or reduced to the subset above before analysis.