Publishes notification.smsTemplate.*; null where nothing writes.
Test sends are a direct call to the handler, which holds the credentials.
Protected ReadonlycacheProtected ReadonlydbStaticinstanceThe process default: test sends invoke the handler through its own instance().
Publish the draft: live := draft, then clear the draft.
Stop sending this template.
Clear the draft pointer; the version stays as history.
Resume sending this template.
ProtectedgetOne template read past the cache, so a write's re-read sees its commit.
One saved version by its smstv_… id, whichever pointer (if any) names it.
ProtectedinvalidateClears the cached rows; every write calls it after commit. A delete Valkey drops is logged by the store and the rows age out within the TTL.
Clear the live pointer, so the registry default sends again.
Point the live pointer at an earlier version. Rolling back to the draft itself is an activation; any other draft stays.
Validate and save body as a new draft version.
The acting admin, adusr_…; the version records it as its author.
Every registry template, in registry order, merged with its row.
A template's saved versions, newest first. Uncached: rows are immutable.
Text the saved draft, else the live version, for one sample case. Asks
the handler to send that version by its smstv_… id; it renders it with a
[TEST] prefix. Unsaved editor text never leaves the dashboard. The
caller names the number; admin users have none on record.
Stable per request, e.g. the audit row's id.
Authoring for stored SMS templates (SLACK_TEMPLATES.md §7). Single actor: the operator who saves a draft may activate it. Every write upserts the template's row, so a key an operator has never touched gets one on its first write, and every write clears the senders' cached read.