I like artifact-driven API design. If you must use REST, Swagger is a pretty decent way to get your API fully set up with everything but the business logic. Personally, I love GraphQL's Schema Definition Language. The whole thing is designed to explicitly declare data types and how to query for and operate on them, we with plenty of room for building documentation in along the way. Sadly, many popular implementations don't start with the SDL, but an SDL can be generated through those, and the good ones are smart enough to pull in documentation from code comments or addordances in their DSL.