Zapier is one ingress. Direct web, customer API, and S2S leaf nodes are their own services. Every hop to an internal subject must pass verae.access.authz.check (default deny by plane).
2.6 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 via access-zapier |
HTTPS to :3024 only (not NATS) |
| Direct web | verae-access-web customer browser |
HTTPS :3021 |
| Direct customer API | verae-access-api x-api-key |
HTTPS :3022 |
| S2S leaf | verae-access-leaf |
NATS verae.access.leaf.in / HTTPS :3023 |
| Authz | verae-access-authz |
verae.access.authz.check before any internal subject |
| Commercial edge | zappier-edge portal, admin, Stripe (legacy combined) |
Public HTTPS; NATS billing after authz |
| 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.