Berechtigung anlegen
POST /v1/permissions · Berechtigung apis:write
Fügt einer API eine Berechtigung (OAuth-Scope) hinzu, optional mit den Texten, die auf dem Zustimmungsbildschirm angezeigt werden. Unterstützt Idempotency-Key.
Anfrage
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
api_id |
Zeichenkette | ja | Die API (api_…). |
value |
Zeichenkette | ja | Scope-Wert, resource:action (^[a-z0-9_.-]{1,64}:[a-z0-9_.*-]{1,64}$). Eindeutig innerhalb der API und nicht änderbar. Das Präfix idp_ ist reserviert. |
display_name |
Zeichenkette | null | nein | Kurzer Name, der auf dem Zustimmungsbildschirm anstelle des Scope-Werts angezeigt wird. Höchstens 128 Zeichen. |
description |
Zeichenkette | null | nein | Detailzeile unter dem Namen auf dem Zustimmungsbildschirm. Höchstens 1024 Zeichen. |
consent_text_i18n |
Objekt | null | nein | Sprachkennung → Text des Zustimmungsbildschirms, zum Beispiel {"en": "Read your orders"}. Höchstens 30 Sprachen, jeder Text 1–1024 Zeichen, insgesamt 16 KiB. |
sensitivity |
Zeichenkette | nein | normal (Standard) oder sensitive. |
Texte des Zustimmungsbildschirms
Der gehostete Zustimmungsbildschirm zeigt jeden angeforderten Scope so an: der Eintrag consent_text_i18n für die Seitensprache (exakte Kennung, sonst deren Haupt-Subtag), sonst display_name, sonst der Scope-value; description wird als Detailzeile angezeigt. Alle drei sind Klartext. Steuerzeichen (einschließlich Zeilenumbrüchen und Tabulatoren), Zeilen- und Absatztrennzeichen sowie bidirektionale Einbettungs-, Überschreibungs- und Isolationszeichen (U+202A-U+202E, U+2066-U+2069) werden mit 422 abgelehnt. Führende und nachfolgende Leerzeichen werden entfernt; ein Text, der danach leer ist, wird als null gespeichert. HTML wird nicht interpretiert: Der Zustimmungsbildschirm maskiert es.
Antwort
201 Created
{
"id": "perm_01h455vb4pex5vsknk084sn02s",
"api_id": "api_01h455vb4pex5vsknk084sn02q",
"value": "read:orders",
"display_name": "Read orders",
"description": "See your past orders and their status",
"consent_text_i18n": {
"en": "Read your orders",
"tr": "Siparişlerinizi okuyun"
},
"sensitivity": "normal"
}
Fehler
| HTTP | code | Wann |
|---|---|---|
| 400 | unknown_field |
Der Body enthält ein unbekanntes Feld. |
| 403 | insufficient_permissions |
Dem Credential fehlt apis:write. |
| 403 | quota_exceeded |
Die API hat bereits 1.000 Berechtigungen. |
| 404 | not_found |
Es gibt in dieser Umgebung keine solche API. |
| 409 | conflict |
Der Wert existiert bereits für diese API, oder die API ist die System-API. |
| 422 | validation_failed |
Ein Feld fehlt oder ist ungültig, oder ein Text ist kein Klartext (errors[].pointer nennt das Feld, zum Beispiel /consent_text_i18n). |
Beispiel
curl -X POST https://api.eu.keenauth.com/v1/permissions \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1d2c1e-perm-create" \
-d '{"api_id":"api_01h455vb4pex5vsknk084sn02q","value":"read:orders","display_name":"Read orders","consent_text_i18n":{"en":"Read your orders"}}'
Mit der CLI übergeben Sie die Sprachtabelle mit --data:
echo '{"consent_text_i18n":{"en":"Read your orders"}}' | keenauth permissions create \
--api-id api_01h455vb4pex5vsknk084sn02q --value read:orders --display-name "Read orders" --data -