zapier-docs-master/MESSAGE-FLOWS.md

1.2 KiB

Message flows

1. Create timestamp (async)

  1. Zapier → POST https://zappier-edge/v1/timestamp (x-api-key)
  2. zappier-edge meters → POST middleware/zapier/v1/timestamp
  3. splitter: chain sha256; optional verae.archive.put
  4. middleware → chain create or existing lookup
  5. middleware publishes verae.zapier.jobs.watch { jobId, tenantId, … }
  6. HTTP 202 { jobId } back to Zapier
  7. job-poller consumes watch, GET chain status
  8. On terminal: verae.zapier.jobs.events
  9. webhook-deliver POSTs Zapier REST Hook if subscribed

2. Wait

Same as (1) but HTTP holds until jobs.events or WAIT_TIMEOUT_MS → { status: pending, jobId }.

3. Hash already registered

Step 4 returns original jobId + original seal. No second chain write. receipts[0].kind = seal. Later archive attaches become receipts[1…] if includeAttached.

4. includeAttached

After seal is known, aggregator publishes verae.archive.query. Each WORM: bloom miss = no packet; hit = verae.archive.reply.<correlationId>. Aggregator merges into wait JSON.

5. Multipart attachments

Splitter emits one archive.put per file (kind: file, contentSha256). Chain never stores bytes.