E-posta şablonu taslağını kaydet
PUT /v1/email-templates/{family}/{locale} · izin email-templates:write · Startup planı ve üstü
İçeriği yeni bir taslak sürüm olarak kaydeder. Taslağı yayımlayana kadar yayımlanmış sürüm değişmez.
If-Match zorunludur ve okuduğunuz en yeni sürümü taşır (al ya da sürümleri listele işlemlerinin ETag'i). Henüz sürümü olmayan bir yuva için If-Match: "0" gönderin; * boş bir yuvayla eşleşmez. Uyuşmazlık 412 döndürür.
Kaydetmeden önce içerik, gerçek gönderimle aynı denetimlerden geçer:
- Örnek verilerle Liquid sandbox'ında render edilebilmelidir.
- HTML dengeli olmalıdır.
- Ailenin kodu ya da bağlantısı (bkz. listeden
requires) hem HTML'de hem düz metin gövdesinde bulunmalıdır. - Bağlantılar yalnızca platform host'larına işaret edebilir.
- Boyut sınırları uygulanır.
Bir yuva, yayımlanmış sürüm dışında en fazla 50 sürüm tutar; daha eski taslaklar silinir.
Yol parametreleri
| Parametre | Açıklama |
|---|---|
family |
E-posta ailesi, örneğin verify_email veya email_otp (E-posta şablonlarını listele bölümüne bakın). |
locale |
Dil etiketi, örneğin en veya de. |
İstek
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
subject |
string | evet | Liquid, düz metin, 1 ile 200 karakter, satır sonu yok. |
html |
string | evet | Liquid HTML parçası, en fazla 256 KiB. Platform düzeni ekler. |
text_body |
string | evet | Liquid düz metin gövdesi, en fazla 64 KiB. |
from_name |
string | hayır | Gönderen görünen adı, en fazla 64 karakter, satır sonu yok. Boş ya da eksikse uygulama veya ortam adı kullanılır. |
Yanıt
200 OK, yeni taslak ve sürümüne eşit ETag ile.
{
"family": "verify_email",
"locale": "en",
"version": 3,
"status": "draft",
"subject": "Confirm your email for {{ application.name }}",
"html": "<p>Hi,</p><p><a href=\"{{ link }}\">Confirm your email</a></p>",
"text_body": "Confirm your email: {{ link }}",
"from_name": null,
"source_version": null,
"created_at": "2026-10-19T09:00:00Z",
"published_at": null,
"latest_version": 3,
"published_version": 2
}
Hatalar
| HTTP | code | Ne zaman |
|---|---|---|
| 400 | unknown_field |
Gövdede bilinmeyen bir alan var ya da gövde bir JSON nesnesi değil. |
| 404 | not_found |
Aile ya da dil bilinmiyor veya sürüm mevcut değil. |
| 403 | plan_feature_unavailable |
Ortamın planı özel e-posta şablonlarını içermiyor (Startup ve üstü; hangisinin gerektiği required_plan alanında yazar). |
| 412 | precondition_failed |
If-Match, en yeni sürüm değil (araya biri kaydetmiş) ya da boş bir yuvada *. |
| 413 | payload_too_large |
Gövde 2 MiB'den büyük. |
| 428 | precondition_required |
If-Match eksik. |
| 422 | validation_failed |
İçerik doğrulamayı geçemiyor; errors[] her alanı (/subject, /html, /text_body, /from_name, /family) ve kuralını belirtir. |
| 422 | template_forbidden_construct |
Şablon sandbox dışında bir Liquid yapısı kullanıyor (örneğin {% include %}); errors[] alanı adlandırır. |
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz ya da iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinin gerekli izni yok. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
errors[] içindeki doğrulama kuralları şunları içerir: required, too_long, invalid, unbalanced_html, missing_code, missing_link, missing_code_or_link, template_render_failed, template_too_large ve family_not_available.
Örnek
curl -X PUT https://api.eu.keenauth.com/v1/email-templates/verify_email/en \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/json" \
-H 'If-Match: "2"' \
-d '{"subject":"Confirm your email for {{ application.name }}","html":"<p><a href=\"{{ link }}\">Confirm your email</a></p>","text_body":"Confirm your email: {{ link }}"}'
CLI: keenauth email-templates put verify_email en --if-match '"2"' --data @template.json