Hi there! Thanks for the question!
I think what you are looking for is JSON Hyper-Schema, which is a JSON Schema vocabulary for declaring how to build links from JSON documents. The approach is a bit different from JSON API, as the links usually do not appear directly in the JSON request or response. Instead, the schema contains URI templates and rules for filling them out from the instance data, or from external input (like search query parameters).
JSON API is intentionally very rigid. You must do things in exactly a certain way, and structure your representations, at least at the top level, with certain specific field names. JSON Hyper-Schema is intended to allow a great deal of flexibility. You can structure your representations however you like, and even move things around a fair amount without breaking clients as long as they look up links by the relation type and follow the template resolution rules.
As for WSDL, I have blocked all memories of such a thing ;-) but the JSON Hyper-Schema document is linked from each response, and can be cached indefinitely. If the schema needs to change, it will get a new URI and subsequent responses will link to the new schema. So while there is a second document, it can all be acquired through links at runtime and is therefore HATEOAS-compliant.
We are on the verge of releasing a new draft specification for JSON Schema Core, Validation, and Hyper-Schema (really, any day now... the last two PRs have one approval each and are awaiting the 2nd approval and then we're good to go). For Hyper-Schema, the new draft has several major changes, including *much* more guidance on how to use various schemas with different sorts of requests, so you should probably wait for that. Hopefully next week at the latest. It's being worked on at
https://github.com/json-schema-org/json-schema-spec/ if you want to see the work-in-progress.
Take a look at that and see what questions you have. It is not a comprehensive guide but it will probably provoke some questions :-)
thanks,
-henry