The one cached read surface (§4.5, CACHING.md "One cached read surface").
live: true (the sending path always passes it) returns only variants
with a live version, joined to that version so template is the copy
actually sending. Without it the query admits variants whose only version
is a draft — an authoring view, kept out of the send path.
An empty items for a requested key means that variant is switched off;
the caller decides the fallback (hosted template before Phase 4,
fail-at-lookup after).
Optionalkeys?: readonly (Optionallive?: booleanOnly variants with a live version. The sending path always passes true.
Optionalpage?: numberOptionalpageSize?: numberOptionalstatusVariants?: readonly string[]
The read model the 11 sending apps use to look up stored email-template copy (docs/proposals/EMAIL_TEMPLATES.md §4.5). One cached
searchsurface, keyed by the filters a caller actually passes;EmailTemplateAdminServicebusts it after every write through the sharedemail-template-searchtag vocabulary.This service exposes the send projection (
ActiveEmailTemplate, pinned to the active version).EmailTemplateAdminServiceexposes the authoring projection over the same namespace but a separate key prefix, because an identical filter object means a different value under the two definitions (CACHING.md §6).