The Open API Initiative
openapis.org
openapis.org
Examples.
Real, working, copy-n-paste examples.
While I prefer the swagger format, we use Blueprint at work because it's trivial to include an actual example request or response as part of the documentation.
Sure, schema helps, but having a spot to just lay out an example request or response is really important.
Another thing: often, one must perform prerequisite steps before making a call to a given API method. Eg - you must have booked a flight before checking in. The context surrounding how an API fits into its use-cases is as important as the API itself.
https://github.com/OAI/OpenAPI-Specification/tree/master/exa...
It seems like the best supported tool for generating client and server stubs is Swagger Codegen. Version 2.1.2 seems to support the OpenAPI 2.0 draft spec.
It's fine to just show a long list of method signatures and class hierarchies, but a working code sample is the picture that's worth a thousand words.
generated from this
https://github.com/apidoc/apidocjs.com/tree/gh-pages/source/...
We have seen this cycle before with WSDL and XML Schema, etc. I hope we have learned from our mistakes and don't go down the same path to have history repeat itself.
Personally I like the idea of an API Specification but the practical use has been a let down so far.
If we can get producers to standardize all or part of their API, then we gain the ability to switch easily between providers and force them to compete on service instead of proprietary lock-in.
Ideally.
That said, there certainly will be extensions, because REST as it is is not sufficient for many scenarios. Take WebDAV, for instance: it has locks, batch updates, queries, standard support for sync, etc. REST has nothing of this sort. Have you ever tried to sync a large dataset against a typical REST API? It's very painful. While REST is simple, this simplicity mostly comes from being very basic. And WSDL and XML Schema are complex not because their authors are stupid (addition: or because there was some political wars), but because the subject itself is complex.
Review the [current specification]. The human-readable markdown file is the source of truth for the specification.
Thrift, gRPC, YaRPC, etc. are all RPC frameworks with strong typing and binary transports. They are still immature, but as such frameworks mature and support more languages, they will eat the lunch of any project trying to build on REST.
REST APIs are based around media types, not URI structures. Unfortunately, tools like Swagger are based around URI structures, which shouldn't be in REST API documentation at all. It makes trying to find good tooling for REST APIs difficult when people say "just use Swagger" and similar.