Skip to content

What is not ok now

GET
/status
Code sample: Shell / cURL
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.

project

Only this Project, by its identifier, prj_…. Left out, every Project the token reaches.

string
>= 1 characters

Only this Project, by its identifier, prj_…. Left out, every Project the token reaches.

What is not ok now, Project by Project.

Media typeapplication/json

What is not ok now, Project by Project.

object
projects
required

Each Project asked about, oldest first, with what is not ok there now. A Project with nothing wrong has empty lists.

Array<object>

What is not ok now in one Project.

object
projectId
required

The Project’s identifier, prj_….

string
name
required

The Project’s name.

string
monitors
required

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.

Array<object>

A Monitor and its Checks.

object
id
required

The Monitor’s identifier, mon_….

string
projectId
required
string
type
required

Accept a type you do not know: new ones will come.

string
Allowed values: http tcp ping heartbeat
name
required
string
description
required
string | null
target
required

Its URL or host, or a heartbeat’s name for itself.

string
locations
required

The locations that check it. Empty for a heartbeat.

Array<string>
standIns
required

For a location that cannot check it now, the location checking in its place.

object
key
additional properties
string
state
required

active is checked; paused was paused; suspended was stopped because the Plan no longer covers it.

string
Allowed values: active paused suspended
status
required

The worst Status of its enabled Checks, or null with none enabled.

string | null
Allowed values: pending ok warning failed
onStatusPage
required
boolean
ruleIds
required

The Notification rules assigned to it, rul_….

Array<string>
pausedAt
required

When it was paused, or null.

string | null format: date-time
suspendedAt
required

When the Plan stopped it, or null.

string | null format: date-time
createdAt
required

When it was made.

string format: date-time
checks
required
Array<object>

One question a Monitor asks of its target.

object
id
required

The Check’s identifier, chk_….

string
type
required
string
Allowed values: uptime performance certificate domain
enabled
required
boolean
intervalSec
required
integer
status
required

Its latest Status.

string
Allowed values: pending ok warning failed
snoozedUntil
required

Until when its messages are held, or null.

string | null format: date-time
settings
required

Its settings, told apart by kind, with every secret left out. A heartbeat’s carries the url its job calls.

object
kind
required
string
key
additional properties
notApplicable
required

Why it does not apply to this target, or null.

string | null
Allowed values: not_https address no_registrable_domain no_rdap_service rdap_unknown
heartbeatDeadline
required

When a heartbeat is next due, or null.

string | null format: date-time
openIncident
required

An Incident open now.

object
id
required

The Incident’s identifier, inc_….

string
openedAt
required

When the failure that opened it reached us.

string format: date-time
acknowledgedAt
required

When someone said they are on it, or null.

string | null format: date-time
errorKind
required

What the run that opened it saw.

string | null
Allowed values: dns_failure address_refused connection_refused connection_reset timeout tls_handshake_failed certificate_expired certificate_invalid domain_expired registry_unreadable no_signal redirect_downgrade too_many_redirects redirect_invalid port_blocked unexpected_status keyword_missing keyword_present json_mismatch json_invalid body_truncated read_failed no_reply packet_loss probe_unavailable unreachable
createdAt
required

When it was made.

string format: date-time
incidents
required

Its open Incidents, newest first. openedAt says since when.

Array<object>

An outage of one Check.

object
id
required

The Incident’s identifier, inc_….

string
monitorId
required

Its Monitor, mon_….

string
checkId
required

The Check it is on, chk_….

string
checkType
required
string
Allowed values: uptime performance certificate domain
openedAt
required

When the failure that opened it reached us.

string format: date-time
resolvedAt
required

When it ended, or null while it is open.

string | null format: date-time
resolution
required

Why it ended, or null while it is open.

string | null
Allowed values: recovered retracted check_disabled monitor_paused suspended manually_resolved
errorKind
required

What the run that opened it saw.

string | null
Allowed values: dns_failure address_refused connection_refused connection_reset timeout tls_handshake_failed certificate_expired certificate_invalid domain_expired registry_unreadable no_signal redirect_downgrade too_many_redirects redirect_invalid port_blocked unexpected_status keyword_missing keyword_present json_mismatch json_invalid body_truncated read_failed no_reply packet_loss probe_unavailable unreachable
flappingAt
required

Set when it opened soon after the one before, or null.

string | null format: date-time
causedBy
required

The uptime Incident that explains it, inc_…, or null. One with a cause is told about only once it is released.

string | null
releasedAt
required

When one with a cause was released to be told about, or null.

string | null format: date-time
acknowledgedAt
required

When someone said they are on it, or null.

string | null format: date-time
acknowledgedSource
required

Who said it: a member signed in, an alert’s link, or an api_token. Null until then.

