# Zulip Bridge Receives webhooks from the cache service and posts door status updates into a Zulip stream. Validates inbound webhooks with a Bearer token, then sends a stream message through the Zulip API using a bot email and API key. ## API | Method | Path | Auth | Description | |--------|------|------|-------------| | `POST` | `/webhook` | Bearer | Status update from the cache service | | `GET` | `/health` | - | Health check | ## Configuration NixOS options under `services.noisebell-zulip`: | Option | Default | Description | |--------|---------|-------------| | `domain` | required | Caddy virtual host domain | | `zulipUrl` | required | Base URL of the Zulip server | | `botEmail` | required | Zulip bot email address | | `apiKeyFile` | required | Zulip bot API key file | | `stream` | required | Zulip stream for updates | | `topic` | `noisebell` | Zulip topic for updates | | `imageBaseUrl` | `https://noisebell.extremist.software/image` | Base URL for status image links | | `webhookSecretFile` | required | Shared secret with the cache service | | `port` | `3003` | Listen port |