# verae-middleware Zapier-facing HTTPS adapter (`/zapier/v1/*`) plus NATS workers. Zapier never speaks NATS or `api.veraetime.net`; this process does. **Forgejo:** https://git.georgelambert.org/marchon/verae-middleware **Clone:** `ssh://git@git.georgelambert.org:2223/marchon/verae-middleware.git` **Catalog README (PDF):** https://zapier.georgelambert.org/packages/verae-zapier-middleware/README.pdf **NATS contract:** https://zapier.georgelambert.org/docs-master/modules/verae-zapier-middleware/NATS.pdf **Install / Docker / Proxmox:** https://zapier.georgelambert.org/packages/verae-ops/README.pdf ## Run ```bash cd packages/verae-zapier-middleware npm install MOCK_VERAE=true NATS_ENABLED=false npm test PORT=3100 MOCK_VERAE=true npm start # /health, /zapier/v1 ``` Docker image: `Dockerfile` (Node 22, port 3100). Full stack: `verae-ops` compose. ## Environment | Variable | Default | Purpose | |----------|---------|---------| | `PORT` | `3100` | HTTP bind | | `VERAE_API_BASE_URL` | `http://localhost:8080` | Chain HTTPS | | `MOCK_VERAE` | `false` | In-process mock chain | | `NATS_ENABLED` | `false` | JetStream vs in-process poller | | `NATS_URL` | `nats://127.0.0.1:4222` | Cluster URL (loopback / docker DNS) | | `WAIT_TIMEOUT_MS` | — | Sync wait on `jobs.events` | ## Depends on - **Upstream HTTPS:** zappier-edge (`x-api-key` already checked) or a lab client - **Chain:** `api.veraetime.net` or `MOCK_VERAE=true` - **NATS:** `jobs.watch` out, `jobs.events` in; optional `archive.put` / aggregator wait - **Optional:** request-splitter (in-process), archive-worm, tree-node, webhook-deliver Does **not** bind NATS publicly. See [verae-ops linking](https://zapier.georgelambert.org/packages/verae-ops/06-linking-services.pdf).