string | null
Allowed values: member alert api_token
acknowledgedBy
required

The member’s or the API token’s name, or null when nobody can be named.

string | null
acknowledgedByTokenId
required

The API token that acknowledged it, tok_…, or null.

string | null
resolvedBy
required

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.

string | null
resolvedByTokenId
required

The API token that ended it, tok_…, or null.

string | null
regionalOutages
required

Its open Regional outages, newest first: one location cannot reach a target the others can.

Array<object>

One location cannot reach the target. It never counts against uptime.

object
id
required

The Regional outage’s identifier, rgo_….

string
monitorId
required

Its Monitor, mon_….

string
checkId
required

The Check it is on, chk_….

string
location
required

The location that cannot reach the target.

string
openedAt
required

When the first failure of its streak reached us.

string format: date-time
resolvedAt
required

When it ended, or null while it is open.

string | null format: date-time
resolution
required

Why it ended, or null while it is open.

string | null
Allowed values: recovered retracted monitor_paused
flappingAt
required

Set when it opened soon after the one before, or null.

string | null format: date-time

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.

Media typeapplication/json

A refusal.

object
error
required
object
code
required

What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.

string
Allowed values: invalid_request bad_identifier unauthenticated forbidden not_found not_entitled rate_limited interval_below_floor timeout_below_floor url_missing check_not_applicable port_blocked target_cap_reached too_few_locations location_unavailable uptime_always_on monitor_busy monitor_suspended project_suspended validation_required validation_unavailable validation_rate_limited validation_expired validation_mismatch validation_failed default_rule_is_fixed name_taken paid_needs_email paid_rule_sends_nothing webhook_url_refused address_refused event_type_not_on_monitor too_many_webhooks url_taken
message
required

What to do, in the dashboard’s words. It may change, so never branch on it.

string
field

The field at fault, on a 400 invalid_request.

string
kind

On a 402 not_entitled: what the Plan allows no more of.

string
Allowed values: project monitor heartbeat location
plan

On a 402: the Plan’s name.

string
limit

On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.

integer
used

On a 402: what is in use, or for locations, how many were asked.

integer
cap

On a 422 target_cap_reached: which cap the Monitor would pass.

string
key

On a 422 target_cap_reached: the site the cap counts, by its host.

string
location

On a 422 target_cap_reached: the location the cap was reached from.

string
current

On a 422 target_cap_reached: what the cap counts now, before this Monitor.

integer
rules

On a 409 paid_needs_email: the names of the saved rules it would break.

Array<string>
eventTypes

On a 400 event_type_not_on_monitor: the events this Monitor never sends.

Array<string>

Example

{
"error": {
"code": "invalid_request",
"kind": "project"
}
}

No working API token: unauthenticated.

Media typeapplication/json

A refusal.

object
error
required
object
code
required

What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.

string
Allowed values: invalid_request bad_identifier unauthenticated forbidden not_found not_entitled rate_limited interval_below_floor timeout_below_floor url_missing check_not_applicable port_blocked target_cap_reached too_few_locations location_unavailable uptime_always_on monitor_busy monitor_suspended project_suspended validation_required validation_unavailable validation_rate_limited validation_expired validation_mismatch validation_failed default_rule_is_fixed name_taken paid_needs_email paid_rule_sends_nothing webhook_url_refused address_refused event_type_not_on_monitor too_many_webhooks url_taken
message
required

What to do, in the dashboard’s words. It may change, so never branch on it.

string
field

The field at fault, on a 400 invalid_request.

string
kind

On a 402 not_entitled: what the Plan allows no more of.

string
Allowed values: project monitor heartbeat location
plan

On a 402: the Plan’s name.

string
limit

On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.

integer
used

On a 402: what is in use, or for locations, how many were asked.

integer
cap

On a 422 target_cap_reached: which cap the Monitor would pass.

string
key

On a 422 target_cap_reached: the site the cap counts, by its host.

string
location

On a 422 target_cap_reached: the location the cap was reached from.

string
current

On a 422 target_cap_reached: what the cap counts now, before this Monitor.

integer
rules

On a 409 paid_needs_email: the names of the saved rules it would break.

Array<string>
eventTypes

On a 400 event_type_not_on_monitor: the events this Monitor never sends.

Array<string>

Example

{
"error": {
"code": "invalid_request",
"kind": "project"
}
}

This token may not do this: forbidden.

Media typeapplication/json

A refusal.

object
error
required
object
code
required

What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.

