Creare un permesso

POST /v1/permissions · permesso apis:write

Aggiunge un permesso (scope OAuth) a un'API, facoltativamente con i testi mostrati nella schermata di consenso. Supporta Idempotency-Key.

Richiesta

Campo Tipo Obbligatorio Descrizione
api_id stringa sì L'API (api_…).
value stringa sì Valore dello scope, resource:action (^[a-z0-9_.-]{1,64}:[a-z0-9_.*-]{1,64}$). Unico all'interno dell'API e non modificabile. Il prefisso idp_ è riservato.
display_name stringa | null no Nome breve mostrato nella schermata di consenso al posto del valore dello scope. Al massimo 128 caratteri.
description stringa | null no Riga di dettaglio mostrata sotto il nome nella schermata di consenso. Al massimo 1024 caratteri.
consent_text_i18n oggetto | null no Tag di lingua → testo della schermata di consenso, per esempio {"en": "Read your orders"}. Al massimo 30 lingue, ogni testo di 1–1024 caratteri, 16 KiB in totale.
sensitivity stringa no normal (predefinito) o sensitive.

Testi della schermata di consenso

La schermata di consenso ospitata mostra ogni scope richiesto così: la voce di consent_text_i18n per la lingua della pagina (tag esatto, altrimenti il suo sottotag principale), altrimenti display_name, altrimenti il value dello scope; description viene mostrata come riga di dettaglio. Tutti e tre sono testo semplice. I caratteri di controllo (inclusi interruzioni di riga e tabulazioni), i separatori di riga e di paragrafo e i caratteri di incorporamento, sovrascrittura e isolamento bidirezionali (U+202A-U+202E, U+2066-U+2069) vengono rifiutati con 422. Gli spazi iniziali e finali vengono eliminati, e un testo vuoto dopo l'eliminazione degli spazi viene salvato come null. L'HTML non viene interpretato: la schermata di consenso lo esegue l'escape.

Risposta

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

Errori

HTTP code Quando
400 unknown_field Il body contiene un campo sconosciuto.
403 insufficient_permissions La credenziale non ha apis:write.
403 quota_exceeded L'API ha già 1.000 permessi.
404 not_found Non esiste tale API in questo ambiente.
409 conflict Il valore esiste già su questa API, oppure l'API è l'API di sistema.
422 validation_failed Un campo manca o non è valido, oppure un testo non è testo semplice (errors[].pointer indica il campo, per esempio /consent_text_i18n).

Esempio

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

Con la CLI, passa la mappa delle lingue con --data:

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