Save VI
An assembled app: announced doors only, with its own sign-in on every path.
appRunning the shop6 operationsid svi
How it sits
An app is already assembled from parts, with a face of its own. The counts and the links below are from the platform's spec and the other services' own descriptions.
| Operations | 6 GET 4 · POST 2 |
| Resources | 3 |
| Leaned on by | no other service names it |
| Leans on | none named |
| In recipes | none yet |
What it can do
6 operations in 3 resources, as the spec declares them. Each row is one call; paths are relative to the part.
rulings
| Method | Path | Does |
|---|---|---|
| GET | /api/rulings | Decisions asked of this app's owner — open first. A service caller holds Save VI.rulings.ask; a person must be an answerer (canRule). |
| POST | /api/rulings | Ask the owner a question (question, options 2–6 or none for free text, context, asked_by, issue_url). The answerers are nudged by mesh DM. A service caller hold |
| GET | /api/rulings/{id} | One decision: the question, its options, and the answer when there is one. |
| POST | /api/rulings/{id}/withdraw | Withdraw an open question — the asker (same asked_by), or an in-house person. |
4 operations
rollup
| Method | Path | Does |
|---|---|---|
| GET | /api/rollup | Save VI's campaign rollup: the funnel (voters, claimed, attempted, reached, do-not-contact), outcome classes, the precinct table, prospect counts, and reps by d |
1 operation
smsqueue
| Method | Path | Does |
|---|---|---|
| GET | /api/smsqueue/pending | The SMS PRE-RESTART CHECK: the count of canvasser SMS submissions matched to a proposed voter that have NOT yet been asked to confirm (`awaiting_confirm` with n |
1 operation
All the partsRunning the shopThe platform's own id for this service is cbsvi.
forge-catalog.json, generated Oct 30, 2026