Créer une autorisation

POST /v1/permissions · autorisation apis:write

Ajoute une autorisation (scope OAuth) à une API, éventuellement avec les textes affichés sur l'écran de consentement. Prend en charge Idempotency-Key.

Demande

Champ Type Obligatoire Description
api_id chaîne oui L'API (api_…).
value chaîne oui Valeur du scope, resource:action (^[a-z0-9_.-]{1,64}:[a-z0-9_.*-]{1,64}$). Unique au sein de l'API et non modifiable. Le préfixe idp_ est réservé.
display_name chaîne | null non Nom court affiché sur l'écran de consentement à la place de la valeur du scope. 128 caractères au maximum.
description chaîne | null non Ligne de détail affichée sous le nom sur l'écran de consentement. 1024 caractères au maximum.
consent_text_i18n objet | null non Balise de langue → texte de l'écran de consentement, par exemple {"en": "Read your orders"}. 30 langues au maximum, chaque texte de 1 à 1024 caractères, 16 Kio au total.
sensitivity chaîne non normal (par défaut) ou sensitive.

Textes de l'écran de consentement

L'écran de consentement hébergé affiche chaque scope demandé comme suit : l'entrée consent_text_i18n pour la langue de la page (balise exacte, sinon sa sous-balise principale), sinon display_name, sinon la value du scope ; description est affichée comme ligne de détail. Les trois sont du texte brut. Les caractères de contrôle (y compris les sauts de ligne et les tabulations), les séparateurs de ligne et de paragraphe, et les caractères de sens bidirectionnel d'imbrication, de substitution et d'isolation (U+202A-U+202E, U+2066-U+2069) sont rejetés avec 422. Les espaces en début et en fin sont supprimés, et un texte vide après suppression est enregistré comme null. Le HTML n'est pas interprété : l'écran de consentement l'échappe.

Réponse

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"
}

Erreurs

HTTP code Quand
400 unknown_field Le corps contient un champ inconnu.
403 insufficient_permissions L'identifiant ne dispose pas de apis:write.
403 quota_exceeded L'API possède déjà 1 000 autorisations.
404 not_found Cette API n'existe pas dans cet environnement.
409 conflict La valeur existe déjà sur cette API, ou l'API est l'API système.
422 validation_failed Un champ est absent ou invalide, ou un texte n'est pas du texte brut (errors[].pointer indique le champ, par exemple /consent_text_i18n).

Exemple

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"}}'

Avec la CLI, transmettez la table des langues avec --data :

echo '{"consent_text_i18n":{"en":"Read your orders"}}' | keenauth permissions create \
  --api-id api_01h455vb4pex5vsknk084sn02q --value read:orders --display-name "Read orders" --data -