The thing that bothers me about this is that it is hard to write code which does error handling correctly when you don't know what the response can be. The format is very similar to that returned by ArcGIS Server except that it adds "error" and "error_description". Why did the author choose to do this instead of simply using "message" and "details" which was already present?
This is a repeating pattern. For example, the admin API to ArcGIS Server chose to use a totally different error response.