GET Verfügbarkeit und Fortschritt eines Agentupdates lesen
/api/v1/monitors/{id}/agent-update
Neue native Installationen aktivieren Fernupdates mit einem eigenen Schlüsselrecht. Sobald eine neuere freigegebene Version verfügbar ist, erscheint ein Symbol in der Serverliste. Der Arbeitsbereichsbesitzer bestätigt jedes Update; warten Sie anschließend auf die Bestätigung nach dem Neustart. Konfigurationsschreibrechte sind davon unabhängig. Vorübergehende Belegung liefert 503 mit update_busy und Retry-After: 1. Wiederholen Sie mit derselben operation_id und demselben bestätigten Ziel; die Oberfläche versucht dies bis zu zehn Sekunden. Bereits angenommene Anfragen liefern denselben Auftrag zurück. Die opake target_id bindet freigegebenes Release und Ausgangsinstallation/-version; bei Änderungen erneut laden und bestätigen.
Auf dieser Seite
Zugriff und Rechte
Neue native Installationen aktivieren Fernupdates mit einem eigenen Schlüsselrecht. Sobald eine neuere freigegebene Version verfügbar ist, erscheint ein Symbol in der Serverliste. Der Arbeitsbereichsbesitzer bestätigt jedes Update; warten Sie anschließend auf die Bestätigung nach dem Neustart. Konfigurationsschreibrechte sind davon unabhängig. Vorübergehende Belegung liefert 503 mit update_busy und Retry-After: 1. Wiederholen Sie mit derselben operation_id und demselben bestätigten Ziel; die Oberfläche versucht dies bis zu zehn Sekunden. Bereits angenommene Anfragen liefern denselben Auftrag zurück. Die opake target_id bindet freigegebenes Release und Ausgangsinstallation/-version; bei Änderungen erneut laden und bestätigen.
Browsersitzung: Cookie __Host-mb_session.
Parameter und Header
| Feld | Position | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|---|
| id | Pfad | string; {"format":"uuid"} | Ja | Verfügbarkeit und Fortschritt eines Agentupdates lesen |
Anfragekörper
Kein Anfragekörper.
Antworten
| Stabile Fehlercodes |
|---|
| unauthorized |
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 |
| insufficient_scope |
| invalid_origin |
| owner_required |
| forbidden |
| agent_config_write_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 |
|---|
| stale |
| not_available |
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 |
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 |
|---|
| quota_exceeded |
| rate_limited |
| Header | Typ und Grenzen | Bedeutung |
|---|---|---|
| Retry-After | string; {"pattern":"^[0-9]+$"} | Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. |
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 |
| Header | Typ und Grenzen | Bedeutung |
|---|---|---|
| Retry-After | string; {"pattern":"^[0-9]+$"} | Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. |
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 | — |
application/json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | AgentUpdateInfo | Ja | — |
| $.operating_system | string | Ja | — |
| $.installed_version | string | Ja | — |
| $.latest_version | string | Ja | — |
| $.state | string; {"enum":["unknown","current","update_available"]} | Ja | — |
| $.reason | string | Ja | — |
| $.can_update | boolean | Ja | — |
| $.target_id | string | Ja | — |
| $.job | AgentUpdateJob | Nein | — |
| $.job.id | string; {"format":"uuid"} | Ja | — |
| $.job.installation_id | string; {"pattern":"^[0-9a-f]{32}$"} | Ja | — |
| $.job.state | string; {"enum":["pending","running","succeeded","failed","expired","unconfirmed"]} | Ja | — |
| $.job.phase | string; {"enum":["downloading","installing","restarting","completed"]} | Ja | — |
| $.job.target | AgentUpdateTarget | Ja | — |
| $.job.target.commit | string; {"pattern":"^[0-9a-f]{40}$"} | Ja | — |
| $.job.target.version | string | Ja | — |
| $.job.target.created_at | string; {"format":"date-time"} | Ja | — |
| $.job.target.file | object; {"additionalProperties":false} | Ja | — |
| $.job.target.file.name | string | Ja | — |
| $.job.target.file.platform | string; {"enum":["linux","darwin","windows"]} | Ja | — |
| $.job.target.file.architecture | string; {"enum":["amd64","arm64"]} | Ja | — |
| $.job.target.file.kind | string; {"const":"binary"} | Ja | — |
| $.job.target.file.sha256 | string; {"pattern":"^[0-9a-f]{64}$"} | Ja | — |
| $.job.target.file.size | integer; {"minimum":1,"maximum":268435456} | Ja | — |
| $.job.requested_at | string; {"format":"date-time"} | Ja | — |
| $.job.updated_at | string; {"format":"date-time"} | Ja | — |
| $.job.claimed_at | string; {"format":"date-time"} | null | Ja | — |
| $.job.claimed_at (anyOf 1) | string; {"format":"date-time"} | Nein | — |
| $.job.claimed_at (anyOf 2) | null | Nein | — |
| $.job.finished_at | string; {"format":"date-time"} | null | Ja | — |
| $.job.finished_at (anyOf 1) | string; {"format":"date-time"} | Nein | — |
| $.job.finished_at (anyOf 2) | null | Nein | — |
| $.job.error_code | string | Ja | — |
| $.job.monitor_id | string; {"format":"uuid"} | Ja | — |
| $.job.operation_id | string; {"format":"uuid"} | Ja | — |
| $.job.source_version | string; {"maxLength":128} | Ja | — |
| $.job.source_sha256 | string; {"pattern":"^[0-9a-f]{64}$"} | Ja | — |
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.
curl --silent --show-error --output /dev/null --write-out "%{http_code}\\n" \\
--request GET \\
--header @"$HOME/.config/metribeacon/headers.txt" \\
"https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/agent-update"
import json
from pathlib import Path
from urllib.request import Request, build_opener, HTTPRedirectHandler
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/agent-update', method='GET', headers=headers)
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, request, fp, code, message, headers, target):
return None
with build_opener(NoRedirect()).open(request, timeout=10) as response:
print(response.status)
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/agent-update", { method: "GET", headers, redirect: "manual", signal: AbortSignal.timeout(10000) });
console.log(response.status);
await response.body?.cancel();
package main
import ("bytes"; "encoding/json"; "fmt"; "net/http"; "os"; "path/filepath"; "time")
func main() {
home, err := os.UserHomeDir(); if err != nil { panic("home directory unavailable") }
raw, err := os.ReadFile(filepath.Join(home, ".config/metribeacon/headers.json")); if err != nil { panic("private headers unavailable") }
headers := map[string]string{}; if json.Unmarshal(raw, &headers) != nil { panic("invalid private headers") }
request, err := http.NewRequest("GET", "https://metribeacon.com/api/v1/monitors/00000000-0000-4000-8000-000000000001/agent-update", bytes.NewBufferString("")); if err != nil { panic("request unavailable") }
for key,value := range headers { request.Header.Set(key,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; credentials and response omitted") }; defer response.Body.Close(); fmt.Println(response.StatusCode)
}
Verwandte Anleitungen
- HTTP-API, OAuth und MCP
Finden Sie die Nutzer-API-Endpunkte mit Rechten, Feldern, Beispielen und Antwortformaten.
- POST Agentupdate bestätigen
Neue native Installationen aktivieren Fernupdates mit einem eigenen Schlüsselrecht. Sobald eine neuere freigegebene Version verfügbar ist, erscheint ein Symbol in der Serverliste. Der Arbeitsbereichsbesitzer bestätigt jedes Update; warten Sie anschließend auf die Bestätigung nach dem Neustart. Konfigurationsschreibrechte sind davon unabhängig. Vorübergehende Belegung liefert 503 mit update_busy und Retry-After: 1. Wiederholen Sie mit derselben operation_id und demselben bestätigten Ziel; die Oberfläche versucht dies bis zu zehn Sekunden. Bereits angenommene Anfragen liefern denselben Auftrag zurück. Die opake target_id bindet freigegebenes Release und Ausgangsinstallation/-version; bei Änderungen erneut laden und bestätigen.
- 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.