Dokumentation / API · Einrichtung / Einmaligen Einrichtungsschlüssel erstellen oder ausdrücklich rotieren POST Einmaligen Einrichtungsschlüssel erstellen oder ausdrücklich rotieren/api/v1/onboarding/key/rotate
Das Geheimnis erscheint einmalig; Antworten sind no-store. Bei Verlust ist ausdrücklich rotate erforderlich. Die Rotation widerruft den vorherigen Schlüssel atomar.
Auf dieser Seite Zugriff und Rechte Parameter und Header Anfragekörper Antworten Wiederholungen und asynchrone Aufträge Anfragebeispiele Verwandte Anleitungen Das Geheimnis erscheint einmalig; Antworten sind no-store. Bei Verlust ist ausdrücklich rotate erforderlich. Die Rotation widerruft den vorherigen Schlüssel atomar.
Browsersitzung: Cookie __Host-mb_session.
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.
Feld Position Typ und Grenzen Erforderlich Bedeutung Origin Header string; {"format":"uri"} Nein Muss, falls vorhanden, dem kanonischen HTTPS-Origin entsprechen. Sec-Fetch-Site cross-site wird abgewiesen. X-CSRF-Token Header string Ja Wert des Browser-CSRF-Cookies. Bei einem zulässigen Maschinen-Verwaltungszugang nicht erforderlich.
201 · Erfolgreiche Antwort. Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
application/json
Feld Typ und Grenzen Erforderlich Bedeutung $ object Ja — $.id string Ja UUID dieser Ressource. Bewahren Sie die zurückgegebene Kennung für weitere Operationen auf. $.key string Ja — $.rotated boolean Ja —
json Beispiel kopieren
{
"id" : "demo" ,
"key" : "demo" ,
"rotated" : false
} 401 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes invalid_credential unauthorized
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 401,
"title" : "Demo error" ,
"type" : "about:blank"
} 403 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes csrf insufficient_scope invalid_origin
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 403,
"title" : "Demo error" ,
"type" : "about:blank"
} 404 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes not_found
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 404,
"title" : "Demo error" ,
"type" : "about:blank"
} 409 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes key_once
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 409,
"title" : "Demo error" ,
"type" : "about:blank"
} 429 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes key_limit
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Retry-After string; {"pattern":"^[0-9]+$"} Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 429,
"title" : "Demo error" ,
"type" : "about:blank"
} 503 · Anfrage abgewiesen. Prüfen Sie den stabilen Fehlercode. Stabile Fehlercodes unavailable
Header Typ und Grenzen Bedeutung Cache-Control string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} Private API-Antworten verbieten Speicherung. Öffentliche OAuth-Metadaten werden 300 Sekunden gecacht; Livestreams verbieten zusätzlich Transformation. Content-Language string; {"enum":["en","de"]} Sprache lesbarer Antworttexte aus Accept-Language oder der dokumentierten Browserpräferenz. Technische Codes und Kennungen bleiben stabil. Referrer-Policy JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} Standard-Referrerpolicy ist strict-origin-when-cross-origin. Anbieterloginantworten verwenden no-referrer zum Schutz der Loginparameter. Retry-After string; {"pattern":"^[0-9]+$"} Sekunden bis zur Wiederholung. Bewahren Sie unterstützte Idempotenzkennungen und beachten Sie die Änderungsregeln der Operation. Vary string Antworten variieren nach Accept-Language; browsergerenderte Antworten können zusätzlich nach Präferenzcookie variieren. X-Content-Type-Options JSON; {"const":"nosniff"} Der Browser muss den angegebenen Inhaltstyp verwenden. X-Frame-Options JSON; {"const":"DENY"} Die Antwort darf nicht in einem Frame eingebettet werden. X-Request-ID string Vom Server erzeugte Anfragekennung. Bei Fehlermeldungen mitgeben; eingehende Werte werden nicht als vertrauenswürdig übernommen.
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 —
json Beispiel kopieren
{
"code" : "demo" ,
"detail" : "Demo error detail; inspect the documented code." ,
"instance" : "demo" ,
"message" : "Demo error detail; inspect the documented code." ,
"message_key" : "errors.requestFailed" ,
"message_params" : {},
"request_id" : "00000000000000000000000000000000" ,
"status" : 503,
"title" : "Demo error" ,
"type" : "about:blank"
} Behalten Sie die dokumentierten Kennungen bei Wiederholungen. Ersetzen Sie sie nach einer unklaren Antwort nicht durch neue Kennungen, die eine weitere Ressource oder Messung erzeugen könnten.
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 Beispiel kopieren
curl --silent --show-error --output /dev/ null --write-out "%{http_code}\n" \
--request POST \
--header @ "$HOME/.config/metribeacon/headers.txt" \
"https://metribeacon.com/api/v1/onboarding/key/rotate"
python Beispiel kopieren
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())
request = Request( "https://metribeacon.com/api/v1/onboarding/key/rotate" , data= None , headers=headers, method= "POST" )
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, request, fp, code, message, headers, target):
return None
opener = build_opener(NoRedirect())
try:
with opener.open(request, timeout=10) as response:
print(response.status)
except HTTPError as error:
print(error.code)
error.close()
javascript Beispiel kopieren
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" ));
const response = await fetch( "https://metribeacon.com/api/v1/onboarding/key/rotate" , {
method: "POST" , headers, redirect: "manual" ,
signal: AbortSignal.timeout(10000),
});
console.log(response.status);
await response.body?.cancel();
go Beispiel kopieren
package main
import (
"fmt"
"net/http"
"time"
"encoding/json"
"os"
"path/filepath"
)
func main() {
home, err := os.UserHomeDir(); if err != nil { panic( "request failed; credentials and response omitted" ) }
raw, err := os.ReadFile(filepath.Join(home, ".config/metribeacon/headers.json" )); if err != nil { panic( "request failed; credentials and response omitted" ) }
var headers map[string]string
if json.Unmarshal(raw, &headers) != nil { panic( "invalid local headers" ) }
request, err := http.NewRequest( "POST" , "https://metribeacon.com/api/v1/onboarding/key/rotate" , nil)
if err != nil { panic( "request failed; credentials and response omitted" ) }
for name, value := range headers { request.Header.Set(name, value) }
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)
}