We did REST but we completely skipped over "just using HTTP correctly." E.g. using media types in the Content-Type and Accept fields to specify that you're sending a "application/vnd.foo.myapp.myfooreq.v1+json" and looking for either a "application/vnd.foo.myapp.myfooresp.v1+json" or "application/vnd.foo.myapp.knownerror.v1+json" in response.
Then, HTTP itself does the RPC message type management. Request message the server didn't expect? 406 error.
Then, HTTP itself does the RPC message type management. Request message the server didn't expect? 406 error.