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:

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