POST Gerät und separate CLI-/MCP-Verwaltungskennung freigeben
/api/v1/agent/device-link
CSRF erforderlich. Eigenen Arbeitsbereich auswählen oder anlegen; unkonfigurierten Server auswählen oder anlegen. Standard sind CPU, RAM und Systemlaufwerk alle 30 Sekunden. Kontokontingente werden in derselben Transaktion geprüft. Wiederholungen desselben Kontos erzeugen keine weiteren Schlüssel; ein anderes Konto kann abgeschlossene Anfragen nicht freigeben.
Auf dieser Seite
Zugriff und Rechte
CSRF erforderlich. Eigenen Arbeitsbereich auswählen oder anlegen; unkonfigurierten Server auswählen oder anlegen. Standard sind CPU, RAM und Systemlaufwerk alle 30 Sekunden. Kontokontingente werden in derselben Transaktion geprüft. Wiederholungen desselben Kontos erzeugen keine weiteren Schlüssel; ein anderes Konto kann abgeschlossene Anfragen nicht freigeben.
Browsersitzung: Cookie __Host-mb_session.
Parameter und Header
Keine Pfad-, Query- oder zusätzlichen Anfrageheader-Parameter.
Anfragekörper
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | DeviceLinkApproval | Ja | — |
| $.code | string; {"pattern":"^[0-9]{8}$"} | Ja | — |
| $.device_id | string; {"format":"uuid"} | Nein | — |
| $.name | string; {"maxLength":128,"minLength":1} | Ja | — |
| $.selections | array<AgentSelection>; {"maxItems":200} | Nein | — |
| $.selections[] | AgentSelection | Ja | — |
| $.selections[].component_id | string | Ja | — |
| $.selections[].interval_seconds | integer; {"maximum":86400,"minimum":1} | Ja | — |
| $.selections[].parameter_key | string | Ja | — |
| $.workspace_id | string; {"format":"uuid"} | Nein | — |
| $.workspace_name | string; {"maxLength":128,"minLength":1} | Nein | — |
| $.server_profile | ServerProfileRequest | Nein | — |
| $.server_profile.components | array<object>; {"maxItems":200} | null | Nein | Erkannte oder ausdrücklich ausgewählte Serverkomponenten. |
| $.server_profile.components (anyOf 1) | array<object>; {"maxItems":200} | Nein | — |
| $.server_profile.components (anyOf 1)[] | object | Ja | — |
| $.server_profile.components (anyOf 1)[].address | string | Nein | — |
| $.server_profile.components (anyOf 1)[].family | string | Nein | — |
| $.server_profile.components (anyOf 1)[].id | string | Ja | UUID dieser Ressource. Bewahren Sie die zurückgegebene Kennung für weitere Operationen auf. |
| $.server_profile.components (anyOf 1)[].kind | string | Ja | Ressourcenart oder Messwerttyp aus den angegebenen Werten. |
| $.server_profile.components (anyOf 1)[].label | string; {"maxLength":128,"minLength":1} | Ja | Anzeigename der Komponente. |
| $.server_profile.components (anyOf 1)[].local_ref | string | Nein | — |
| $.server_profile.components (anyOf 1)[].name | string | Nein | Lesbarer Ressourcenname. Beachten Sie die angegebene Längengrenze. |
| $.server_profile.components (anyOf 1)[].path | string; {"maxLength":1024} | Nein | — |
| $.server_profile.components (anyOf 1)[].port | integer | Nein | — |
| $.server_profile.components (anyOf 1)[].project | string | Nein | — |
| $.server_profile.components (anyOf 1)[].protocol | string | Nein | — |
| $.server_profile.components (anyOf 1)[].text_languages | object | Nein | — |
| $.server_profile.components (anyOf 1)[].timeout_seconds | integer | Nein | — |
| $.server_profile.components (anyOf 1)[].translations | object; {"additionalProperties":false} | Nein | — |
| $.server_profile.components (anyOf 1)[].translations.de | object | Nein | — |
| $.server_profile.components (anyOf 1)[].translations.en | object | Nein | — |
| $.server_profile.components (anyOf 1)[].transport | string | Nein | — |
| $.server_profile.components (anyOf 1)[].filesystem_identity | string; {"maxLength":256} | Nein | Vom Agenten gemeldete Volumeidentität. Unverändert beibehalten, damit ein Ersatzvolume nicht die Historie eines anderen Volumes fortsetzt. |
| $.server_profile.components (anyOf 1)[].disk_identity | string; {"maxLength":256} | Nein | — |
| $.server_profile.components (anyOf 2) | null | Nein | — |
| $.server_profile.selections | array<object>; {"maxItems":200} | null | Nein | Gewählte Komponenten-/Parameterpaare mit Abtastintervallen. |
| $.server_profile.selections (anyOf 1) | array<object>; {"maxItems":200} | Nein | — |
| $.server_profile.selections (anyOf 1)[] | object | Ja | — |
| $.server_profile.selections (anyOf 1)[].component_id | string | Ja | Stabile Kennung der gewählten oder erkannten Komponente. |
| $.server_profile.selections (anyOf 1)[].interval_seconds | integer; {"maximum":86400,"minimum":0} | Nein | Abtast- oder Prüfintervall in Sekunden innerhalb der angegebenen Grenzen. |
| $.server_profile.selections (anyOf 1)[].parameter_key | string | Ja | Stabile Parameterkennung aus dem Serverkatalog. |
| $.server_profile.selections (anyOf 2) | null | Nein | — |
| $.server_profile.version | JSON; {"const":2} | Ja | — |
| $.server_profile.overview | object; {"additionalProperties":false} | Nein | Ausdrückliche Ziele für die Serverübersicht mit sechs Diagrammen; wählen Sie alle benötigten Messwerte aus. |
| $.server_profile.overview.system_id | string; {"maxLength":128} | Ja | — |
| $.server_profile.overview.filesystem_id | string; {"maxLength":128} | Ja | — |
| $.server_profile.overview.disk_id | string; {"maxLength":128} | Ja | — |
| $.server_profile.overview.network_id | string; {"maxLength":128} | Ja | — |
| $.server_profile.filesystem_discovery | object; {"additionalProperties":false} | Nein | Optionale Erkennung lokaler Dateisysteme mit einem Grundintervall von mindestens 10 Sekunden. Neue Server/NAS-Einrichtungen aktivieren sie. Bestehende Profile benötigen eine ausdrückliche Aktivierung. Manuell deaktivierte Messreihen bleiben erhalten. |
| $.server_profile.filesystem_discovery.mode | string; {"enum":["off","local"]} | Ja | — |
| $.server_profile.filesystem_discovery.interval_seconds | integer; {"minimum":10,"maximum":86400} | Ja | — |
| $.server_profile.system_discovery | object; {"additionalProperties":false} | Nein | — |
| $.server_profile.system_discovery.mode | string; {"enum":["off","local"]} | Ja | — |
| $.server_profile.system_discovery.interval_seconds | integer; {"minimum":10,"maximum":86400} | Ja | — |
| $.server_profile.global_interval_seconds | integer; {"minimum":1,"maximum":86400} | Nein | Ausdrückliche globale Intervallauswahl. Jede Quelle behält ihr Plattformminimum; einzelne schnelle Reihen gelten nicht als globale Auswahl. |
Antworten
application/json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | object; {"additionalProperties":false} | Ja | — |
| $.approved | boolean | Ja | — |
| $.replayed | boolean | Ja | — |
| Stabile Fehlercodes |
|---|
| invalid_link |
| not_found |
| Stabile Fehlercodes |
|---|
| revision_conflict |
| Stabile Fehlercodes |
|---|
| invalid_link |
| invalid_profile |
| unsupported_parameter |
| Stabile Fehlercodes |
|---|
| creation_quota |
| 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
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 --fail-with-body --request POST https://metribeacon.com/api/v1/agent/device-link --header 'Accept: application/json' --header 'Cookie: __Host-mb_session=YOUR_SESSION; __Host-mb_csrf=YOUR_CSRF' --header 'Content-Type: application/json' --header 'Origin: https://metribeacon.com' --header 'X-CSRF-Token: YOUR_CSRF' --data '{"code":"12345678","name":"Demo device"}'import urllib.request
headers = {'Accept': 'application/json', 'Cookie': '__Host-mb_session=YOUR_SESSION; __Host-mb_csrf=YOUR_CSRF', 'Content-Type': 'application/json', 'Origin': 'https://metribeacon.com', 'X-CSRF-Token': 'YOUR_CSRF'}
request = urllib.request.Request('https://metribeacon.com/api/v1/agent/device-link', headers=headers, method='POST', data='{"code":"12345678","name":"Demo device"}'.encode())
with urllib.request.urlopen(request) as response:
print(response.read().decode())
const response = await fetch("https://metribeacon.com/api/v1/agent/device-link", {"method": "POST", "headers": {"Accept": "application/json", "Cookie": "__Host-mb_session=YOUR_SESSION; __Host-mb_csrf=YOUR_CSRF", "Content-Type": "application/json", "Origin": "https://metribeacon.com", "X-CSRF-Token": "YOUR_CSRF"}, "body": "{\"code\":\"12345678\",\"name\":\"Demo device\"}"});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
package main
import ("fmt"; "io"; "net/http"; "strings")
func main() {
req, err := http.NewRequest("POST", "https://metribeacon.com/api/v1/agent/device-link", strings.NewReader("{\"code\":\"12345678\",\"name\":\"Demo device\"}")); if err != nil { panic(err) }
req.Header.Set("Accept", "application/json")
req.Header.Set("Cookie", "__Host-mb_session=YOUR_SESSION; __Host-mb_csrf=YOUR_CSRF")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Origin", "https://metribeacon.com")
req.Header.Set("X-CSRF-Token", "YOUR_CSRF")
response, err := http.DefaultClient.Do(req); if err != nil { panic(err) }; defer response.Body.Close(); data, err := io.ReadAll(response.Body); if err != nil { panic(err) }; fmt.Printf("HTTP %d\n%s\n", response.StatusCode, data)
}
Verwandte Anleitungen
- HTTP-API, OAuth und MCP
Finden Sie die Nutzer-API-Endpunkte mit Rechten, Feldern, Beispielen und Antwortformaten.
- GET Einen kurzen Bestätigungscode als angemeldeter Nutzer prüfen
Einen kurzen Bestätigungscode als angemeldeter Nutzer prüfen
- POST Ausstehende Geräte-Verknüpfung ablehnen
Ausstehende Geräte-Verknüpfung ablehnen
- GET Angenommenen Heartbeat und aktivierten Messwert bestätigen
Bestätigen Sie das ausgewählte Agent-Profil anhand gespeicherter Daten: ein Lebenszeichen sowie ein Zahlen- oder Zustandswert einer aktivierten Profilreihe, empfangen seit dem angegebenen Zeitpunkt. Installer- und Prozessstatus bestätigen keine Betriebsbereitschaft.