string
Allowed values: invalid_request bad_identifier unauthenticated forbidden not_found not_entitled rate_limited interval_below_floor timeout_below_floor url_missing check_not_applicable port_blocked target_cap_reached too_few_locations location_unavailable uptime_always_on monitor_busy monitor_suspended project_suspended validation_required validation_unavailable validation_rate_limited validation_expired validation_mismatch validation_failed default_rule_is_fixed name_taken paid_needs_email paid_rule_sends_nothing webhook_url_refused address_refused event_type_not_on_monitor too_many_webhooks url_taken
message
required

What to do, in the dashboard’s words. It may change, so never branch on it.

string
field

The field at fault, on a 400 invalid_request.

string
kind

On a 402 not_entitled: what the Plan allows no more of.

string
Allowed values: project monitor heartbeat location
plan

On a 402: the Plan’s name.

string
limit

On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.

integer
used

On a 402: what is in use, or for locations, how many were asked.

integer
cap

On a 422 target_cap_reached: which cap the Monitor would pass.

string
key

On a 422 target_cap_reached: the site the cap counts, by its host.

string
location

On a 422 target_cap_reached: the location the cap was reached from.

string
current

On a 422 target_cap_reached: what the cap counts now, before this Monitor.

integer
rules

On a 409 paid_needs_email: the names of the saved rules it would break.

Array<string>
eventTypes

On a 400 event_type_not_on_monitor: the events this Monitor never sends.

Array<string>

Example

{
"error": {
"code": "invalid_request",
"kind": "project"
}
}

No such thing, or not one this token reaches: not_found.

Media typeapplication/json

A refusal.

object
error
required
object
code
required

What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.

string
Allowed values: invalid_request bad_identifier unauthenticated forbidden not_found not_entitled rate_limited interval_below_floor timeout_below_floor url_missing check_not_applicable port_blocked target_cap_reached too_few_locations location_unavailable uptime_always_on monitor_busy monitor_suspended project_suspended validation_required validation_unavailable validation_rate_limited validation_expired validation_mismatch validation_failed default_rule_is_fixed name_taken paid_needs_email paid_rule_sends_nothing webhook_url_refused address_refused event_type_not_on_monitor too_many_webhooks url_taken
message
required

What to do, in the dashboard’s words. It may change, so never branch on it.

string
field

The field at fault, on a 400 invalid_request.

string
kind

On a 402 not_entitled: what the Plan allows no more of.

string
Allowed values: project monitor heartbeat location
plan

On a 402: the Plan’s name.

string
limit

On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.

integer
used

On a 402: what is in use, or for locations, how many were asked.

integer
cap

On a 422 target_cap_reached: which cap the Monitor would pass.

string
key

On a 422 target_cap_reached: the site the cap counts, by its host.

string
location

On a 422 target_cap_reached: the location the cap was reached from.

string
current

On a 422 target_cap_reached: what the cap counts now, before this Monitor.

integer
rules

On a 409 paid_needs_email: the names of the saved rules it would break.

Array<string>
eventTypes

On a 400 event_type_not_on_monitor: the events this Monitor never sends.

Array<string>

Example

{
"error": {
"code": "invalid_request",
"kind": "project"
}
}

Too many requests: rate_limited. Retry-After says when to try again.

Media typeapplication/json

A refusal.

object
error
required
object
code
required

What was refused, stable across releases. New codes may be added, so handle a code you do not know as its status says.

string
Allowed values: invalid_request bad_identifier unauthenticated forbidden not_found not_entitled rate_limited interval_below_floor timeout_below_floor url_missing check_not_applicable port_blocked target_cap_reached too_few_locations location_unavailable uptime_always_on monitor_busy monitor_suspended project_suspended validation_required validation_unavailable validation_rate_limited validation_expired validation_mismatch validation_failed default_rule_is_fixed name_taken paid_needs_email paid_rule_sends_nothing webhook_url_refused address_refused event_type_not_on_monitor too_many_webhooks url_taken
message
required

What to do, in the dashboard’s words. It may change, so never branch on it.

string
field

The field at fault, on a 400 invalid_request.

string
kind

On a 402 not_entitled: what the Plan allows no more of.

string
Allowed values: project monitor heartbeat location
plan

On a 402: the Plan’s name.

string
limit

On a 402: what the Plan allows. On a 422 target_cap_reached: the cap’s figure.

integer
used

On a 402: what is in use, or for locations, how many were asked.

integer
cap

On a 422 target_cap_reached: which cap the Monitor would pass.

string
key

On a 422 target_cap_reached: the site the cap counts, by its host.

string
location

On a 422 target_cap_reached: the location the cap was reached from.

string
current

On a 422 target_cap_reached: what the cap counts now, before this Monitor.

integer
rules

On a 409 paid_needs_email: the names of the saved rules it would break.

Array<string>
eventTypes

On a 400 event_type_not_on_monitor: the events this Monitor never sends.

Array<string>

Example

{
"error": {
"code": "invalid_request",
"kind": "project"
}
}