Some checks are pending
offline / test (push) Waiting to run
Central fleet.json sets min/max copies. Tree-node keepFloor respawns until three healthy unpaused replicas remain. CLI and loopback UI pause, resume, stop, and restart instances that fail health checks.
56 lines
3.8 KiB
Markdown
56 lines
3.8 KiB
Markdown
# Modules and NATS message contracts
|
||
|
||
Master map of every service in the Zapier ↔ middleware ↔ chain ↔ WORM-archive path.
|
||
|
||
Zapier cloud **never** connects to NATS. Only middleware workers and archives do.
|
||
|
||
## Who talks to whom (HTTPS vs NATS)
|
||
|
||
```text
|
||
[Zapier Platform app] HTTPS [zappier-edge] HTTPS [middleware-http]
|
||
|
|
||
NATS JetStream (NS1 loopback :4222) |
|
||
+------------------+------------------+-------------+
|
||
| | |
|
||
[job-poller] [webhook-deliver] [archive-aggregator]
|
||
| |
|
||
| HTTPS | NATS query/reply
|
||
[verae-chain-client] |
|
||
[archive-worm × N]
|
||
bloom miss = silence
|
||
```
|
||
|
||
## Module catalog
|
||
|
||
| Module | Repo (Forgejo) | Runtime | Listens | Sends |
|
||
|--------|----------------|---------|---------|-------|
|
||
| zapier-platform-app | `verae-zapier-app` | Zapier cloud | User Zap steps | HTTPS to zappier-edge |
|
||
| zappier-edge | `zappier-edge` | Public HTTPS :3000 | Zapier, portal, admin | HTTPS to middleware |
|
||
| middleware-http | `verae-middleware` | Public HTTPS :3100 | zappier-edge | NATS jobs.watch; HTTP to chain; wait on jobs.events |
|
||
| job-poller | `verae-job-poller` | Worker | `verae.zapier.jobs.watch` | `verae.zapier.jobs.events`; HTTP GET chain status |
|
||
| webhook-deliver | `verae-webhook-deliver` | Worker | `verae.zapier.webhooks.deliver` + events | HTTPS POST Zapier REST Hook |
|
||
| request-splitter | `verae-request-splitter` | In middleware | HTTP body / multipart | chain hash; `verae.archive.put` |
|
||
| archive-aggregator | `verae-archive-aggregator` | Worker / in wait | `includeAttached` on wait | `verae.archive.query`; reads `verae.archive.reply.<id>` |
|
||
| archive-worm | `verae-archive-worm` | N copies | `verae.archive.query`, `verae.archive.put` | `verae.archive.reply.<id>` if bloom hits |
|
||
| tree-node | `verae-tree-node` | N copies (WORM role) | `verae.archive.query`, `verae.archive.put` kind `tree` | `verae.archive.reply.<id>` if bloom hits |
|
||
| zapier-simulator | `verae-zapier-simulator` | Local HTTP :3847 | operator browser | in-process replay of all addresses |
|
||
| fleet | `verae-fleet` | Local HTTP :3850 | operator | spawns workers; keepFloor on tree-node |
|
||
| zapier-user-docs | `zapier-user-docs` | Static | — | catalog `/user-docs/` |
|
||
| verae-chain-client | `verae-chain-client` | Library | — | HTTPS `api.veraetime.net` or MOCK |
|
||
| docs-master | `zapier-docs-master` | Static | — | published on zapier.georgelambert.org |
|
||
|
||
## Addresses (subjects)
|
||
|
||
| Address | Kind | Payload (required fields) |
|
||
|---------|------|---------------------------|
|
||
| `verae.zapier.jobs.watch` | JetStream work queue | `tenantId`, `jobId`, `tokenRef`, `enqueuedAt`, `attempt`, `maxAttempts`, `intervalMs`, `traceId` |
|
||
| `verae.zapier.jobs.events` | JetStream events | `event` (`timestamp.completed\|failed\|timeout`), `tenantId`, `jobId`, `status`, `traceId`, `emittedAt` |
|
||
| `verae.zapier.webhooks.deliver` | JetStream work queue | `hookId`, `tenantId`, `targetUrl`, `event`, `payload`, `attempt`, `traceId` |
|
||
| `verae.zapier.usage` | optional | `tenantId`, `action`, `amount`, `at` |
|
||
| `verae.archive.put` | JetStream | `sha256`, `tenantId`, `kind` (`publicMeta\|privateMeta\|file\|tree`), `record`, `traceId` |
|
||
| `verae.archive.query` | pub to **all** archives | `correlationId`, `sha256`, `tenantId`, `kinds[]`, `traceId` |
|
||
| `verae.archive.reply.<correlationId>` | replies | `archiveId`, `sha256`, `records[]`, `traceId` |
|
||
|
||
## Completed job JSON (back to Zapier)
|
||
|
||
See `docs/02-architecture/archive-nats.md`. Seal receipts from chain; extra receipts and `files[]` from archive aggregation when `includeAttached` is true.
|