
# keenauth_role

El recurso `keenauth_role` gestiona un rol del entorno y su conjunto completo de permisos. Un rol que pertenece a una organización es otro recurso, `keenauth_organization_role`. La fuente de datos `keenauth_role` lee un rol por `id` o `key`.

```terraform
resource "keenauth_permission" "invoices_read" {
  api_id = "api_01j9zq3v8c5m2x7k4t6r1n0b3d"
  value  = "invoices:read"
}

resource "keenauth_role" "billing" {
  key         = "billing"
  name        = "Billing"
  description = "Invoices and payment methods."

  permission_ids = [keenauth_permission.invoices_read.id]
}

data "keenauth_role" "billing" {
  key = "billing"
}
```

## Ciclo de vida

- `key` es única en el entorno, aparece en la reclamación `org_roles` y no puede cambiarse: una nueva clave reemplaza el rol.
- `name` tiene de 1 a 128 caracteres y `description` como máximo 1024. Ninguno puede empezar ni terminar con espacios en blanco, porque la API los recorta.
- `permission_ids` es el conjunto completo (como máximo 500). Se escribe con una solicitud separada tras los campos del rol; si esa solicitud falla al crear, el rol queda en el estado como contaminado y se reemplaza en el siguiente apply. Un permiso añadido o quitado en otro lugar se revierte con el siguiente apply.
- `is_privileged` marca un rol privilegiado. En autoservicio, solo un administrador que tenga el rol de administrador de la organización puede asignarlo, y un mapeo de grupo externo hacia él requiere `roles:write` y una aprobación. Hacer privilegiado un rol existente deja sin aprobar sus mapeos de grupo hasta que se aprueben. El valor predeterminado es `false`; al importar un rol privilegiado, escriba `is_privileged = true` explícitamente, de lo contrario el siguiente apply lo dejará no privilegiado.
- Las actualizaciones y eliminaciones envían `If-Match` con el ETag leído por última vez. Si el rol cambió después de crear el plan, la API responde `412` y nada cambia; ejecute `plan` de nuevo.
- Con `force_destroy = true`, también se elimina un rol asignado y sus asignaciones se quitan en la misma solicitud; de lo contrario, eliminar un rol asignado falla con `409 role_in_use`. Un rol usado como rol de administrador o de miembro predeterminado de una organización no puede eliminarse en absoluto. Cambiar solo `force_destroy` no envía ninguna solicitud.
- Las asignaciones de roles a usuarios y las membresías no son recursos. Son datos personales y nunca se incluyen en el estado; gestiónelas con la API, la CLI o el panel.

## Importación

Importe por clave o por ID:

```shell
tofu import keenauth_role.billing billing
tofu import keenauth_role.billing rol_01j9zq3v8c5m2x7k4t6r1n0b3d
```
