When a container on App Platform returns any 5xx response, the ingress replaces
it with a generic HTML error page and a 504 status. The original status survives
only as a response header: for a 503 my API sent, clients receive
HTTP/2 504
content-type: text/html
x-do-orig-status: 503
with the body dropped. Support confirmed this is enforced by the
Cloudflare integration and cannot be changed per app.
Why this matters:
  1. Structured API errors. My API returns 503 with a JSON body (an error code and
a user-facing message) when a downstream dependency such as the database is
unavailable. The API itself is healthy. Mobile clients render that message;
with the substitution they receive HTML they cannot parse and fall back to a
generic error, so the app cannot tell users what actually happened or whether
it is safe to retry.
  1. Health and status endpoints. A /health endpoint that answers 503 with a JSON
report of which internal check failed is standard practice. Monitors still
see "down", but the report never leaves the platform, so operators cannot
read it from outside.
  1. Standard error contracts. RFC 9457 problem details, GraphQL over HTTP and
most SDKs assume the origin's status and body are delivered as sent.
Requested: a per-app (or per-component) setting to pass origin 5xx responses
through unchanged, or at minimum to preserve the origin status code and
content-type. The platform page could remain the default and still apply when
the origin is unreachable, which is the case it exists for.