MetriBeacon
Menü
Deutsch

POST Fortschritt eines nativen Updates melden

/api/v1/agent/updates/{id}/report

Fortschritt eines nativen Updates melden

Auf dieser Seite

Zugriff und Rechte

Fortschritt eines nativen Updates melden

API-Schreibschlüssel in Authorization: Bearer. Er erlaubt Datenübertragungen für die ausgewählten Geräte oder alle Geräte seines Arbeitsbereichs.

Parameter und Header

FeldPositionTyp und GrenzenErforderlichBedeutung
idPfadstring; {"format":"uuid"}JaFortschritt eines nativen Updates melden

Anfragekörper

FeldTyp und GrenzenErforderlichBedeutung
$AgentUpdateReportJa—
$.installation_idstring; {"pattern":"^[0-9a-f]{32}$"}Ja—
$.lease_tokenstring; {"pattern":"^[0-9a-f]{64}$"}Ja—
$.phasestring; {"enum":["downloading","installing","restarting","completed"]}Ja—
$.statestring; {"enum":["running","restart_confirmed","failed"]}Ja—
$.error_codestring; {"enum":["","download_failed","verification_failed","install_failed","rolled_back","rollback_failed","disabled","expired"]}Nein—
$.running_sha256string; {"pattern":"^[0-9a-f]{64}$"}Nein—

Antworten

Stabile Fehlercodes
unauthorized

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—
Stabile Fehlercodes
csrf
insufficient_scope
invalid_origin
owner_required
forbidden
agent_config_write_required

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—
Stabile Fehlercodes
not_found

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—
Stabile Fehlercodes
stale
not_available

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—
Stabile Fehlercodes
invalid

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—
Stabile Fehlercodes
quota_exceeded
rate_limited
HeaderTyp und GrenzenBedeutung
Retry-Afterstring; {"pattern":"^[0-9]+$"}Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation.

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—
Stabile Fehlercodes
unavailable
update_busy
HeaderTyp und GrenzenBedeutung
Retry-Afterstring; {"pattern":"^[0-9]+$"}Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation.

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—

application/json

FeldTyp und GrenzenErforderlichBedeutung
$object; {"additionalProperties":false}Ja—
$.acceptedbooleanJa—

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 POST \\
  --header @"$HOME/.config/metribeacon/headers.txt" \\
  --header 'Content-Type: application/json' \\
  --data-binary '{"installation_id":"00000000000000000000000000000000","lease_token":"0000000000000000000000000000000000000000000000000000000000000000","state":"running","phase":"downloading"}' \\
  "https://metribeacon.com/api/v1/agent/updates/00000000-0000-4000-8000-000000000001/report"
python
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/agent/updates/00000000-0000-4000-8000-000000000001/report', method='POST', data='{"installation_id":"00000000000000000000000000000000","lease_token":"0000000000000000000000000000000000000000000000000000000000000000","state":"running","phase":"downloading"}'.encode(), 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)
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/agent/updates/00000000-0000-4000-8000-000000000001/report", { method: "POST", headers, redirect: "manual", signal: AbortSignal.timeout(10000), body: "{\"installation_id\":\"00000000000000000000000000000000\",\"lease_token\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"state\":\"running\",\"phase\":\"downloading\"}" });
console.log(response.status);
await response.body?.cancel();
go
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("POST", "https://metribeacon.com/api/v1/agent/updates/00000000-0000-4000-8000-000000000001/report", bytes.NewBufferString("{\"installation_id\":\"00000000000000000000000000000000\",\"lease_token\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"state\":\"running\",\"phase\":\"downloading\"}")); 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)
}
  • HTTP-API, OAuth und MCP

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

  • POST Update für die gebundene native Installation übernehmen

    Update für die gebundene native Installation übernehmen

  • GET Gebundene Agentkonfiguration lesen

    Lesen Sie die aktuelle Konfiguration und ihre Übernahme durch den Agenten. Prüfintervall und Wiederholungsversand unveränderter Zustände bleiben getrennt. Eigene Definitionen enthalten nur deklarierte Feldtypen und Quellenkennungen, niemals Befehle oder Zugangsdaten.

  • PATCH Lokale Änderungen synchronisieren

    Verwendet stabile Quellenkennungen. Geänderte Felder werden in der Reihenfolge der Serverannahme übernommen; andere Felder und Messhistorien bleiben erhalten. Wiederholen Sie nach einer verlorenen Antwort dieselbe operation_id und denselben Inhalt. Namen, Beschreibungen, Aktivierungen und Prüfintervalle werden synchronisiert. Programme und Argumente bleiben in der lokal freigegebenen Richtlinie.