Die Zugriffs-API¶
Diese Seite richtet sich an alle, die eine eigene Anwendung auf OS aufbauen und wissen wollen, was die angemeldete Person darf, damit die Anwendung nur Schaltflächen und Menüs zeigt, die funktionieren. Sie zeigt, wie Sie eine Anfrage an OS stellen, wie Sie pro Art von Ding lesen, was jemand darf, und was allowed_actions an jedem Ding bedeutet. Was Rollen und Regeln sind, steht unter Rollen und Zugriff.
Eine Anfrage an OS¶
- Adresse. Jede Route über eine Organisation liegt unter
/api/v1/organisations/{id}, mit der ID der Organisation (org_...). - Anmeldung. Jede Anfrage trägt das Zugriffstoken der angemeldeten Person:
Authorization: Bearer <token>. OS entscheidet für diese Person, in dieser Organisation. - Listen kommen seitenweise:
limit(höchstens 200, Standard 50) undcursor. Eine Antwort hatitemsund, wenn es mehr gibt,next_cursor. Eine Liste zeigt nur, was die Person sehen darf, eine Seite kann also weniger Zeilen alslimithaben, währendnext_cursortrotzdem weitergeht. - Versionen. Ein Ding, das Sie als Ganzes ersetzen (eine Gruppe, eine eigene Rolle, ein Attribut, das Regeldokument), trägt
versionund den HeaderETag. Eine Änderung nennt diese Version inIf-Match; hat sich das Ding inzwischen geändert, antwortet OS409. - Fehler sind
application/problem+json:
{"type": "about:blank", "title": "Forbidden", "status": 403,
"detail": "You may grant only what you hold yourself; you do not hold the role org-admin.",
"request_id": "..."}
Ein 422 hat zusätzlich errors, eine Liste mit field, message und type pro Feld.
| Antwort | Bedeutung |
|---|---|
401 |
Kein oder kein gültiges Token. |
403 |
Die Person sieht das Ding, darf diese Aktion aber nicht, eine Vergabe geht weiter als das, was sie hat oder als der Dienst der Organisation, oder die Organisation (oder eine darüber) ist ausgesetzt. |
404 |
Das Ding existiert nicht, oder die Person darf es nicht sehen. OS unterscheidet das nicht. |
409 |
Eine veraltete Version, ein doppelter Name, eine erreichte Grenze, oder der letzte Administrator würde verschwinden. |
422 |
Die Anfrage stimmt nicht: ein unbekannter Name, eine Regel, die die Sprache nicht zulässt, oder ein Feld, das nicht stimmt. |
Was jemand darf, pro Art¶
curl -s "$OS/api/v1/organisations/$ORG/access" -H "Authorization: Bearer $TOKEN"
{"organisation_id": "org_...",
"kinds": [
{"kind": "organisation", "actions": ["see"]},
{"kind": "membership", "actions": ["see", "write"]},
{"kind": "group", "actions": ["see", "write"]},
...
],
"core_kinds": [
{"kind": "model", "actions": ["see", "use"]},
{"kind": "thread", "actions": ["see", "write", "delete"]},
...
]}
kinds nennt jede Art von OS und core_kinds jede Art der KI-Funktionen, immer alle und in der Reihenfolge von AccessKind und CoreAccessKind (unten). Bei jeder Art stehen die Aktionen, die die Person auf mindestens einem Ding dieser Art ausführen darf. Nutzen Sie das, um ein Menü oder eine Schaltfläche „neu“ zu zeigen, bevor Sie ein einziges Ding gelesen haben.
Die Antwort sagt nie „nein“, wo etwas erlaubt ist. Sie kann „ja“ sagen, während jedes Ding, dem die Person begegnet, trotzdem abgelehnt wird, zum Beispiel wenn eine Regel nur für Dinge mit einem Label gilt, das keines trägt. Entscheiden Sie pro Ding mit allowed_actions.
Bei den KI-Funktionen ist das, was die Regeln der Person erlauben. Eine Anfrage dort kann aus einem anderen Grund noch abgelehnt werden; zeigen Sie dann diese Ablehnung.
Was jemand darf, pro Ding¶
Jedes Ding, das OS zurückgibt, trägt allowed_actions: die Aktionen, die die Person auf genau diesem Ding ausführen darf. Zeigen Sie eine Schaltfläche nur, wenn die Aktion darin steht; die Anfrage hinter der Schaltfläche gelingt dann.
| Ding | Was allowed_actions sagt |
|---|---|
| Organisation | see; write für ihre Einstellungen und das Anlegen einer Organisation darunter |
| Mitgliedschaft, Einladung, Gruppe, Rolle, Attribut, Regeldokument, Zeile des Prüfprotokolls | die Aktionen auf dem Ding selbst |
| Rollenzuweisung | die Aktionen auf ihrer Rolle: use bedeutet, dass die Person die Zuweisung zurücknehmen darf |
| Attributwert | die Aktionen auf dem Mitglied oder der Gruppe, die ihn hat: write bedeutet, dass die Person ihn zurücknehmen darf |
Eine Organisation hat noch eine zweite Liste, parent_allowed_actions: was die Person in der Organisation darüber über sie darf. write dort ist aussetzen, fortsetzen und die Labels ersetzen; delete ist löschen. Für die oberste Organisation und für wen die Organisation darüber nicht erreicht, ist diese Liste leer.
Der Dienst einer Organisation hat dieselben zwei Listen: In parent_allowed_actions bedeutet write, dass die Person dort Pläne und Ausnahmen vergeben und entfernen und das Enddatum einer Demo setzen darf.
Pro Art und pro Ding gilt alles innerhalb des Dienstes der Organisation: Was nicht darin ist, steht in keiner der beiden Listen.
Die Namen im Schema¶
Die Arten und Aktionen sind Aufzählungen im OpenAPI-Schema von OS, mit festen Namen, sodass Sie daraus Ihre eigenen Typen erzeugen können:
| Schema | Werte |
|---|---|
AccessKind |
die Arten von OS: organisation, membership, invitation, group, role, rule, attribute, audit_event, placement, domain, sign_in, service, service_plan |
CoreAccessKind |
die Arten der KI-Funktionen, siehe Arten und Aktionen |
AccessAction |
see, use, write, delete |