
# keenauth_permission

La ressource `keenauth_permission` définit une permission (un scope OAuth) d'une API, avec les textes que l'écran de consentement affiche. Le fournisseur ne gère pas l'API elle-même : passez l'ID d'une API existante comme `api_id`. Placez la permission dans un rôle avec `keenauth_role`.

```terraform
resource "keenauth_permission" "invoices_read" {
  api_id       = "api_01j9zq3v8c5m2x7k4t6r1n0b3d"
  value        = "invoices:read"
  display_name = "Read invoices"
  description  = "See the invoices of the account."
  sensitivity  = "normal"

  consent_text_i18n = {
    de = "Rechnungen ansehen"
    tr = "Faturaları görüntüle"
  }
}
```

## Cycle de vie

- `value` a la forme `resource:action` et apparaît dans la revendication `permissions` des jetons d'accès. Elle est unique dans l'API et ne peut pas être modifiée : une nouvelle valeur remplace la permission. Le préfixe `idp_` est réservé à l'API système.
- `display_name`, `description` et les textes de `consent_text_i18n` sont du texte brut : pas de caractères de contrôle, pas de séparateurs de ligne ou de paragraphe, pas de caractères de substitution bidirectionnels et, pour `display_name` et `description`, pas d'espaces en début ou en fin (l'API les supprime). Un texte de `consent_text_i18n` est stocké tel quel, mais il ne doit pas être vide. Un texte vide n'est pas autorisé ; supprimez plutôt l'attribut.
- `consent_text_i18n` est remplacé en entier comme une table de correspondance. Les clés sont des étiquettes de langue comme `de` ou `pt-BR` ; 30 langues au maximum. Supprimez l'attribut pour le vider.
- `sensitivity` vaut `normal` ou `sensitive` ; une permission sensible est mise en évidence sur l'écran de consentement.
- Une ligne de permission n'a pas de version, donc l'API n'offre pas de vérification `If-Match` pour elle. Le fournisseur lit la liste des permissions de l'API à chaque plan, signale toute modification faite ailleurs comme une dérive et n'envoie que les champs modifiés.
- Supprimer la ressource supprime la permission et la retire de chaque rôle et des listes de permissions des applications. La prochaine actualisation de ces rôles montre le changement.
- L'API système n'accepte aucune nouvelle permission et ses permissions ne peuvent pas être supprimées (`409 conflict`). Une API contient au maximum 1 000 permissions.
- Une permission supprimée en dehors du fournisseur est retirée de l'état et replanifiée.

## Importation

Importez par ID d'API et ID de permission, ou par ID d'API et valeur :

```shell
tofu import keenauth_permission.invoices_read api_01j9zq3v8c5m2x7k4t6r1n0b3d/perm_01j9zq3v8c5m2x7k4t6r1n0b3e
tofu import keenauth_permission.invoices_read api_01j9zq3v8c5m2x7k4t6r1n0b3d/invoices:read
```
