
# 이메일 템플릿 게시

`POST /v1/email-templates/{family}/{locale}:publish` · 권한 `email-templates:write` · Startup 플랜 이상

초안을 다시 검증한 뒤 게시합니다. 이전에 게시된 버전은 보관(archived)되며, 관리 감사 기록 `email_template.published`가 같은 트랜잭션에서 기록됩니다. 이후에 발송되는 이메일은 새 버전을 사용합니다.

이미 게시된 버전을 다시 게시해도 아무것도 바뀌지 않으며 그 버전을 다시 반환하므로, 재시도는 안전합니다. 게시된 버전보다 오래된 초안이나 보관된 버전은 `409`를 반환합니다. 보관된 버전으로 되돌리려면 [롤백](rollback.md)을 사용하세요.

## 경로 매개변수

| 매개변수 | 설명 |
|---|---|
| `family` | 이메일 패밀리(예: `verify_email` 또는 `email_otp`, [이메일 템플릿 목록 조회](list.md) 참고). |
| `locale` | 로케일 태그(예: `en` 또는 `de`). |

## 요청

| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| `version` | integer | 예 | 게시할 초안 버전(1 이상). |

## 응답

`200 OK`, 게시된 버전(`status: published`)과 함께.

## 오류

| HTTP | code | 발생 시점 |
|---|---|---|
| 400 | `unknown_field` | 본문에 알 수 없는 필드가 있거나 JSON 객체가 아닙니다. |
| 404 | `not_found` | 패밀리 또는 로케일을 알 수 없거나 버전이 존재하지 않습니다. |
| 403 | `plan_feature_unavailable` | 환경의 플랜에 사용자 지정 이메일 템플릿이 포함되지 않습니다(Startup 이상; 필요한 플랜은 `required_plan`에 표시됩니다). |
| 409 | `conflict` | 버전이 보관되었거나 게시된 버전보다 오래되었습니다. |
| 422 | `validation_failed` | `version`이 없거나 1보다 작거나, 초안이 더 이상 검증을 통과하지 못합니다. |
| 401 | `unauthenticated` | 자격 증명이 없거나 잘못되었거나 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 429 | `rate_limited` | 요청 속도 제한을 초과했습니다. `Retry-After` 기간 이후에 다시 시도하세요. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간 이후에 다시 시도하세요. |

## 예제

```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`
