
# Publier un modèle d'e-mail

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

Valide de nouveau un brouillon et le publie. La version publiée précédente est archivée, et l'enregistrement d'audit de gestion `email_template.published` est écrit dans la même transaction. Les e-mails envoyés ensuite utilisent la nouvelle version.

Publier la version déjà publiée ne change rien et la renvoie de nouveau, de sorte que les nouvelles tentatives sont sans risque. Un brouillon plus ancien que la version publiée, ou une version archivée, renvoie `409` ; utilisez [restaurer](rollback.md) pour revenir à une version archivée.

## 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 brouillon à publier (1 ou plus). |

## Réponse

`200 OK` avec la version publiée (`status: published`).

## 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 est archivée ou plus ancienne que la version publiée. |
| 422 | `validation_failed` | `version` est absent ou inférieur à 1, ou le brouillon 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:publish \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"version":3}'
```

CLI : `keenauth email-templates publish verify_email en --version 3`
