{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Example", "$id": "Example", "type": "object", "description": "example", "definitions": { "address": { "$id": "address", "type": "object", "description": "Address", "properties": { "houseName": { "type": "string", "description": "House Name", "maxLength": 30 }, "houseNumber": { "type": "string", "description": "House Number", "maxLength": 4 }, "flatNumber": { "type": "string", "description": "Flat", "maxLength": 15 }, "street": { "type": "string", "description": "Address 1", "maxLength": 40 }, "district": { "type": "string", "description": "Address 2", "maxLength": 30 }, "town": { "type": "string", "description": "City", "maxLength": 20 }, "county": { "type": "string", "description": "County", "maxLength": 20 }, "postcode": { "type": "string", "description": "Postcode", "maxLength": 8 } } }, "status": { "type": "object", "properties": { "favouritecat": { "enum": [ "A", "B", "C", "D", "E", "F" ], "type": "string", "description": "The favourite cat.", "maxLength": 1 } } } }, "properties": { "name" : { "anyOf" : [ { "$ref": "#/definitions/address" }, { "$ref": "#/definitions/status" } ]} } }