JSON Schema Schema Evolution - Breaking
The breaking member of a JSON Schema 2020-12 customer contract. Breaking relative to baseline: id changes from string to integer and tenantId becomes required.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/schemas/p6-customer-v2-breaking.json",
"title": "P6 Customer",
"type": "object",
"required": [
"id",
"name",
"tenantId"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 1
},
"tenantId": {
"type": "string"
}
},
"additionalProperties": false
}
Specifications
- Schema Family
- JSON Schema
- Version Role
- breaking
- Expected Compatibility
- invalid
- Dialect
- 2020-12
- Properties
- 3
- Required
- 3
Testing contract
Expected to fail- Scenario
- Compare the breaking JSON Schema contract against the baseline member using a compatibility checker.
- Expected result
- Breaking relative to baseline: id changes from string to integer and tenantId becomes required.
What is a .json file?
JSON (JavaScript Object Notation) is a lightweight, text-based data-interchange format representing objects, arrays, strings, numbers, booleans, and null. It is language-independent, human-readable, and the dominant format for web APIs and configuration. It requires a single well-formed root value.
How to use this file
Use an example JSON file to test parsers and serializers, schema validation, Unicode and number-precision handling, and API request or response processing.
How to use this file for testing
“JSON Schema Schema Evolution - Breaking” is a deterministic Novus Examples fixture for Schema / OpenAPI testing, Schema validation, API testing, Conversion testing. Valid and intentionally invalid OpenAPI/JSON Schema documents plus request/response examples for schema validators and API tooling.
Documented properties for this file: JSON · 469 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks — delimiters, encodings, null handling, schema, and row counts — in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Valid and intentionally invalid siblings are labelled in title and description. Assert parsers accept the valid twin and fail loudly on the invalid one; for time series, check DST gaps and duplicate keys against the spec table.
Code examples
import json
with open("json-schema-breaking.json") as f:
data = json.load(f)
print(type(data), len(data))Related files
- jsonAvro Schema Evolution - Backward-CompatibleThe compatible Avro record schema for reader/writer compatibility tests. Backward compatible for old records: nullable email is added with a null default.

- jsonAvro Schema Evolution - BaselineThe baseline Avro record schema for reader/writer compatibility tests. Reference writer schema: id and name are strings.

- jsonAvro Schema Evolution - BreakingThe breaking Avro record schema for reader/writer compatibility tests. Breaking relative to baseline: id changes to long and tenantId has no default.

- jsonOpenAPI Schema Evolution - Backward-CompatibleThe compatible member of a complete OpenAPI 3.1 ticket endpoint contract. Backward compatible: an optional priority response property is added and existing operations stay unchanged.

- jsonOpenAPI Schema Evolution - BaselineThe baseline member of a complete OpenAPI 3.1 ticket endpoint contract. Reference API: string ticket IDs and required id/summary response properties.

- jsonOpenAPI Schema Evolution - BreakingThe breaking member of a complete OpenAPI 3.1 ticket endpoint contract. Breaking relative to baseline: ticket id becomes integer and status becomes a required response property.

Generated by generation/p6_core.py. Free for any use, no attribution required — license.