
# Test e-postası gönderin

`POST /v1/email-templates/{family}/{locale}:test-send` · izin `email-templates:write` · Startup planı ve üstü

Bir e-posta şablonunun bir sürümünü, [preview](preview.md) ile aynı örnek verilerle işler ve normal iletim yolu üzerinden tek bir adrese gönderir; böylece gerçek bir gelen kutusunda kontrol edebilirsiniz. Konu `[TEST] ` ile başlar. Şablon, gönderilmeden önce yeniden doğrulanır.

Kurallar:

- Alıcı, kontrol panelinizin hesabındaki `active` bir üyenin doğrulanmış bir e-posta adresi olmalıdır. Diğer adresler reddedilir ve adres hiçbir zaman yanıtta ya da günlüklerde tekrarlanmaz.
- Her ortam UTC gününde en fazla 20 test e-postası gönderebilir. 21'incisi, bir sonraki UTC gününe kadar `429` ile reddedilir (`Retry-After` beklemeyi saniye olarak verir).
- Bastırma listesi hâlâ geçerlidir. Alıcı bastırılmışsa ileti `suppressed` durumuyla kaydedilir, iletilmez ve yine de günlük sınıra sayılır.
- Ortam özel şablonları göndermelidir: iletim modu `platform_default` ise ya da gönderim kısıtlıysa veya askıya alınmışsa test gönderimi reddedilir.
- Kabul edilen her test gönderimi, yönetim denetim günlüğüne `email_template.test_sent` olarak yazılır; aile, yerel ayar ve sürüm yazılır, alıcı yazılmaz.

## Yol parametreleri

| Parametre | Açıklama |
|---|---|
| `family` | E-posta ailesi, örneğin `verify_email` ya da `email_otp` (bkz. [E-posta şablonlarını listeleyin](list.md)). |
| `locale` | Yerel ayar etiketi, örneğin `en` ya da `de`. |

## Üstbilgiler

| Üstbilgi | Açıklama |
|---|---|
| `Idempotency-Key` | İsteğe bağlı, `A-Z a-z 0-9 _ -` karakterlerinden 16 ila 64 karakter. Aynı anahtarla yapılan bir istek tekrarlanırsa ilk ileti döner ve yeniden gönderilmez ya da sayılmaz. SDK'lar ve CLI bunu sizin için ayarlar. |

## İstek

| Alan | Tür | Açıklama |
|---|---|---|
| `to` | string | Zorunlu. Alıcı: `active` bir kontrol paneli üyesinin görünen adı olmadan doğrulanmış bir adresi. Harf büyüklüğü ve çevredeki boşluklar yok sayılır. |
| `version` | integer | Gönderilecek kayıtlı sürüm (1 veya üzeri). Varsayılan: en yeni sürüm. |
| `published` | boolean | `true` yayımlanmış sürümü gönderir. `version` ile birlikte kullanılamaz. |

## Yanıt

`200 OK`

```json
{
  "message_id": "0199f3c4-5d6e-7a8b-9c0d-1e2f3a4b5c6d",
  "state": "queued",
  "version": 3,
  "accepted_at": "2026-10-19T09:00:00Z"
}
```

| Alan | Açıklama |
|---|---|
| `message_id` | İletinin tanımlayıcısı. |
| `state` | `queued` (kısa süre içinde gönderilecek) ya da `suppressed` (alıcı bastırma listesinde). Tekrarlanan bir istek, ilk iletinin o anki durumunu döndürür; bu durum `sent`, `failed` ya da `expired` de olabilir. |
| `version` | Gönderilen sürüm. |
| `accepted_at` | İletinin kabul edildiği zaman. |

## Hatalar

| HTTP | kod | Ne zaman |
|---|---|---|
| 400 | `unknown_field` | Gövdede bilinmeyen bir alan var ya da gövde bir JSON nesnesi değil. |
| 400 | `malformed_request` | Gövde geçerli JSON değil ya da `Idempotency-Key` hatalı ya da tekrarlanmış. |
| 401 | `unauthenticated` | Kimlik bilgisi eksik, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Kimlik bilgisinin gerekli izni yok. |
| 403 | `plan_feature_unavailable` | Ortamın planı özel e-posta şablonlarını içermiyor (Startup ve üstü; hangi planın gerektiği `required_plan` alanında belirtilir). |
| 404 | `not_found` | Aile ya da yerel ayar bilinmiyor, sürüm yok ya da `published` ayarlanmış ama yayımlanmış bir şey yok. |
| 409 | `email_template_not_deliverable` | Ortamın iletim modu ya da gönderim durumu özel şablonları göndermiyor. |
| 422 | `validation_failed` | `to` eksik ya da düz bir e-posta adresi değil, `version` 1'in altında, hem `version` hem `published` gönderilmiş (`conflicts_with_published`) ya da sürüm artık doğrulamadan geçmiyor. |
| 422 | `template_forbidden_construct` | Sürüm, korumalı alan dışında bir Liquid yapısı kullanıyor. |
| 422 | `test_recipient_not_allowed` | Alıcı, `active` bir kontrol paneli üyesinin doğrulanmış bir adresi değil. |
| 429 | `rate_limited` | Ortam bu UTC günü zaten 20 test e-postası gönderdi ya da API istek sınırı aşıldı; `Retry-After` süresinden sonra yeniden deneyin. |
| 503 | `test_recipient_source_unavailable` | Alıcı şu anda kontrol edilemiyor; hiçbir şey gönderilmedi. `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. |

## Örnek

```bash
curl -X POST https://api.eu.keenauth.com/v1/email-templates/verify_email/en:test-send \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: test-send-verify-email-en-0001" \
  -d '{"to":"you@example.com","version":3}'
```

CLI: `keenauth email-templates test-send verify_email en --to you@example.com --version 3`

## Kişisel veriler

Bu uç nokta kişisel veri içerir: kontrol paneli kullanıcıları ve hesap iletişim kişileri. [KeenAuth API'lerinde kişisel veriler](/docs/policies/personal-data) saklanan verileri, ne kadar süre tutulduklarını ve nasıl silindiklerini açıklar. Hiçbir alanda özel nitelikli kişisel verileri (sağlık, biyometrik veriler, din, siyasi görüşler, cinsel yönelim) göndermeyin.
