JSON-RPC
JSON-RPC is a simple specification for doing Remote Procedure Calls (RPC).
JSON gives us a format that can be readily converted to known and fairly standard data structures across platforms and languages, making the goal of cross platform and cross language RPC very simple.
There is currently one specification that is widely deployed (Version 1). There are several alternate versions used in niche segments and by various developers. A 1.1 and 1.1Alt specifications have been proposed, but in general there was not a great deal of agreement on the goals and definitions of the json-rpc. These goals have been redefined in the 2.0 specification to match both user expectations and reflect how json-rpc is used by developers.
Extension specifications are encouraged to build on the main specification to add custom behaviors. Most other mechanisms can exist at the rpc api layer, leaving the messaging layer clean.