MetriBeacon
Menü
Deutsch

PUT Monitorbenachrichtigungen speichern

/api/v1/monitors/{id}/alerting

Speichern Sie mit den aktuellen Konfigurations- und Benachrichtigungsrevisionen. Verwaltete Alarmregeln und Ressourcenlimits werden gemeinsam geprüft.

Auf dieser Seite

Zugriff und Rechte

Speichern Sie mit den aktuellen Konfigurations- und Benachrichtigungsrevisionen. Verwaltete Alarmregeln und Ressourcenlimits werden gemeinsam geprüft.

Browsersitzung: Cookie __Host-mb_session.

Maschinen-Verwaltungszugang in Authorization: Bearer. Beachten Sie die von der Operation benötigten Berechtigungen (Scopes).

Senden Sie bei einer Änderung mit Browsersitzung das aktuelle CSRF-Token in X-CSRF-Token zusammen mit dem Same-Site-Cookie. OAuth-Zustimmung verwendet ihr dokumentiertes Formularfeld.

Parameter und Header

FeldPositionTyp und GrenzenErforderlichBedeutung
idPfadstring; {"format":"uuid"}JaRessourcen-UUID aus dem Pfad. Sie muss existieren und für die handelnde Identität zugänglich sein.
OriginHeaderstring; {"format":"uri"}NeinMuss, falls vorhanden, dem kanonischen HTTPS-Origin entsprechen. Sec-Fetch-Site cross-site wird abgewiesen.
X-CSRF-TokenHeaderstringNeinWert des Browser-CSRF-Cookies. Bei einem zulässigen Maschinen-Verwaltungszugang nicht erforderlich.

Anfragekörper

FeldTyp und GrenzenErforderlichBedeutung
$object; {"additionalProperties":false}Ja—
$.expected_revisioninteger; {"minimum":0}Ja—
$.expected_config_revisioninteger; {"minimum":1}Ja—
$.settingsMonitorAlertingSettingsJa—
$.settings.enabledbooleanJa—
$.settings.reminders_enabledbooleanJa—
$.settings.include_target_urlbooleanJa—
$.settings.certificate_enabledbooleanJa—
$.settings.expiry_remindersbooleanJa—
$.settings.certificate_changesbooleanJa—
$.settings.domain_enabledbooleanJa—
$.settings.delay_secondsinteger; {"minimum":0,"maximum":86400}Ja—
$.settings.repeat_secondsinteger; {"minimum":1800,"maximum":86400}Ja—
$.settings.reminder_limitinteger; {"minimum":1,"maximum":4}Ja—
$.settings.certificate_daysinteger; {"minimum":1,"maximum":3660}Ja—
$.settings.domain_daysinteger; {"minimum":1,"maximum":3660}Ja—
$.settings.notification_modestring; {"enum":["all_active","selected"]}Ja—
$.settings.notification_destination_idsarray<string; {"format":"uuid"}>; {"maxItems":20}Ja—
$.settings.notification_destination_ids[]string; {"format":"uuid"}Ja—
$.settings.escalation_policy_idstring | null; {"format":"uuid"}Ja—
$.settings.severitystring; {"enum":["info","warning","critical"]}Ja—
$.settings.domainstring; {"maxLength":253}Ja—
$.settings.warning_notification_modestring; {"enum":["inherit","all_active","selected"]}Ja—
$.settings.warning_destination_idsarray<string; {"format":"uuid"}>; {"maxItems":20}Ja—
$.settings.warning_destination_ids[]string; {"format":"uuid"}Ja—
$.expected_routing_revisioninteger; {"minimum":0}Nein—

Antworten

HeaderTyp und GrenzenBedeutung
Cache-Controlstring; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"}Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation.
Content-Languagestring; {"enum":["en","de"]}Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil.
Referrer-PolicyJSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]}Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter.
VarystringAntworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren.
X-Content-Type-OptionsJSON; {"const":"nosniff"}Der Browser muss den angegebenen Inhaltstyp verwenden.
X-Frame-OptionsJSON; {"const":"DENY"}Die Antwort darf nicht in einem Frame eingebettet werden.
X-Request-IDstringVom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.

application/json

