
# Listar plantillas de correo

`GET /v1/email-templates` · permiso `email-templates:read`

Devuelve todas las familias de correo personalizables en el orden del plan, con los idiomas que tienen versiones. La lista es fija y no se pagina (los cursores de `list_metadata` siempre son `null`). La lectura funciona en todos los planes.

Cada familia indica lo que debe contener una plantilla:

- `security`: la plataforma añade un bloque de seguridad que la plantilla no puede eliminar.
- `requires`: el valor que el mensaje debe mostrar tanto en el cuerpo HTML como en el de texto plano: `code`, `link`, `code_or_link` o `none`.
- `available`: `false` significa que la familia todavía no tiene plantilla del sistema en esta versión, por lo que los borradores se rechazan.
- `variables`: las variables de Liquid que la plantilla puede usar.

## Respuesta

`200 OK`

```json
{
  "data": [
    {
      "family": "verify_email",
      "security": false,
      "requires": "code_or_link",
      "available": true,
      "variables": ["application.name", "code", "dir", "environment.display_name", "expires_in_minutes", "link", "locale", "support_url", "user.email"],
      "locales": [{"locale": "en", "latest_version": 3, "published_version": 2}]
    }
  ],
  "list_metadata": {"before": null, "after": null}
}
```

## Errores

| HTTP | code | Cuándo |
|---|---|---|
| 401 | `unauthenticated` | La credencial falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de frecuencia; reintente después del periodo indicado en `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente después del periodo indicado en `Retry-After`. |

## Ejemplo

```bash
curl https://api.eu.keenauth.com/v1/email-templates \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth email-templates list`
