Skip to content

Update a monitor

PATCH
/monitors/{monitor_id}
curl --request PATCH \
--url https://api.perstat.io/monitors/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "alarm_gate": { "grace_seconds": 1, "origins": [ "example" ] }, "config": "example", "enabled": true, "interval_seconds": 1, "name": "example", "policy": { "alarm_consecutive": 1, "alarm_min_duration_seconds": 1, "alarm_quorum_mode": "example", "alarm_quorum_value": 1, "alert_profile_id": "example", "effective_alarm": { "alarm_consecutive": 1, "alarm_min_duration_seconds": 1, "alarm_quorum_mode": "example", "alarm_quorum_value": 1, "source": "example" }, "failed_interval_seconds": 1, "recovery_consecutive": 1, "recovery_quorum_mode": "example", "recovery_quorum_value": 1 }, "regions": [ "example" ], "type": "example" }'

Partially updates a monitor: name, type, configuration, check interval, probe regions, confirmation policy, and the enabled flag. Omitted fields keep their current value; the same interval and region rules as on create apply. Disabling a monitor also resolves its open incidents, since a paused monitor can no longer confirm recovery. Refused fields return 400 (402 for too many regions) with the same error body as on create. Requires project management rights.

monitor_id
required
string
Media typeapplication/json
object
alarm_gate
One of:
null
config
enabled
boolean | null
interval_seconds
integer | null format: int32
name
string | null
policy
One of:
null
regions
Array<string> | null
type
string | null
Examplegenerated
{
"alarm_gate": {
"grace_seconds": 1,
"origins": [
"example"
]
},
"config": "example",
"enabled": true,
"interval_seconds": 1,
"name": "example",
"policy": {
"alarm_consecutive": 1,
"alarm_min_duration_seconds": 1,
"alarm_quorum_mode": "example",
"alarm_quorum_value": 1,
"alert_profile_id": "example",
"effective_alarm": {
"alarm_consecutive": 1,
"alarm_min_duration_seconds": 1,
"alarm_quorum_mode": "example",
"alarm_quorum_value": 1,
"source": "example"
},
"failed_interval_seconds": 1,
"recovery_consecutive": 1,
"recovery_quorum_mode": "example",
"recovery_quorum_value": 1
},
"regions": [
"example"
],
"type": "example"
}
Media typeapplication/json
object
alarm_gate
One of:
null
config
required
enabled
required
boolean
id
required
string
interval_seconds
required
integer format: int32
last_severity

Severity des rohen jüngsten Checks (informativ; nicht für die Tönung).

string | null
last_status

Bestätigter Anzeige-Status für den Gesundheits-Punkt je Dienst: failed (rot) = offener Incident/Quorum-Ausfall, degraded (gelb) = unbestätigtes Problem (z. B. einzelner Vantage-Point), passed (grün). None = noch kein Check. Folgt damit derselben Logik wie Alarm/Push.

string | null
name
required
string
policy
One of:
null
project_id
required
string
regions
required
Array<string>
slug
required
string
type
required
string
Examplegenerated
{
"alarm_gate": {
"grace_seconds": 1,
"origins": [
"example"
]
},
"config": "example",
"enabled": true,
"id": "example",
"interval_seconds": 1,
"last_severity": "example",
"last_status": "example",
"name": "example",
"policy": {
"alarm_consecutive": 1,
"alarm_min_duration_seconds": 1,
"alarm_quorum_mode": "example",
"alarm_quorum_value": 1,
"alert_profile_id": "example",
"effective_alarm": {
"alarm_consecutive": 1,
"alarm_min_duration_seconds": 1,
"alarm_quorum_mode": "example",
"alarm_quorum_value": 1,
"source": "example"
},
"failed_interval_seconds": 1,
"recovery_consecutive": 1,
"recovery_quorum_mode": "example",
"recovery_quorum_value": 1
},
"project_id": "example",
"regions": [
"example"
],
"slug": "example",
"type": "example"
}

A field was refused; error and field name it

Media typeapplication/json

Body of a refused monitor write. Branch on error, which is stable; message explains the refusal in English.

object
error
required

Stable code: quota_reached, name_taken, invalid_request, unknown_type, empty_name, unknown_region, internal_region, too_many_regions, alarm_standard_unreachable, invalid_target, unknown_agent_metric, invalid_service_name or foreign_agent.

string
field

The refused field as a path into the monitor, such as config.url or regions. Absent when no single field is at fault.

string | null
limit

With too_many_regions: the most regions the plan checks a monitor from. With alarm_standard_unreachable: the distinct regions the organization’s alarm standard needs.

integer | null format: int64
message
required

The reason as an English sentence that names the field.

string
reason

With invalid_target: what is wrong with the target. One of missing, whitespace, scheme_in_host, path_in_host, malformed_label, too_long, unsupported_scheme, no_host, needs_two_labels or port_range.

string | null
Example
{
"error": "invalid_target",
"field": "config.url",
"reason": "unsupported_scheme"
}

Plan limit: too_many_regions

Media typeapplication/json

Body of a refused monitor write. Branch on error, which is stable; message explains the refusal in English.

object
error
required

Stable code: quota_reached, name_taken, invalid_request, unknown_type, empty_name, unknown_region, internal_region, too_many_regions, alarm_standard_unreachable, invalid_target, unknown_agent_metric, invalid_service_name or foreign_agent.

string
field

The refused field as a path into the monitor, such as config.url or regions. Absent when no single field is at fault.

string | null
limit

With too_many_regions: the most regions the plan checks a monitor from. With alarm_standard_unreachable: the distinct regions the organization’s alarm standard needs.

integer | null format: int64
message
required

The reason as an English sentence that names the field.

string
reason

With invalid_target: what is wrong with the target. One of missing, whitespace, scheme_in_host, path_in_host, malformed_label, too_long, unsupported_scheme, no_host, needs_two_labels or port_range.

string | null
Example
{
"error": "invalid_target",
"field": "config.url",
"reason": "unsupported_scheme"
}