PATCH Arbeitsbereichszuweisungen gemeinsam ändern
/api/v1/members
Verwalten Sie Mitglieder in eigenen oder administrierten Arbeitsbereichen. Nur übermittelte Zuweisungen ändern sich gemeinsam; Revisionen verhindern veraltete Änderungen. Owner und Admins haben vollen Zugriff. Viewer und Editoren können alle oder ausgewählte Gruppen und gesonderte Bereiche erhalten. Ausgewählte Gruppen geben keine anderen Monitore, deren Daten oder gemischte Ergebnisse frei. Neue Zuweisungen beginnen im Mitgliederdialog mit Viewer, allen Gruppen und allen Bereichen. Ein Einladungslink nimmt die enthaltenen Arbeitsbereiche gemeinsam an und benötigt die bestätigte eingeladene E-Mail-Adresse. Änderungen benötigen eine frische aktionsgebundene Bestätigung; Admins verwalten nur fremde Editor- und Viewer-Rechte.
Auf dieser Seite
Zugriff und Rechte
Verwalten Sie Mitglieder in eigenen oder administrierten Arbeitsbereichen. Nur übermittelte Zuweisungen ändern sich gemeinsam; Revisionen verhindern veraltete Änderungen. Owner und Admins haben vollen Zugriff. Viewer und Editoren können alle oder ausgewählte Gruppen und gesonderte Bereiche erhalten. Ausgewählte Gruppen geben keine anderen Monitore, deren Daten oder gemischte Ergebnisse frei. Neue Zuweisungen beginnen im Mitgliederdialog mit Viewer, allen Gruppen und allen Bereichen. Ein Einladungslink nimmt die enthaltenen Arbeitsbereiche gemeinsam an und benötigt die bestätigte eingeladene E-Mail-Adresse. Änderungen benötigen eine frische aktionsgebundene Bestätigung; Admins verwalten nur fremde Editor- und Viewer-Rechte.
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.
Parameter und Header
Keine Pfad-, Query- oder zusätzlichen Anfrageheader-Parameter.
Anfragekörper
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | object; {"additionalProperties":false} | Ja | — |
| $.account_id | string; {"format":"uuid"} | Ja | — |
| $.assignments | array<MemberAssignment> | Ja | — |
| $.assignments[] | MemberAssignment | Ja | — |
| $.assignments[].areas | array<string; {"enum":["logs","incidents","maintenance","slos","reports","keys","usage"]}> | Ja | — |
| $.assignments[].areas[] | string; {"enum":["logs","incidents","maintenance","slos","reports","keys","usage"]} | Ja | — |
| $.assignments[].group_ids | array<string; {"format":"uuid"}>; {"maxItems":100} | Ja | — |
| $.assignments[].group_ids[] | string; {"format":"uuid"} | Ja | — |
| $.assignments[].group_mode | string; {"enum":["all","selected"]} | Ja | — |
| $.assignments[].revision | integer; {"minimum":0} | Ja | — |
| $.assignments[].role | string; {"enum":["admin","editor","viewer","remove"]} | Ja | — |
| $.assignments[].workspace_id | string; {"format":"uuid"} | Ja | — |
| $.confirmation | ActionConfirmation | Ja | — |
| $.confirmation.code | string; {"pattern":"^[0-9]{6}$"} | Ja | — |
| $.confirmation.id | string; {"format":"uuid"} | Ja | UUID dieser Ressource. Bewahren Sie die zurückgegebene Kennung für weitere Operationen auf. |
Antworten
application/json
| Feld | Typ und Grenzen | Erforderlich | Bedeutung |
|---|---|---|---|
| $ | object | Ja | — |
| $.expires_at | string; {"format":"date-time"} | Nein | — |
| $.invitation_url | string; {"format":"uri"} | Nein | — |
| $.status | string | Ja | — |
| $.workspace_id | string; {"format":"uuid"} | Nein | — |
| Stabile Fehlercodes |
|---|
| unauthorized |
| invalid_credential |
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 |
|---|
| forbidden |
| csrf |
| invalid_origin |
| workspace_scope |
| confirmation_required |
| invalid_confirmation |
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 |
|---|
| already_invited |
| version_conflict |
| idempotency_conflict |
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_input |
| invalid_token |
| invalid_reference |
| invalid_action |
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 |
|---|
| member_limit |
| rate_limited |
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 |
| feature_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 PATCH --header @"$HOME/.config/metribeacon/headers.txt" --header 'Content-Type: application/json' --data-binary '{"account_id":"00000000-0000-4000-8000-000000000003","assignments":[{"workspace_id":"00000000-0000-4000-8000-000000000001","role":"viewer","revision":1,"group_mode":"all","group_ids":[],"areas":["logs","incidents","maintenance","slos","reports","keys","usage"]}],"confirmation":{"id":"00000000-0000-4000-8000-000000000002","code":"000000"}}' "https://metribeacon.com/api/v1/members"import json, os, urllib.request
request = urllib.request.Request("https://metribeacon.com/api/v1/members", method="PATCH", headers={"Cookie": os.environ["MB_COOKIE"], "X-CSRF-Token": os.environ["MB_CSRF"], "Content-Type": "application/json"}, data=json.dumps({'account_id': '00000000-0000-4000-8000-000000000003', 'assignments': [{'workspace_id': '00000000-0000-4000-8000-000000000001', 'role': 'viewer', 'revision': 1, 'group_mode': 'all', 'group_ids': [], 'areas': ['logs', 'incidents', 'maintenance', 'slos', 'reports', 'keys', 'usage']}], 'confirmation': {'id': '00000000-0000-4000-8000-000000000002', 'code': '000000'}}).encode())
with urllib.request.urlopen(request, timeout=30) as response:
print(json.load(response))const response = await fetch("https://metribeacon.com/api/v1/members", {method: "PATCH", credentials: "same-origin", headers: {"Content-Type": "application/json", "X-CSRF-Token": csrfToken}, body: JSON.stringify({"account_id":"00000000-0000-4000-8000-000000000003","assignments":[{"workspace_id":"00000000-0000-4000-8000-000000000001","role":"viewer","revision":1,"group_mode":"all","group_ids":[],"areas":["logs","incidents","maintenance","slos","reports","keys","usage"]}],"confirmation":{"id":"00000000-0000-4000-8000-000000000002","code":"000000"}})});
console.log(response.status, await response.json());package main
import ("fmt"; "net/http"; "os"; "time"; "strings")
func main() {
client := &http.Client{Timeout:30*time.Second}
request, err := http.NewRequest("PATCH", "https://metribeacon.com/api/v1/members", strings.NewReader("{\"account_id\":\"00000000-0000-4000-8000-000000000003\",\"assignments\":[{\"areas\":[\"logs\",\"incidents\",\"maintenance\",\"slos\",\"reports\",\"keys\",\"usage\"],\"group_ids\":[],\"group_mode\":\"all\",\"revision\":1,\"role\":\"viewer\",\"workspace_id\":\"00000000-0000-4000-8000-000000000001\"}],\"confirmation\":{\"code\":\"000000\",\"id\":\"00000000-0000-4000-8000-000000000002\"}}"))
if err != nil { panic(err) }
request.Header.Set("Cookie", os.Getenv("MB_COOKIE"))
request.Header.Set("X-CSRF-Token", os.Getenv("MB_CSRF"))
request.Header.Set("Content-Type", "application/json")
response, err := client.Do(request)
if err != nil { panic(err) }; 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.
- GET Verwaltbare Mitglieder, Einladungen und Änderungen anzeigen
Verwalten Sie Mitglieder in eigenen oder administrierten Arbeitsbereichen. Nur übermittelte Zuweisungen ändern sich gemeinsam; Revisionen verhindern veraltete Änderungen. Owner und Admins haben vollen Zugriff. Viewer und Editoren können alle oder ausgewählte Gruppen und gesonderte Bereiche erhalten. Ausgewählte Gruppen geben keine anderen Monitore, deren Daten oder gemischte Ergebnisse frei. Neue Zuweisungen beginnen im Mitgliederdialog mit Viewer, allen Gruppen und allen Bereichen. Ein Einladungslink nimmt die enthaltenen Arbeitsbereiche gemeinsam an und benötigt die bestätigte eingeladene E-Mail-Adresse. Änderungen benötigen eine frische aktionsgebundene Bestätigung; Admins verwalten nur fremde Editor- und Viewer-Rechte.
- POST Gemeinsamen Einladungslink annehmen
Verwalten Sie Mitglieder in eigenen oder administrierten Arbeitsbereichen. Nur übermittelte Zuweisungen ändern sich gemeinsam; Revisionen verhindern veraltete Änderungen. Owner und Admins haben vollen Zugriff. Viewer und Editoren können alle oder ausgewählte Gruppen und gesonderte Bereiche erhalten. Ausgewählte Gruppen geben keine anderen Monitore, deren Daten oder gemischte Ergebnisse frei. Neue Zuweisungen beginnen im Mitgliederdialog mit Viewer, allen Gruppen und allen Bereichen. Ein Einladungslink nimmt die enthaltenen Arbeitsbereiche gemeinsam an und benötigt die bestätigte eingeladene E-Mail-Adresse. Änderungen benötigen eine frische aktionsgebundene Bestätigung; Admins verwalten nur fremde Editor- und Viewer-Rechte.
- POST Mitglied in mehrere Arbeitsbereiche einladen
Verwalten Sie Mitglieder in eigenen oder administrierten Arbeitsbereichen. Nur übermittelte Zuweisungen ändern sich gemeinsam; Revisionen verhindern veraltete Änderungen. Owner und Admins haben vollen Zugriff. Viewer und Editoren können alle oder ausgewählte Gruppen und gesonderte Bereiche erhalten. Ausgewählte Gruppen geben keine anderen Monitore, deren Daten oder gemischte Ergebnisse frei. Neue Zuweisungen beginnen im Mitgliederdialog mit Viewer, allen Gruppen und allen Bereichen. Ein Einladungslink nimmt die enthaltenen Arbeitsbereiche gemeinsam an und benötigt die bestätigte eingeladene E-Mail-Adresse. Änderungen benötigen eine frische aktionsgebundene Bestätigung; Admins verwalten nur fremde Editor- und Viewer-Rechte.