master-zapier-plan-draft/docs/02-architecture/modules-and-nats.md
George Lambert f3dc0e6eee
Some checks are pending
offline / test (push) Waiting to run
Add Zapier interface simulator, tree-node Merkle lookups, and user docs
In-process trace console validates hops, faults, recoveries, and
suggested changes before zapier-platform push. User guide covers
signup through central-chain and bulk-summary tree-node hash lookup.
2026-09-11 12:58:03 -04:00

3.7 KiB
Raw Blame History

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)

[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
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.