Now you're adding ~5 lines of boilerplate every time you want to have an integer, another 5 for positive integers, and so on.
{"type": "integer", "minimum": 0}
I think the format used in the example was used to demonstrate bundling, but if what you really want is a non-negative integer, the above is the simplest way to do it.
If I had used a more complex example, it would have been much harder to follow. This was the simplest.
We factor this out for our meta-schema construction due to reuse.
This document defines a core vocabulary that MUST be supported by any implementation, and cannot be disabled. Its keywords are each prefixed with a "$" character to emphasize their required nature. This vocabulary is essential to the functioning of the "application/schema+json" media type, and is used to bootstrap the loading of other vocabularies.
Also bonus points for the apparent lack of shorthands, turning this language into a verbose word salad. I hope there's at least a line of reasoning that explains why some keys are prefixed with '$' and others aren't.
Great way to turn something as beautifully simple as JSON into something abhorrent.
Hey. You know what is better than JSON at being XML? XML.