master-zapier-plan-draft/packages/overview/01-system.md
George Lambert ac38676645
Some checks are pending
offline / test (push) Waiting to run
Add NATS account-balance SoT and statement review for customers, CS, and sales
Internal billing now uses verae.billing.* request-reply and pubs. zappier-account-balance tracks prepaid, credits, usage, and payments. Portal, admin, CS, and sales all review the same statement. Independent Forgejo repos stay split via push-module-repos.
2026-09-11 15:35:37 -04:00

2.3 KiB

1. System

Verae Time proves a SHA-256 existed at a given time. Zapier lets customers register and look up hashes from the tools they already use. Billing and API keys live on zappier-edge. Timestamping, wait, webhooks, and archive fan-out live behind verae-middleware. Durable messaging is the central Verae NATS.IO 3-server JetStream cluster.

Hard rule

Zapier never connects to NATS, tree nodes, WORM archives, or api.veraetime.net. Those hops are middleware and workers only. If a trace ever shows a Zapier hop on a verae.* subject, do not push the app.

Planes

Plane What Network
Zapier cloud verae-zapier-app, verae-activate HTTPS to zappier-edge
Commercial edge zappier-edge portal, admin, x-api-key, Stripe meter Public HTTPS; NATS billing pubs/requests
Account balance zappier-account-balance prepaid SoT NATS verae.billing.* + HTTP :3010
CS / sales / accounting zappier-customer-service, zappier-sales-pricing, zappier-accounting-export Private HTTP; NATS statement/adjust
Middleware HTTP /zapier/v1/* job id + wait Public HTTPS from edge only
NATS cluster JetStream subjects under verae.* Private; loopback or SSH tunnel
Workers poller, webhook-deliver, aggregator NATS + HTTPS to chain or Zapier hooks
Archives WORM + tree nodes NATS broadcast query; bloom miss = silence
Chain Verae timestamping HTTPS api.veraetime.net or MOCK
Control verae-fleet Operator loopback :3850; SSH to extra machines

Request in one sentence

A Zap step POSTs to zappier-edge (x-api-key); edge meters the call and, when ZAPPIER_UPSTREAM is set, forwards timestamp/receipt/hash to middleware /zapier/v1. Middleware splits hash vs files, writes the hash (or Merkle root) to the chain, publishes verae.zapier.jobs.watch, and either returns jobId or waits on verae.zapier.jobs.events. Meter events, CS credits, and portal reloads go over NATS verae.billing.* to account-balance (source of truth). Customers review the same statement in the portal; CS (:3011) and sales (:3012) review it on their department UIs. Attached metadata and bulk-summary leaves are found later by broadcasting verae.archive.query to every archive/tree node.

See diagrams.