Proxy Hesychia Stripe webhooks off the static site #42

Merged
westfarn merged 1 commits from fix/41-hesychia-stripe-webhook into master 2026-10-10 04:54:04 -07:00
Owner

Summary

  • Closes #41.
  • Stripe live endpoint we_1TzDNHDV0RPXOyxGCOftavHV posts to https://hesychia.ai/api/finance/webhooks/stripe/. On 2026-10-09 the chat_web_app prod vhost returned HTTP 405 fifteen times (request_time 0.000, User-Agent Stripe). pending_webhooks stayed 1.
  • try_files falls through to index.html, and nginx rejects POST on that static file. The Django handler on chat_backend never sees the body.
  • chat_web_app now proxies /api/finance/webhooks/ to the same-env chat_backend port (8003 prod, 8013 beta) via host.docker.internal. Host is the backend public hostname so ALLOWED_HOSTS matches. Other static apps are unchanged.

Test plan

  • ansible-playbook playbooks/site.yml --syntax-check (or the web-static portion) renders without error
  • Redeploy web-static (scripts/deploy.sh path that runs the web-static role) so nginx.conf reloads
  • curl -i -X POST http://127.0.0.1:8082/api/finance/webhooks/stripe/ from an app host reaches Django (400 invalid signature or 503 missing secret), not 405
  • Stripe Dashboard: resend a failed event to the Hesychia.ai endpoint and confirm 2xx
## Summary - Closes #41. - Stripe live endpoint `we_1TzDNHDV0RPXOyxGCOftavHV` posts to `https://hesychia.ai/api/finance/webhooks/stripe/`. On 2026-10-09 the `chat_web_app` prod vhost returned HTTP 405 fifteen times (`request_time` 0.000, User-Agent Stripe). `pending_webhooks` stayed 1. - `try_files` falls through to `index.html`, and nginx rejects POST on that static file. The Django handler on `chat_backend` never sees the body. - `chat_web_app` now proxies `/api/finance/webhooks/` to the same-env `chat_backend` port (`8003` prod, `8013` beta) via `host.docker.internal`. `Host` is the backend public hostname so `ALLOWED_HOSTS` matches. Other static apps are unchanged. ## Test plan - [ ] `ansible-playbook playbooks/site.yml --syntax-check` (or the web-static portion) renders without error - [ ] Redeploy web-static (`scripts/deploy.sh` path that runs the web-static role) so `nginx.conf` reloads - [ ] `curl -i -X POST http://127.0.0.1:8082/api/finance/webhooks/stripe/` from an app host reaches Django (400 invalid signature or 503 missing secret), not 405 - [ ] Stripe Dashboard: resend a failed event to the Hesychia.ai endpoint and confirm 2xx
westfarn added 1 commit 2026-10-10 04:28:19 -07:00
Proxy Hesychia finance webhooks to chat_backend so Stripe POST is not 405.
Sync runner checkout / sync (pull_request) Successful in 7s
f24e1d3305
The static SPA nginx served index.html for /api/finance/webhooks/stripe/ and rejected the method. Closes #41.
westfarn merged commit a84350fe60 into master 2026-10-10 04:54:04 -07:00
westfarn deleted branch fix/41-hesychia-stripe-webhook 2026-10-10 04:54:04 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/server-infra#42