HTTP status code 503 is described in rfc2616 as being relevant when the server is "currently unable to handle the request due to a temporary overloading or maintenance of the server".
There are cases when an application may be down for maintenance. There are cases where an application may be over capacity.
In a server application I'm developing, I'd like to be able to differentiate between these two cases in the HTTP response such that client applications can be aware of a more precise reason for the service being unavailable.
Client applications could then display to the user either an "over capacity" or a "down for maintenance" notification to users as is relevant.
I could opt for using an undefined 5XX status code (for example 520), however I'd prefer to go with a defined standard approach if there is one.
Is there a defined standard approach for differentiating in the HTTP response between being unavailable due to capacity issues and unavailable due to maintenance?