
# Restaurer un modèle d'e-mail

`POST /v1/email-templates/{family}/{locale}:rollback` · autorisation `email-templates:write` · plan Startup et supérieurs

Valide de nouveau le contenu d'une version publiée antérieure (désormais archivée) et la publie comme nouvelle version, avec `source_version` défini sur la version restaurée. L'historique n'est pas réécrit. L'enregistrement d'audit `email_template.rolled_back` est écrit dans la même transaction.

Une version qui n'a jamais été publiée, ou celle qui est publiée actuellement, renvoie `409`.

## Paramètres de chemin

| Paramètre | Description |
|---|---|
| `family` | Famille d'e-mails, par exemple `verify_email` ou `email_otp` (voir [Lister les modèles d'e-mail](list.md)). |
| `locale` | Étiquette de langue, par exemple `en` ou `de`. |

## Requête

| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| `version` | integer | oui | La version archivée à republier (1 ou plus). |

## Réponse

`200 OK` avec la nouvelle version publiée.

```json
{
  "family": "verify_email",
  "locale": "en",
  "version": 4,
  "status": "published",
  "subject": "Confirm your email for {{ application.name }}",
  "html": "<p><a href=\"{{ link }}\">Confirm your email</a></p>",
  "text_body": "Confirm your email: {{ link }}",
  "from_name": null,
  "source_version": 1,
  "created_at": "2026-10-19T10:00:00Z",
  "published_at": "2026-10-19T10:00:00Z",
  "latest_version": 4,
  "published_version": 4
}
```

## Erreurs

| HTTP | code | Quand |
|---|---|---|
| 400 | `unknown_field` | Le corps contient un champ inconnu ou n'est pas un objet JSON. |
| 404 | `not_found` | La famille ou la langue est inconnue, ou la version n'existe pas. |
| 403 | `plan_feature_unavailable` | Le plan de l'environnement n'inclut pas les modèles d'e-mail personnalisés (Startup et supérieurs ; `required_plan` indique lequel). |
| 409 | `conflict` | La version n'a jamais été publiée, ou c'est la version publiée actuellement. |
| 422 | `validation_failed` | `version` est absent ou inférieur à 1, ou le contenu ne passe plus la validation. |
| 401 | `unauthenticated` | L'identifiant est absent, invalide ou révoqué. |
| 403 | `insufficient_permissions` | L'identifiant n'a pas l'autorisation requise. |
| 429 | `rate_limited` | La limite de débit a été dépassée ; réessayez après la durée indiquée par `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez après la durée indiquée par `Retry-After`. |

## Exemple

```bash
curl -X POST https://api.eu.keenauth.com/v1/email-templates/verify_email/en:rollback \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"version":1}'
```

CLI : `keenauth email-templates rollback verify_email en --version 1 --yes`
