POST Verfügbarkeits-SLO erstellen
/api/v1/workspaces/{id}/slos
Arbeitsbereichs-SLOs verwenden die Gesamtverfügbarkeitsreihe von HTTP-, TCP-, UDP-, DNS-, TLS-, Ping-, Dienst-, Domain- und Browsermonitoren. Unbekannte und unbeobachtete Zeit bleiben ausdrücklich sichtbar; erst die untere Verfügbarkeitsgrenze belegt die Zielerfüllung. Je Arbeitsbereich gelten zehn SLOs und drei Berichtpläne. Kalenderberichte bleiben 90 Tage unveränderlich. E-Mail benötigt die ausdrückliche Freigabe des Owners sowie ein bestätigtes Ziel und teilt das vorhandene Zustellkontingent. Abbrechbare Analysejobs teilen vier globale Plätze und einen je Owner; Arbeitsbereichsgrenzen bleiben verbindlich. Wählen Sie tägliche, wöchentliche oder monatliche Berichte und eine Versandzeit (HH:MM) in einer IANA-Zeitzone. Der Bericht umfasst den vorigen lokalen Kalendertag, die vorige Woche von Montag bis Sonntag oder den vorigen Monat. Die Erstellung startet zur gewählten Zeit; die Zustellung kann später erfolgen. Bei der Zeitumstellung wird eine fehlende Uhrzeit auf die nächste gültige Minute verschoben und eine doppelte Uhrzeit nur einmal verwendet. Die manuelle Erstellung verwendet unabhängig von der Versandzeit den letzten abgeschlossenen Zeitraum.
Auf dieser Seite
Zugriff und Rechte
Arbeitsbereichs-SLOs verwenden die Gesamtverfügbarkeitsreihe von HTTP-, TCP-, UDP-, DNS-, TLS-, Ping-, Dienst-, Domain- und Browsermonitoren. Unbekannte und unbeobachtete Zeit bleiben ausdrücklich sichtbar; erst die untere Verfügbarkeitsgrenze belegt die Zielerfüllung. Je Arbeitsbereich gelten zehn SLOs und drei Berichtpläne. Kalenderberichte bleiben 90 Tage unveränderlich. E-Mail benötigt die ausdrückliche Freigabe des Owners sowie ein bestätigtes Ziel und teilt das vorhandene Zustellkontingent. Abbrechbare Analysejobs teilen vier globale Plätze und einen je Owner; Arbeitsbereichsgrenzen bleiben verbindlich. Wählen Sie tägliche, wöchentliche oder monatliche Berichte und eine Versandzeit (HH:MM) in einer IANA-Zeitzone. Der Bericht umfasst den vorigen lokalen Kalendertag, die vorige Woche von Montag bis Sonntag oder den vorigen Monat. Die Erstellung startet zur gewählten Zeit; die Zustellung kann später erfolgen. Bei der Zeitumstellung wird eine fehlende Uhrzeit auf die nächste gültige Minute verschoben und eine doppelte Uhrzeit nur einmal verwendet. Die manuelle Erstellung verwendet unabhängig von der Versandzeit den letzten abgeschlossenen Zeitraum.
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
| Feld | Position | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|---|
| id | Pfad | string; {"format":"uuid"} | Ja | Ressourcen-ID in diesem Arbeitsbereich |
Anfragekörper
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | object | Ja | — |
| $.adjusted | boolean | Nein | — |
| $.burn_alerts | boolean | Nein | — |
| $.enabled | boolean | Ja | — |
| $.expected_revision | integer; {"minimum":0} | Nein | — |
| $.monitor_id | string; {"format":"uuid"} | Ja | — |
| $.name | string; {"maxLength":128,"minLength":1} | Ja | — |
| $.target_percent | number; {"default":99.9} | Nein | — |
| $.window_days | integer; {"default":30,"enum":[7,30,90]} | Nein | — |
Antworten
application/json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | object | Ja | — |
| $.id | string; {"format":"uuid"} | Ja | — |
| $.revision | integer | Nein | — |
| Stabile Fehlercodes |
|---|
| invalid_session |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| csrf |
| forbidden |
| insufficient_scope |
| owner_required |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| not_found |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| idempotency_conflict |
| job_not_active |
| job_not_ready |
| revision_conflict |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| invalid_idempotency_key |
| invalid_report |
| invalid_slo |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| alarm_limit |
| analysis_capacity |
| report_limit |
| slo_limit |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
| Stabile Fehlercodes |
|---|
| unavailable |
application/problem+json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | Problem | Ja | — |
| $.code | string | Ja | Stabiler maschinenlesbarer Fehlercode |
| $.detail | string | Ja | Kurze lokalisierte Erklärung ohne interne Fehlerdaten |
| $.instance | string | Ja | Einmalige relative Kennung /api/v1/requests/{request_id}; keine abrufbare Ressource |
| $.message | string | Ja | Vorübergehend für bestehende Clients gleich detail |
| $.message_key | string | Ja | Stabiler Übersetzungsschlüssel für einen Sprachwechsel der Anzeige ohne neue Anfrage |
| $.message_params | object; {"additionalProperties":true} | Ja | Benannte, sicher ausgegebene Meldungsparameter; kein beliebiges HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | Vom Server erzeugte Diagnosekennung. Enthält kein Logintoken und keine Zugangsdaten. |
| $.status | integer; {"maximum":599,"minimum":400} | Ja | — |
| $.title | string | Ja | Lokalisierte HTTP-Statusbezeichnung |
| $.type | string; {"const":"about:blank"} | Ja | — |
Wiederholungen und asynchrone Aufträge
Speichern Sie einen Idempotency-Key vor dem Senden. Wiederholen Sie ihn nur für dasselbe Ziel und dieselbe Anfrage. Geänderter Inhalt liefert 409. Nutzen Sie den Header nur, wenn der Endpunkt ihn dokumentiert.
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.
curl --silent --show-error --output /dev/null --write-out "%{http_code}\n" --request POST --header @"$HOME/.config/metribeacon/headers.txt" --header "Content-Type: application/json" --data '{"name":"Example SLO","monitor_id":"00000000-0000-4000-8000-000000000001","target_percent":99.9,"window_days":30,"adjusted":false,"burn_alerts":false,"enabled":true,"expected_revision":0}' "https://metribeacon.com/api/v1/workspaces/00000000-0000-4000-8000-000000000001/slos"
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"
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, request, fp, code, message, headers, target): return None
request=Request('https://metribeacon.com/api/v1/workspaces/00000000-0000-4000-8000-000000000001/slos',data=('{"name":"Example SLO","monitor_id":"00000000-0000-4000-8000-000000000001","target_percent":99.9,"window_days":30,"adjusted":false,"burn_alerts":false,"enabled":true,"expected_revision":0}').encode(),headers=headers,method='POST')
try:
with build_opener(NoRedirect()).open(request,timeout=10) as response: print(response.status)
except HTTPError as error:
print(error.code)
error.close()
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/workspaces/00000000-0000-4000-8000-000000000001/slos",{method:"POST",headers,redirect:"manual",signal:AbortSignal.timeout(10000),body:"{\"name\":\"Example SLO\",\"monitor_id\":\"00000000-0000-4000-8000-000000000001\",\"target_percent\":99.9,\"window_days\":30,\"adjusted\":false,\"burn_alerts\":false,\"enabled\":true,\"expected_revision\":0}"});
console.log(response.status);await response.body?.cancel();
package main
import("encoding/json";"fmt";"net/http";"os";"path/filepath";"time";"strings")
func main(){home,e:=os.UserHomeDir();if e!=nil{return};raw,e:=os.ReadFile(filepath.Join(home,".config/metribeacon/headers.json"));if e!=nil{return};var headers map[string]string;if json.Unmarshal(raw,&headers)!=nil{return};req,e:=http.NewRequest("POST","https://metribeacon.com/api/v1/workspaces/00000000-0000-4000-8000-000000000001/slos",strings.NewReader("{\"name\":\"Example SLO\",\"monitor_id\":\"00000000-0000-4000-8000-000000000001\",\"target_percent\":99.9,\"window_days\":30,\"adjusted\":false,\"burn_alerts\":false,\"enabled\":true,\"expected_revision\":0}"));if e!=nil{return};for k,v:=range headers{req.Header.Set(k,v)};req.Header.Set("Content-Type","application/json");client:=&http.Client{Timeout:10*time.Second,CheckRedirect:func(*http.Request,[]*http.Request)error{return http.ErrUseLastResponse}};res,e:=client.Do(req);if e!=nil{return};defer res.Body.Close();fmt.Println(res.StatusCode)}
Verwandte Anleitungen
- HTTP-API, OAuth und MCP
Finden Sie die Nutzer-API-Endpunkte mit Rechten, Feldern, Beispielen und Antwortformaten.
- GET SLOs des Arbeitsbereichs auflisten
Arbeitsbereichs-SLOs verwenden die Gesamtverfügbarkeitsreihe von HTTP-, TCP-, UDP-, DNS-, TLS-, Ping-, Dienst-, Domain- und Browsermonitoren. Unbekannte und unbeobachtete Zeit bleiben ausdrücklich sichtbar; erst die untere Verfügbarkeitsgrenze belegt die Zielerfüllung. Je Arbeitsbereich gelten zehn SLOs und drei Berichtpläne. Kalenderberichte bleiben 90 Tage unveränderlich. E-Mail benötigt die ausdrückliche Freigabe des Owners sowie ein bestätigtes Ziel und teilt das vorhandene Zustellkontingent. Abbrechbare Analysejobs teilen vier globale Plätze und einen je Owner; Arbeitsbereichsgrenzen bleiben verbindlich. Wählen Sie tägliche, wöchentliche oder monatliche Berichte und eine Versandzeit (HH:MM) in einer IANA-Zeitzone. Der Bericht umfasst den vorigen lokalen Kalendertag, die vorige Woche von Montag bis Sonntag oder den vorigen Monat. Die Erstellung startet zur gewählten Zeit; die Zustellung kann später erfolgen. Bei der Zeitumstellung wird eine fehlende Uhrzeit auf die nächste gültige Minute verschoben und eine doppelte Uhrzeit nur einmal verwendet. Die manuelle Erstellung verwendet unabhängig von der Versandzeit den letzten abgeschlossenen Zeitraum.
- GET Berichtpläne auflisten
Arbeitsbereichs-SLOs verwenden die Gesamtverfügbarkeitsreihe von HTTP-, TCP-, UDP-, DNS-, TLS-, Ping-, Dienst-, Domain- und Browsermonitoren. Unbekannte und unbeobachtete Zeit bleiben ausdrücklich sichtbar; erst die untere Verfügbarkeitsgrenze belegt die Zielerfüllung. Je Arbeitsbereich gelten zehn SLOs und drei Berichtpläne. Kalenderberichte bleiben 90 Tage unveränderlich. E-Mail benötigt die ausdrückliche Freigabe des Owners sowie ein bestätigtes Ziel und teilt das vorhandene Zustellkontingent. Abbrechbare Analysejobs teilen vier globale Plätze und einen je Owner; Arbeitsbereichsgrenzen bleiben verbindlich. Wählen Sie tägliche, wöchentliche oder monatliche Berichte und eine Versandzeit (HH:MM) in einer IANA-Zeitzone. Der Bericht umfasst den vorigen lokalen Kalendertag, die vorige Woche von Montag bis Sonntag oder den vorigen Monat. Die Erstellung startet zur gewählten Zeit; die Zustellung kann später erfolgen. Bei der Zeitumstellung wird eine fehlende Uhrzeit auf die nächste gültige Minute verschoben und eine doppelte Uhrzeit nur einmal verwendet. Die manuelle Erstellung verwendet unabhängig von der Versandzeit den letzten abgeschlossenen Zeitraum.
- POST Berichtplan anlegen
Arbeitsbereichs-SLOs verwenden die Gesamtverfügbarkeitsreihe von HTTP-, TCP-, UDP-, DNS-, TLS-, Ping-, Dienst-, Domain- und Browsermonitoren. Unbekannte und unbeobachtete Zeit bleiben ausdrücklich sichtbar; erst die untere Verfügbarkeitsgrenze belegt die Zielerfüllung. Je Arbeitsbereich gelten zehn SLOs und drei Berichtpläne. Kalenderberichte bleiben 90 Tage unveränderlich. E-Mail benötigt die ausdrückliche Freigabe des Owners sowie ein bestätigtes Ziel und teilt das vorhandene Zustellkontingent. Abbrechbare Analysejobs teilen vier globale Plätze und einen je Owner; Arbeitsbereichsgrenzen bleiben verbindlich. Wählen Sie tägliche, wöchentliche oder monatliche Berichte und eine Versandzeit (HH:MM) in einer IANA-Zeitzone. Der Bericht umfasst den vorigen lokalen Kalendertag, die vorige Woche von Montag bis Sonntag oder den vorigen Monat. Die Erstellung startet zur gewählten Zeit; die Zustellung kann später erfolgen. Bei der Zeitumstellung wird eine fehlende Uhrzeit auf die nächste gültige Minute verschoben und eine doppelte Uhrzeit nur einmal verwendet. Die manuelle Erstellung verwendet unabhängig von der Versandzeit den letzten abgeschlossenen Zeitraum.