Tomas Dvorak
f499678964
feat: outbound webhooks — signed event delivery + delivery log
Every audited action now emits a "resource.action" event (bare actions
get resource-qualified; already-qualified actions like service.clone
pass through). Webhooks subscribe per-user with exact names, resource.*
wildcards, or *.
- schema: outbound_webhooks + webhook_deliveries (sqlc + goose)
- dispatcher: 4 workers, 512-queue, 3 attempts with backoff, 10s timeout;
deliveries record status/http-code/body(4KiB)/duration
- signing: X-Containr-Signature sha256=<hmac> over raw body;
X-Containr-Event + X-Containr-Delivery headers; custom headers per hook
- api: CRUD + /deliveries + /test (ping) under authed group
- fix: SetAuditDB never called — LogAudit was a silent no-op at every
call site; now wired at boot
- coverage: service create/delete audited (previously uninstrumented)
- cli: containr webhooks list|create|update|delete|deliveries|test
- mcp: 6 tools, delete requires confirm
- frontend: /settings/webhooks page — list/create/expand-deliveries/
test/disable/delete, secret-shown-once banner; nav + account menu
- openapi + regenerated types; CLI.md + docs snapshot; roadmap ticks
2026-10-09 09:44:08 +02:00
..
2026-09-22 19:58:59 +02:00
2026-04-10 12:02:36 +02:00
2026-09-22 19:58:59 +02:00
2026-09-17 09:40:08 +02:00
2026-04-10 12:02:36 +02:00
2026-10-09 09:44:08 +02:00
2026-09-21 18:05:22 +02:00
2026-09-21 21:07:01 +02:00
2026-10-08 22:54:36 +02:00
2026-10-08 23:07:27 +02:00
2026-04-10 12:02:36 +02:00
2026-04-10 12:02:36 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-10-04 09:01:28 +02:00
2026-10-09 09:33:38 +02:00
2026-10-08 22:09:42 +02:00
2026-10-08 22:09:42 +02:00
2026-10-08 17:21:27 +02:00
2026-10-08 16:51:03 +02:00
2026-10-08 15:38:36 +02:00
2026-09-22 19:58:59 +02:00
2026-04-10 12:02:36 +02:00
2026-09-17 10:30:36 +02:00
2026-10-08 16:27:10 +02:00
2026-04-10 12:02:36 +02:00
2026-09-15 18:59:40 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-09-17 17:52:37 +02:00
2026-10-08 15:38:36 +02:00
2026-10-08 15:38:36 +02:00
2026-09-17 09:40:08 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-10-09 09:33:38 +02:00
2026-10-09 01:04:19 +02:00
2026-04-10 12:02:36 +02:00
2026-10-08 17:21:27 +02:00
2026-10-08 17:08:35 +02:00
2026-10-09 09:44:08 +02:00
2026-10-09 05:12:38 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-09-22 19:58:59 +02:00
2026-10-08 17:21:27 +02:00
2026-10-09 09:44:08 +02:00
2026-09-21 19:31:19 +02:00
2026-10-09 00:22:28 +02:00
2026-10-09 00:22:28 +02:00
2026-10-08 16:23:28 +02:00
2026-10-09 09:33:38 +02:00
2026-10-09 00:33:27 +02:00
2026-10-09 09:33:38 +02:00
2026-04-10 12:02:36 +02:00
2026-10-09 00:33:27 +02:00
2026-10-08 15:38:36 +02:00
2026-10-08 17:08:35 +02:00
2026-10-08 16:38:46 +02:00
2026-10-09 09:44:08 +02:00
2026-10-09 09:44:08 +02:00
2026-04-10 12:02:36 +02:00