**Kenar yönlendirme kâhini** (DOM-21) — "bu host hangi upstream'e gitsin?"
# Neden burada Müşterinin özel alan adı (`sugiad.com.tr`, `erp.sugiad.com.tr`) hangi ürünü açacak? Bu karar `core.custom_domains.target_module` / `redirect_url`'de yaşıyor ve müşteri panelden istediği an değiştirebiliyor. Kenar bunu üç şekilde öğrenebilirdi: * Caddy admin API'sine rota itmek → 🔴 ELENDİ: Caddy burada **Caddyfile** ile koşuyor; ilk `caddy reload`'da API ile itilen rotaların hepsi sessizce buharlaşırdı ve arıza ancak sonraki reload'da, ilgisiz bir değişikliğin ardından ortaya çıkardı. * Üretilmiş bir `.caddy` dosyası + reload → müşteri hedef değiştirdiğinde TÜM kenarı reload etmek gerekirdi; ayrıca dosya, Caddyfile'a elle dokunan biri tarafından ezilmeye açık. * **Bu uç** → konfigürasyon HİÇ değişmez, karar anında etkilidir, drift imkânsızdır. Gateway zaten `on_demand_tls { ask }` ile **sertifika** kararının içinde; yönlendirme kararını da ona sormak yeni bir mimari değil, aynı kapının ikinci sorusudur. # Sözleşme `204 No Content` + başlıklar (gövde YOK — Caddy yanıtı `handle_response` ile yutar): * `X-Blesyum-Target` → `shop` | `erp` | `crm` | … | `panel` | `redirect` | `none` * `X-Blesyum-Redirect` → yalnız `redirect` hedefinde, gidilecek adres `none` = bu host bize ait değil ya da hedefi yok → kenar varsayılana (panel) düşer. 🔴 404/500 DÖNMÜYORUZ: Caddy tarafında hata dalı müşteri sitesini 502 yapardı. Bilinmeyen host da, veritabanı hatası da "varsayılan" cevabını alır; site ayakta kalır.
curl -X GET "https://api.blesyum.com/internal/domain-route" \
-H "X-Blesyum-Internal: <imza>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}