I haven't stumbled upon a better schema for JSON than the Typescript definition files. If only I could use them in non Typescript contexts.

https://www.typescriptlang.org/docs/handbook/declaration-fil...

You can write validation schemas using zod library [1]. They end up looking pretty similar to typescript definitions (same vocabulary, same methods for combining/intersecting/filtering). And if you migrate to typescript you'll get type definitions for free out of those schemas.

[1] https://github.com/colinhacks/zod