lilith-platform.live/codebase/@features/api
Natalie eae2f0ef04 feat(api/contact): idempotency_key on contact_submissions (Phase 2b / G9)
Additive nullable column + unique index + createContactSubmissionIdempotent
(ON CONFLICT DO NOTHING, returns existing row, skips notify email on replay).
Route reads optional Idempotency-Key header. Lets the edge outbox replay a
contact submission without creating a duplicate. Backward-compatible: direct
submissions (no key) insert normally. touring/waitlist already natural-idempotent
(UNIQUE(email,provider_slug) upsert), so contact is the only table needing this.
NB: hCaptcha is effectively disabled (frontend sends no token), so stale-token
replays are not rejected; if hCaptcha is ever enabled, add a trusted outbox-token
bypass for replays.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 02:06:19 -05:00
..
config feat(api): Add inbox configuration and admin mail thread management UI/logic for thread listing and actions 2026-05-19 22:59:30 -07:00
scripts feat(seo): destination_slug pSEO tour linking + full NYC analytics coverage 2026-06-19 20:16:18 -05:00
src feat(api/contact): idempotency_key on contact_submissions (Phase 2b / G9) 2026-06-22 02:06:19 -05:00
tests/processors
.dependency-cruiser.cjs
.env.development feat(quinn.admin): serve main-branch dev preview on black without SSO 2026-06-21 23:38:06 -05:00
bunfig.toml
package.json test(api): auto-skip DB-dependent tests off the fast LAN path 2026-06-19 18:20:11 -05:00
tsconfig.json fix(api): null-safe tour-stop hotels, declare sharp, exclude mcp-prospector 2026-06-19 06:46:08 -05:00