I see in your template that you seem to have forgotten to escape from some characters or not done it right:
"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,6}$"
and this causes an error that you can see when you hover over the link at the top of the validator:

it should be:
"^[A-Z0-9\\._%\\+-]+@[A-Z0-9\\.-]+\\.[AZ]{2,6}$"
or without escaping inner / character classes, but I would use the first pattern because I think its intent is clearer:
"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[AZ]{2,6}$"
You need to have two \ , because the first \ is escape for the second \ . It will not work with one, because there is no escape sequence , for example, \. or \+ in JavaScript. You want to have \ in the template itself.
However, json schema patternProperties is case sensitive by default, so you need to extend the email template by adding az to it:
"^[A-Za-z0-9\\._%\\+-]+@[A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$"
(I did not find another way to make it case sensitive)
You also need to exclude any other property names by adding "additionalProperties": false next to patternProperties or else it will catch everything else that does not match the pattern.
The working diagram should look like this:
{ "type": "object", "$schema": "http://json-schema.org/draft-03/schema", "id": "#", "required": true, "patternProperties": { "^[A-Za-z0-9\\._%\\+-]+@[A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$": { "type": "object", "required": true, "properties": { "_from": { "id": "_from", "type": "string", "required": true }, "message": { "type": "object", "id": "message", "properties": { "detail": { "type": "string", "id": "detail", "required": true }, "from": { "type": "string", "id": "from", "required": true } } } } } }, "additionalProperties": false }
I tested it: http://jsonschemalint.com/