FeldTyp und GrenzenErforderlichBedeutung
$MonitorAlertingJa—
$.revisioninteger; {"minimum":0}Ja—
$.settingsMonitorAlertingSettings | nullJa—
$.settings (oneOf 1)MonitorAlertingSettingsNein—
$.settings (oneOf 1).enabledbooleanJa—
$.settings (oneOf 1).reminders_enabledbooleanJa—
$.settings (oneOf 1).include_target_urlbooleanJa—
$.settings (oneOf 1).certificate_enabledbooleanJa—
$.settings (oneOf 1).expiry_remindersbooleanJa—
$.settings (oneOf 1).certificate_changesbooleanJa—
$.settings (oneOf 1).domain_enabledbooleanJa—
$.settings (oneOf 1).delay_secondsinteger; {"minimum":0,"maximum":86400}Ja—
$.settings (oneOf 1).repeat_secondsinteger; {"minimum":1800,"maximum":86400}Ja—
$.settings (oneOf 1).reminder_limitinteger; {"minimum":1,"maximum":4}Ja—
$.settings (oneOf 1).certificate_daysinteger; {"minimum":1,"maximum":3660}Ja—
$.settings (oneOf 1).domain_daysinteger; {"minimum":1,"maximum":3660}Ja—
$.settings (oneOf 1).notification_modestring; {"enum":["all_active","selected"]}Ja—
$.settings (oneOf 1).notification_destination_idsarray<string; {"format":"uuid"}>; {"maxItems":20}Ja—
$.settings (oneOf 1).notification_destination_ids[]string; {"format":"uuid"}Ja—
$.settings (oneOf 1).escalation_policy_idstring | null; {"format":"uuid"}Ja—
$.settings (oneOf 1).severitystring; {"enum":["info","warning","critical"]}Ja—
$.settings (oneOf 1).domainstring; {"maxLength":253}Ja—
$.settings (oneOf 1).warning_notification_modestring; {"enum":["inherit","all_active","selected"]}Ja—
$.settings (oneOf 1).warning_destination_idsarray<string; {"format":"uuid"}>; {"maxItems":20}Ja—
$.settings (oneOf 1).warning_destination_ids[]string; {"format":"uuid"}Ja—
$.settings (oneOf 2)nullNein—
Stabile Fehlercodes
invalid_selection
HeaderTyp und GrenzenBedeutung
Cache-Controlstring; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"}Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation.
Content-Languagestring; {"enum":["en","de"]}Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil.
Referrer-PolicyJSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]}Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter.
VarystringAntworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren.
X-Content-Type-OptionsJSON; {"const":"nosniff"}Der Browser muss den angegebenen Inhaltstyp verwenden.
X-Frame-OptionsJSON; {"const":"DENY"}Die Antwort darf nicht in einem Frame eingebettet werden.
X-Request-IDstringVom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.

application/problem+json

FeldTyp und GrenzenErforderlichBedeutung
$ProblemJa—
$.codestringJaStabiler maschinenlesbarer Fehlercode
$.detailstringJaKurze lokalisierte Erklärung ohne interne Fehlerdaten
$.instancestringJaEinmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource
$.messagestringJaVorübergehend für bestehende Clients gleich detail
$.message_keystringJaStabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage
$.message_paramsobject; {"additionalProperties":true}JaBenannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML
$.request_idstring; {"pattern":"^[0-9a-f]{32}$"}JaVom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten.
$.statusinteger; {"maximum":599,"minimum":400}Ja—
$.titlestringJaLokalisierte HTTP-Statusbezeichnung
$.typestring; {"const":"about:blank"}Ja—
json
{
  "code": "demo",
  "detail": "Demo error detail; inspect the documented code.",
  "instance": "demo",
  "message": "Demo error detail; inspect the documented code.",
  "message_key": "errors.requestFailed",
  "message_params": {},
  "request_id": "00000000000000000000000000000000",
  "status": 422,
  "title": "Demo error",
  "type": "about:blank"
}

Wiederholungen und asynchrone Aufträge

Für diese Änderung gibt es keine allgemeine Wiederholungsgarantie. Prüfen Sie bei unklarer Antwort den betroffenen Eintrag, bevor Sie es erneut versuchen. Beachten Sie Wartezeiten aus Retry-After und fordern Sie abgelaufene Anmelde- oder Aktionscodes neu an.

Anfragebeispiele

Ersetzen Sie Demokennungen, Zeitstempel und Platzhalter durch eigene Werte. Behalten Sie bei Wiederholungen Kennungen, Zeit und Inhalt bei. Diese Beispiele führen auf der Seite keine Anfragen aus.

Halten Sie Anmeldelinks, Codes, Cookies und Schlüssel privat. Schreiben Sie sie nicht in Logs und teilen Sie sie nicht in Hilfeanfragen.

shell
curl --silent --show-error --output /dev/null --write-out "%{http_code}\n" \
  --request PUT \
  --header @"$HOME/.config/metribeacon/headers.txt" \
  --header "Content-Type: application/json" \
  --data-binary '{"expected_revision":0,"expected_config_revision":1,"settings":{"enabled":true,"notification_mode":"all_active","notification_destination_ids":[],"escalation_policy_id":null,"delay_seconds":0,"severity":"critical","reminders_enabled":false,"repeat_seconds":1800,"reminder_limit":4,"include_target_url":false,"certificate_enabled":false,"certificate_days":7,"expiry_reminders":true,"certificate_changes":false,"domain_enabled":false,"domain":"","domain_days":14,"warning_notification_mode":"inherit","warning_destination_ids":[]}}' \
  "https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/alerting"
python
import json
from pathlib import Path
from urllib.request import Request, HTTPRedirectHandler, build_opener
from urllib.error import HTTPError

