Update a monitor

⚠️ Alpha — the versioned request is under active development and
may change without notice. The default request is stable.

Updates a monitor with a JSON merge patch
(RFC 7396) over the
writable fields of Monitor-Resource, and returns the updated monitor.

The Observe-Api-Version header picks one of two behaviors.

Default (no header). The long-standing update, which takes the
legacy body and does not change.

Versioned. Observe-Api-Version: 2026-10-06 or later takes a
Monitor-UpdateRequest and answers 200 with the Monitor-Resource.
It is rolling out account by account; until it reaches yours, the
header returns 403. An earlier or unparseable date takes the default
behavior.

The patch is applied to the monitor as Monitor-CreateRequest would
write it, and the result must be a valid Monitor-CreateRequest:

  • An omitted field keeps its value.
  • An object merges member by member, so
    {"scheduling": {"cron": {"timezone": "UTC"}}} changes the timezone
    and keeps the cron expression.
  • An array replaces the whole list, so {"rules": [...]} replaces the
    rules and leaves inputQuery alone.
  • null resets a field to its default, and cannot be sent for a field
    Monitor-CreateRequest requires.

Changing ruleKind keeps the other fields, so null the ones the new
kind rejects in the same patch. Switching between the branches of
scheduling or between baseline algorithms works the same way:
{"scheduling": {"cron": null, "transform": {...}}}.

actions, like every list, replaces the whole list, so one patch can
change any number of its entries. An entry that names an action the
monitor already has keeps that action and its id: action.id keeps it
unchanged, and inlineAction.id edits the monitor's own inline action
in place, keeping its pending reminders and the stored value of a
redacted header sent back masked. An inlineAction without id
creates a new action. A shared action is edited through its own
endpoint, not here.

A monitor that still runs on a retired interval schedule keeps it until
a patch sets scheduling; an interval cannot be set. A monitor whose
stage reads a query parameter keeps that input until a patch sets
inputQuery, which is a 409.

Any update makes the caller the identity AI investigations of the
monitor run as, as an update in the web app does.

A monitor managed by an app is a 403. A name already in use is a
409, as is a monitor changed by someone else while the patch was
applied (read it again and retry) and a monitor this API cannot write
back as it stands. Composite monitors are updated with
PATCH /v1/composite-monitors/{id}.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Unique identifier of the monitor. A string, as every response body renders it.

Body Params

A JSON merge patch over the writable fields of a monitor, which are the fields of Monitor-CreateRequest. Objects merge, arrays replace, and null resets a field to its default. A field not listed here, at any depth, is a 400. The nested objects are the -Patch schemas: they require nothing, since the result is checked once merged.

string
length ≥ 1

Name of the monitor, unique within its workspace.

string | null

Monitor description. null clears it.

boolean | null

Turn the monitor off or on. null turns it on.

string
enum

The evaluation rule kind of the monitor. Composite is the one kind that inspects no query: it alerts on a boolean condition over whether other monitors are currently alerting, correlated per group.

Allowed:
MonitorAiTriagingMode | null

AI auto-investigation mode. null resets it to None.

double

Window of data each evaluation considers, in seconds.

double | null
≥ 0

Delay before judging a window, in seconds. null takes the server default.

int64 | null
≥ 1

Alerts per hour after which the monitor disables itself. null takes the server default.

MonitorSchedulingPatch | null

The schedule to run on. null lets the server choose.

inputQuery
object

A merge patch over Monitor-MultiStageQueryInput. stages replaces the whole list.

string | null

Column of the query output the monitor watches.

MonitorValueAggregation | null

How valueColumn is reduced over each window.

MonitorBaselinePatch | null

The baseline an anomaly monitor compares against.

rules
array of objects
length ≥ 1

Replaces the rules.

rules
groupBy
array of objects | null

Replaces the dimensions. null removes them.

groupBy
serviceBindings
array of objects | null

Replaces the service binding. null removes it.

serviceBindings
actions
array of objects | null

Replaces the actions. An inline action the monitor already has is kept by its action.id, or edited in place by its inlineAction.id; one left out is deleted. null removes them all.

actions
customVariables
object | null

Template variables, merged by key. null removes them.

Headers
string
^\d{4}-\d{2}-\d{2}$

Picks the request and response shape by release date (YYYY-MM-DD). 2026-10-06 or later takes Monitor-UpdateRequest and returns Monitor-Resource, if enabled for your account (otherwise 403). No header, or an earlier or unparseable date, takes the default behavior described above.

Responses

Language
Credentials
Bearer
Authorization: Bearer <customerid> <apitoken>
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json