Documentation
¶
Overview ¶
Package template renders Notify templates and manages the lifecycle.
Lifecycle: draft → pending_approval → approved → published → archived. Only `published` templates can be invoked from a SendRequest. The approval transition (pending_approval → approved) requires a privileged caller (X-Roles claim contains "notify-approver").
Rendering uses Go's text/template with a small custom function map. The library is text/template (not html/template) because notify payloads include SMS and voice scripts that have no HTML semantics; callers sending email templates with HTML are responsible for escaping their inputs.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoadPublished ¶
LoadPublished fetches the latest published version of (tenant, name).
The lookup key is (tenant, name) when channel is empty, and (tenant, name, channel) when channel is non-empty. There is no silent fall-through between the two: an SMS request for which no SMS-channel template exists is an error, not "give me the email version anyway". This keeps the wire contract honest — channel in == channel out.
Returns a "not found" error when no row matches; the routes layer maps that to HTTP 400.