What is not ok now
curl --request GET \ --url https://api.uup.dev/v1/status \ --header 'Authorization: Bearer <token>'In each Project this token reaches, or the one project names: the Monitors whose status is not ok, the open Incidents and the open Regional outages. One request, however many Projects the token reaches.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Only this Project, by its identifier, prj_…. Left out, every Project the token reaches.
Only this Project, by its identifier, prj_…. Left out, every Project the token reaches.
Responses
Section titled “Responses”What is not ok now, Project by Project.
What is not ok now, Project by Project.
object
Each Project asked about, oldest first, with what is not ok there now. A Project with nothing wrong has empty lists.
What is not ok now in one Project.
object
The Project’s identifier, prj_….
The Project’s name.
Its Monitors whose status is not ok, in the order they were made: failed, warning, pending, or null when every Check is turned off. Each Check carries its open Incident.
A Monitor and its Checks.
object
The Monitor’s identifier, mon_….
Accept a type you do not know: new ones will come.
Its URL or host, or a heartbeat’s name for itself.
The locations that check it. Empty for a heartbeat.
For a location that cannot check it now, the location checking in its place.
object
active is checked; paused was paused; suspended was stopped because the Plan no longer covers it.
The worst Status of its enabled Checks, or null with none enabled.
The Notification rules assigned to it, rul_….
When it was paused, or null.
When the Plan stopped it, or null.
When it was made.
One question a Monitor asks of its target.
object
The Check’s identifier, chk_….
Its latest Status.
Until when its messages are held, or null.
Its settings, told apart by kind, with every secret left out. A heartbeat’s carries the url its job calls.
object
Why it does not apply to this target, or null.
When a heartbeat is next due, or null.
An Incident open now.
object
The Incident’s identifier, inc_….
When the failure that opened it reached us.
When someone said they are on it, or null.
What the run that opened it saw.
When it was made.
Its open Incidents, newest first. openedAt says since when.
An outage of one Check.
object
The Incident’s identifier, inc_….
Its Monitor, mon_….
The Check it is on, chk_….
When the failure that opened it reached us.
When it ended, or null while it is open.
Why it ended, or null while it is open.
What the run that opened it saw.
Set when it opened soon after the one before, or null.
The uptime Incident that explains it, inc_…, or null. One with a cause is told about only once it is released.
When one with a cause was released to be told about, or null.
When someone said they are on it, or null.
Who said it: a member signed in, an alert’s link, or an api_token. Null until then.
The member’s or the API token’s name, or null when nobody can be named.
The API token that acknowledged it, tok_…, or null.
The member’s or the API token’s name, when it was ended by hand: resolved, its Monitor paused or deleted, or its Check turned off. Null otherwise.
The API token that ended it, tok_…, or null.
Its open Regional outages, newest first: one location cannot reach a target the others can.
One location cannot reach the target. It never counts against uptime.
object
The Regional outage’s identifier, rgo_….
Its Monitor, mon_….
The Check it is on, chk_….
The location that cannot reach the target.
When the first failure of its streak reached us.
When it ended, or null while it is open.
Why it ended, or null while it is open.
Set when it opened soon after the one before, or null.
Example
{ "projects": [ { "monitors": [ { "type": "http", "state": "active", "status": "pending", "checks": [ { "type": "uptime", "status": "pending", "notApplicable": "not_https", "openIncident": { "errorKind": "dns_failure" } } ] } ], "incidents": [ { "checkType": "uptime", "resolution": "recovered", "errorKind": "dns_failure", "acknowledgedSource": "member" } ], "regionalOutages": [ { "resolution": "recovered" } ] } ]}The request was refused: invalid_request names the field at fault.
A refusal.
object
object
What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.
What to do, in the dashboard’s words. It may change, so never branch on it.
The field at fault, on a 400 invalid_request.
On a 402 not_entitled: what the Plan allows no more of.
On a 402: the Plan’s name.
On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.
On a 402: what is in use, or for locations, how many were asked.
On a 422 target_cap_reached: which cap the Monitor would pass.
On a 422 target_cap_reached: the site the cap counts, by its host.
On a 422 target_cap_reached: the location the cap was reached from.
On a 422 target_cap_reached: what the cap counts now, before this Monitor.
On a 409 paid_needs_email: the names of the saved rules it would break.
On a 400 event_type_not_on_monitor: the events this Monitor never sends.
Example
{ "error": { "code": "invalid_request", "kind": "project" }}No working API token: unauthenticated.
A refusal.
object
object
What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.
What to do, in the dashboard’s words. It may change, so never branch on it.
The field at fault, on a 400 invalid_request.
On a 402 not_entitled: what the Plan allows no more of.
On a 402: the Plan’s name.
On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.
On a 402: what is in use, or for locations, how many were asked.
On a 422 target_cap_reached: which cap the Monitor would pass.
On a 422 target_cap_reached: the site the cap counts, by its host.
On a 422 target_cap_reached: the location the cap was reached from.
On a 422 target_cap_reached: what the cap counts now, before this Monitor.
On a 409 paid_needs_email: the names of the saved rules it would break.
On a 400 event_type_not_on_monitor: the events this Monitor never sends.
Example
{ "error": { "code": "invalid_request", "kind": "project" }}This token may not do this: forbidden.
A refusal.
object
object
What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.
What to do, in the dashboard’s words. It may change, so never branch on it.
The field at fault, on a 400 invalid_request.
On a 402 not_entitled: what the Plan allows no more of.
On a 402: the Plan’s name.
On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.
On a 402: what is in use, or for locations, how many were asked.
On a 422 target_cap_reached: which cap the Monitor would pass.
On a 422 target_cap_reached: the site the cap counts, by its host.
On a 422 target_cap_reached: the location the cap was reached from.
On a 422 target_cap_reached: what the cap counts now, before this Monitor.
On a 409 paid_needs_email: the names of the saved rules it would break.
On a 400 event_type_not_on_monitor: the events this Monitor never sends.
Example
{ "error": { "code": "invalid_request", "kind": "project" }}No such thing, or not one this token reaches: not_found.
A refusal.
object
object
What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.
What to do, in the dashboard’s words. It may change, so never branch on it.
The field at fault, on a 400 invalid_request.
On a 402 not_entitled: what the Plan allows no more of.
On a 402: the Plan’s name.
On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.
On a 402: what is in use, or for locations, how many were asked.
On a 422 target_cap_reached: which cap the Monitor would pass.
On a 422 target_cap_reached: the site the cap counts, by its host.
On a 422 target_cap_reached: the location the cap was reached from.
On a 422 target_cap_reached: what the cap counts now, before this Monitor.
On a 409 paid_needs_email: the names of the saved rules it would break.
On a 400 event_type_not_on_monitor: the events this Monitor never sends.
Example
{ "error": { "code": "invalid_request", "kind": "project" }}Too many requests: rate_limited. Retry-After says when to try again.
A refusal.
object
object
What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.
What to do, in the dashboard’s words. It may change, so never branch on it.
The field at fault, on a 400 invalid_request.
On a 402 not_entitled: what the Plan allows no more of.
On a 402: the Plan’s name.
On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.
On a 402: what is in use, or for locations, how many were asked.
On a 422 target_cap_reached: which cap the Monitor would pass.
On a 422 target_cap_reached: the site the cap counts, by its host.
On a 422 target_cap_reached: the location the cap was reached from.
On a 422 target_cap_reached: what the cap counts now, before this Monitor.
On a 409 paid_needs_email: the names of the saved rules it would break.
On a 400 event_type_not_on_monitor: the events this Monitor never sends.
Example
{ "error": { "code": "invalid_request", "kind": "project" }}