headers = json.loads((Path.home() / ".config/metribeacon/headers.json").read_text())
headers["Content-Type"] = "application/json"
request = Request('https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/alerting', data='{"expected_revision":0,"expected_config_revision":1,"settings":{"enabled":true,"notification_mode":"all_active","notification_destination_ids":[],"escalation_policy_id":null,"delay_seconds":0,"severity":"critical","reminders_enabled":false,"repeat_seconds":1800,"reminder_limit":4,"include_target_url":false,"certificate_enabled":false,"certificate_days":7,"expiry_reminders":true,"certificate_changes":false,"domain_enabled":false,"domain":"","domain_days":14,"warning_notification_mode":"inherit","warning_destination_ids":[]}}'.encode("utf-8"), headers=headers, method='PUT')
class NoRedirect(HTTPRedirectHandler):
    def redirect_request(self, request, fp, code, message, headers, target):
        return None

opener = build_opener(NoRedirect())
try:
    with opener.open(request, timeout=10) as response:
        print(response.status)
except HTTPError as error:
    print(error.code)
    error.close()
javascript
import { readFile } from "node:fs/promises";
import { homedir } from "node:os";
import { join } from "node:path";

const headers = JSON.parse(await readFile(join(homedir(), ".config/metribeacon/headers.json"), "utf8"));
headers["Content-Type"] = "application/json";
const response = await fetch("https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/alerting", {
  method: "PUT", headers, redirect: "manual",
  signal: AbortSignal.timeout(10000), body: "{\"expected_revision\":0,\"expected_config_revision\":1,\"settings\":{\"enabled\":true,\"notification_mode\":\"all_active\",\"notification_destination_ids\":[],\"escalation_policy_id\":null,\"delay_seconds\":0,\"severity\":\"critical\",\"reminders_enabled\":false,\"repeat_seconds\":1800,\"reminder_limit\":4,\"include_target_url\":false,\"certificate_enabled\":false,\"certificate_days\":7,\"expiry_reminders\":true,\"certificate_changes\":false,\"domain_enabled\":false,\"domain\":\"\",\"domain_days\":14,\"warning_notification_mode\":\"inherit\",\"warning_destination_ids\":[]}}",
});
console.log(response.status);
await response.body?.cancel();
go
package main

import (
 "fmt"
 "net/http"
 "time"
 "encoding/json"
 "os"
 "path/filepath"
 "strings"
)

func main() {
 home, err := os.UserHomeDir(); if err != nil { panic("credentials unavailable") }
 raw, err := os.ReadFile(filepath.Join(home, ".config/metribeacon/headers.json")); if err != nil { panic("credentials unavailable") }
 var headers map[string]string
 if json.Unmarshal(raw, &headers) != nil { panic("invalid local headers") }
 request, err := http.NewRequest("PUT", "https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/alerting", strings.NewReader("{\"expected_revision\":0,\"expected_config_revision\":1,\"settings\":{\"enabled\":true,\"notification_mode\":\"all_active\",\"notification_destination_ids\":[],\"escalation_policy_id\":null,\"delay_seconds\":0,\"severity\":\"critical\",\"reminders_enabled\":false,\"repeat_seconds\":1800,\"reminder_limit\":4,\"include_target_url\":false,\"certificate_enabled\":false,\"certificate_days\":7,\"expiry_reminders\":true,\"certificate_changes\":false,\"domain_enabled\":false,\"domain\":\"\",\"domain_days\":14,\"warning_notification_mode\":\"inherit\",\"warning_destination_ids\":[]}}")); if err != nil { panic("request invalid") }
 for name, value := range headers { request.Header.Set(name, value) }
 request.Header.Set("Content-Type", "application/json")
 client := &http.Client{Timeout: 10*time.Second, CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
 response, err := client.Do(request); if err != nil { panic("request failed") }
 defer response.Body.Close()
 fmt.Println(response.StatusCode)
}
  • HTTP-API, OAuth und MCP

    Finden Sie die Nutzer-API-Endpunkte mit Rechten, Feldern, Beispielen und Antwortformaten.

  • GET Monitorbenachrichtigungen lesen

    Lesen Sie die gespeicherten Ausfall-, Ablauf- und Nachrichteneinstellungen.

  • DELETE Einen Monitor endgültig löschen

    Nur der Eigentümer des Arbeitsbereichs darf einen Monitor endgültig löschen. Zuerst eine fünf Minuten gültige, an die Konfiguration gebundene Vorschau anfordern; danach preview_id, confirm_deletion: true und einen Idempotency-Key senden. Unbestätigte alte Archivierungsaufrufe werden abgewiesen. Der Monitor wird sofort gesperrt; ein dauerhafter Auftrag entfernt seine Datenbank-, Archiv- und Cachedaten und bereinigt verknüpfte Anzeigen. Den Auftrag bis zum Abschluss abfragen; pausierte Aufträge zeigen einen technischen Fehler und werden automatisch wiederholt. Tageskontingente und Sicherheitszähler bleiben unverändert. Bereits zugestellte Nachrichten und heruntergeladene Dateien können nicht zurückgeholt werden.

  • GET Eigenen Monitor und Konfiguration lesen

    Eigenen Monitor und Konfiguration lesen.