Why the app is or is not reachable: the GatewayClass and the Gateway, the issuer, ports 80 and 443 (from the server), the route, each host's certificate and DNS, and the agent that delivers it.
GET
/api/v1/projects/{project}/environments/{environment}/apps/{app}/doctor
const url = 'https://example.com/api/v1/projects/example/environments/example/apps/example/doctor';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/projects/example/environments/example/apps/example/doctorParameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”project
required
string
Project name
environment
required
string
Environment short name
app
required
string
App name
Responses
Section titled “Responses”Media typeapplication/json
object
status
required
The worst status of the checks; unknown is never ok.
string
checks
required
Array<object>
object
id
required
gateway-class, gateway, issuer, port-80, port-443, route,
certificate, dns, claim, delegation, proxy or agent.
string
subject
required
What was checked (a host, a class, a port), when there are several.
string
status
required
ok, warn, unknown (could not be checked) or fail.
string
detail
required
string
hint
What to do about it.
string | null
graph
required
Every layer from the build to the visitor, with what was observed (M5.5).
object
findings
required
Conclusions, root causes first; nothing unobserved counts as fine.
Array<object>
object
Examplegenerated
{ "status": "example", "checks": [ { "id": "example", "subject": "example", "status": "example", "detail": "example", "hint": "example" } ], "graph": {}, "findings": [ {} ]}Media typeapplication/json
Problem Details body.
object
code
required
Stable machine-readable code, e.g. forbidden.
string
title
required
Short human readable title.
string
status
required
HTTP status.
integer format: int32
detail
Details, if safe to expose.
string | null
Example
{ "code": "forbidden"}