Aggiornare un permesso
PATCH /v1/permissions/{permission_id} · permesso apis:write
Aggiorna un permesso con un JSON merge patch (RFC 7396, application/merge-patch+json): i campi che invii cambiano, gli altri restano invariati. I permessi non hanno una versione, quindi non c'è If-Match.
Richiesta
| Parametro | In | Descrizione |
|---|---|---|
permission_id |
path | ID del permesso (perm_…). |
Body: uno qualsiasi dei campi seguenti (tutti facoltativi, almeno uno).
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
value |
stringa | no | Accettato solo se uguale al valore attuale; non cambia mai. |
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. |
display_name, description e consent_text_i18n si azzerano con null; sensitivity non può essere azzerato. consent_text_i18n viene sostituito per intero: le lingue che ometti vengono rimosse, quindi invia tutte le lingue che vuoi conservare.
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
200 OK
{
"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 |
La patch contiene api_id o un campo sconosciuto. |
| 404 | not_found |
Non esiste tale permesso in questo ambiente. |
| 409 | conflict |
Il permesso appartiene all'API di sistema. |
| 415 | unsupported_media_type |
Il content type non è application/merge-patch+json. |
| 422 | validation_failed |
La patch è vuota, un valore non è valido o non è testo semplice, sensitivity è null, oppure value è diverso (immutable). |
Esempio
curl -X PATCH https://api.eu.keenauth.com/v1/permissions/perm_01h455vb4pex5vsknk084sn02s \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-d '{"description":"See your past orders and their status","consent_text_i18n":{"en":"Read your orders","tr":"Siparişlerinizi okuyun"}}'