Write a Notification rule
curl --request POST \ --url https://api.uup.dev/v1/projects/prj_01J9Z3K8X4M2N6P8Q0R2S4T6V8/rules \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "eventTypes": [ "uptime.failed" ], "channelIds": [ "example" ], "warningsDuringOutage": false, "repeat": "off" }'A rule on the Project. It reaches no Monitor until it is assigned to one: PUT …/monitors/{monitorId}/rules. A Channel this Project does not have is 404.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The Project’s identifier, prj_….
Example
prj_01J9Z3K8X4M2N6P8Q0R2S4T6V8The Project’s identifier, prj_….
Request Bodyrequired
Section titled “Request Bodyrequired”The new rule.
A new rule. It reaches no Monitor until it is assigned to one. eventTypes null sends every event, those added later included.
object
Responses
Section titled “Responses”The rule, as it was written.
A Notification rule: which events go to which Channels.
object
The rule’s identifier, rul_….
The Default rule, which every new Monitor gets and nobody deletes.
The events it sends, or null for every one.
Its Channels, chn_….
How often an open Incident is sent again, or off.
How many Monitors it is assigned to.
When it was written.
Example
{ "eventTypes": [ "uptime.failed" ], "repeat": "off"}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" }}It conflicts with what is there now.
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" }}Refused for a reason its code names.
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" }}