
# keenauth_permission

`keenauth_permission` リソースは、API の権限（OAuth スコープ）を、同意画面に表示されるテキストとともに定義します。プロバイダーは API 自体を管理しません。既存の API の ID を `api_id` として渡してください。権限をロールに含めるには `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"
  }
}
```

## ライフサイクル

- `value` は `resource:action` の形式で、アクセストークンの `permissions` クレームに現れます。API 内で一意であり、変更できません。新しい値を指定すると権限が置き換わります。`idp_` プレフィックスはシステム API のものです。
- `display_name`、`description`、`consent_text_i18n` のテキストはプレーンテキストです。制御文字、行区切りや段落区切り、双方向の上書き文字は使えません。`display_name` と `description` は先頭と末尾の空白も不可です（API がこの 2 つの空白を取り除きます）。`consent_text_i18n` のテキストは書かれたとおりに保存されますが、空にはできません。空のテキストは許可されないため、代わりに属性を削除してください。
- `consent_text_i18n` はマップ全体として置き換えられます。キーは `de` や `pt-BR` などの言語タグで、最大 30 言語です。クリアするには属性を削除してください。
- `sensitivity` は `normal` または `sensitive` です。sensitive の権限は同意画面で強調表示されます。
- 権限の行にはバージョンがないため、API はこれに対する `If-Match` チェックを提供しません。プロバイダーはプランのたびに API の権限一覧を読み、ほかの場所で行われた変更をドリフトとして表示し、変更されたフィールドのみを送信します。
- リソースを削除すると、権限が削除され、すべてのロールとアプリケーションの権限一覧からも削除されます。そのロールの次回の更新で変更が表示されます。
- システム API には新しい権限を追加できず、その権限は削除できません（`409 conflict`）。1 つの API が持てる権限は最大 1,000 です。
- プロバイダーの外で削除された権限は、state から削除され、再度プランされます。

## インポート

API ID と権限 ID、または API ID と値でインポートします:

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