I'm not too fond of building our own set of error codes, HTTP already provides a huge array of response codes we should try to reuse. They can be augmented by by JSON responses containing a descriptive (= human readable) error message as well as repeating the HTTP error code for easier client access to it.