feat(admin): submissions JSON payload exposure — document sensitive-data guidance
Nobody has claimed this yet.
- Dominant language
- HTML
- Stars
- 33
- Forks
- 104
- Avg merge
- 12h 3m
- Merged PRs (30d)
- 10
Description
Summary
GET /admin/forms/:id/submissions returns the raw payload jsonb for each submission. If a form author ever captures sensitive data (medical questions, contact info, etc.), this surfaces unredacted to anyone who can access the form's admin detail page (staff + the form author).
Requirements
- Decide whether to add a
staff_only_submissionsboolean column onforms(only staff withsystemTier >= 2see payloads when true) OR rely entirely on formscopefor access control - If keeping current behavior, document in the spec §5 that form authors must use `scope='staff_only'` for sensitive data
- Consider per-field marking in the schema (e.g., `sensitive: true` on a field) that triggers payload redaction on the JSON list (but not CSV export which staff can already access)
Context
Plan 4 review follow-up. Not a v1 blocker; raised because forms are the first artifact where user-submitted payloads bear on this question.
Files
packages/api/src/routes/admin/forms/submissions.ts(JSON list response shape)packages/api/src/lib/forms/schemaTypes.ts(if adding per-field sensitive marker)docs/superpowers/specs/2026-05-20-events-announcements-forms-design.md§5
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read §5 of docs/superpowers/specs/2026-05-20-events-announcements-forms-design.md alongside the submissions response in packages/api/src/routes/admin/forms/submissions.ts. If per-field sensitivity remains in scope, inspect packages/api/src/lib/forms/schemaTypes.ts. Done means the access-control or redaction decision is resolved and the spec documents the resulting guidance.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- postgresql, typescript
- Domain
- api, backend, documentation, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100