MetriBeacon
Menü
Deutsch

POST Eine Geräte-Verknüpfung mit zehn Minuten Laufzeit starten

/api/v1/agent/device-links

Geheimnisse lokal erzeugen und nur Hashes übertragen. Eine identische Wiederholung mit demselben Client-Token liefert dieselbe Challenge. Es wird kein Konto erstellt.

Auf dieser Seite

Zugriff und Rechte

Geheimnisse lokal erzeugen und nur Hashes übertragen. Eine identische Wiederholung mit demselben Client-Token liefert dieselbe Challenge. Es wird kein Konto erstellt.

deviceLinkClient

Parameter und Header

Keine Pfad-, Query- oder zusätzlichen Anfrageheader-Parameter.

Anfragekörper

FeldTyp und GrenzenErforderlichBedeutung
$DeviceLinkRequestJa—
$.architecturestring; {"enum":["amd64","arm64"]}Ja—
$.key_hashstring; {"pattern":"^[0-9a-f]{64}$"}Ja—
$.key_prefixstring; {"pattern":"^[0-9a-f]{12}$"}Ja—
$.management_hashstring; {"pattern":"^[0-9a-f]{64}$"}Ja—
$.management_prefixstring; {"pattern":"^[0-9a-f]{12}$"}Ja—
$.namestring; {"maxLength":128,"minLength":1}Ja—
$.platformstring; {"enum":["linux","darwin","windows"]}Ja—
$.system_drivestringJa—
$.user_codestring; {"pattern":"^[0-9]{8}$"}Ja—

Antworten

application/json

FeldTyp und GrenzenErforderlichBedeutung
$DeviceLinkChallengeJa—
$.expires_atstring; {"format":"date-time"}Ja—
$.idstring; {"format":"uuid"}Ja—
$.intervalinteger; {"const":3}Ja—
$.user_codestring; {"pattern":"^[0-9]{8}$"}Ja—
$.verification_uristring; {"format":"uri"}Ja—
$.verification_uri_completestring; {"format":"uri"}Ja—
Stabile Fehlercodes
link_conflict
Stabile Fehlercodes
invalid_link

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—

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 --fail-with-body --request POST https://metribeacon.com/api/v1/agent/device-links --header 'Accept: application/json' --header 'Authorization: Bearer mbl_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' --header 'Content-Type: application/json' --data '{"name":"Demo device","platform":"windows","architecture":"arm64","system_drive":"C:/","user_code":"12345678","key_prefix":"aaaaaaaaaaaa","key_hash":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","management_prefix":"cccccccccccc","management_hash":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"}'
python
import urllib.request
headers = {'Accept': 'application/json', 'Authorization': 'Bearer mbl_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'Content-Type': 'application/json'}
request = urllib.request.Request('https://metribeacon.com/api/v1/agent/device-links', headers=headers, method='POST', data='{"name":"Demo device","platform":"windows","architecture":"arm64","system_drive":"C:/","user_code":"12345678","key_prefix":"aaaaaaaaaaaa","key_hash":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","management_prefix":"cccccccccccc","management_hash":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"}'.encode())
with urllib.request.urlopen(request) as response:
    print(response.read().decode())
javascript
const response = await fetch("https://metribeacon.com/api/v1/agent/device-links", {"method": "POST", "headers": {"Accept": "application/json", "Authorization": "Bearer mbl_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "Content-Type": "application/json"}, "body": "{\"name\":\"Demo device\",\"platform\":\"windows\",\"architecture\":\"arm64\",\"system_drive\":\"C:/\",\"user_code\":\"12345678\",\"key_prefix\":\"aaaaaaaaaaaa\",\"key_hash\":\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"management_prefix\":\"cccccccccccc\",\"management_hash\":\"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd\"}"});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
go
package main
import ("fmt"; "io"; "net/http"; "strings")
func main() {
 req, err := http.NewRequest("POST", "https://metribeacon.com/api/v1/agent/device-links", strings.NewReader("{\"name\":\"Demo device\",\"platform\":\"windows\",\"architecture\":\"arm64\",\"system_drive\":\"C:/\",\"user_code\":\"12345678\",\"key_prefix\":\"aaaaaaaaaaaa\",\"key_hash\":\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\"management_prefix\":\"cccccccccccc\",\"management_hash\":\"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd\"}")); if err != nil { panic(err) }
 req.Header.Set("Accept", "application/json")
 req.Header.Set("Authorization", "Bearer mbl_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
 req.Header.Set("Content-Type", "application/json")
 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)
}