master-zapier-plan-draft/research/zapier/docs/diagrams/04-flow-async-timestamp.svg
George Lambert b4150c8250 Milestone 0: import zappier billing, Verae middleware, and Zapier research
Compose-ready workspace: packages/zappier (rate card, portal, Stripe),
packages/verae-zapier-middleware (timestamp + NATS), packages/verae-zapier
(CLI app), vendor/zapier-platform, and research/zapier vendor corpus.

Gate 0 structure checks pass. Product code and research are not yet wired.
2026-09-09 02:37:36 -04:00

60 lines
6.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="620"
viewBox="0 0 1100 620" role="img" aria-label="Create Timestamp async plus REST Hook">
<title>Create Timestamp async plus REST Hook</title>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5"
markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#1A6B6B"/>
</marker>
<marker id="arrow-navy" viewBox="0 0 10 10" refX="9" refY="5"
markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#0F2744"/>
</marker>
<marker id="arrow-accent" viewBox="0 0 10 10" refX="9" refY="5"
markerWidth="7" markerHeight="7" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#C2410C"/>
</marker>
</defs>
<rect width="100%" height="100%" fill="#F8FAFC"/>
<text x="24" y="28" font-family="Helvetica, Arial, sans-serif" font-size="11" font-weight="700" fill="#1A6B6B" text-anchor="start">FLOW A</text>
<text x="24" y="50" font-family="Helvetica, Arial, sans-serif" font-size="20" font-weight="700" fill="#0F2744" text-anchor="start">Create Timestamp · async job + hook</text>
<rect x="-10" y="78" width="160" height="36" rx="6" fill="#0F2744" fill-opacity="1" stroke="#0F2744" stroke-width="1.4"/>
<text x="70" y="101" font-family="Helvetica, Arial, sans-serif" font-size="12" font-weight="700" fill="#FFFFFF" text-anchor="middle">Zapier app</text>
<line x1="70" y1="114" x2="70" y2="590" stroke="#94A3B8" stroke-dasharray="3 5"/>
<rect x="210" y="78" width="160" height="36" rx="6" fill="#0F2744" fill-opacity="1" stroke="#0F2744" stroke-width="1.4"/>
<text x="290" y="101" font-family="Helvetica, Arial, sans-serif" font-size="12" font-weight="700" fill="#FFFFFF" text-anchor="middle">Middleware</text>
<line x1="290" y1="114" x2="290" y2="590" stroke="#94A3B8" stroke-dasharray="3 5"/>
<rect x="430" y="78" width="160" height="36" rx="6" fill="#0F2744" fill-opacity="1" stroke="#0F2744" stroke-width="1.4"/>
<text x="510" y="101" font-family="Helvetica, Arial, sans-serif" font-size="12" font-weight="700" fill="#FFFFFF" text-anchor="middle">NATS</text>
<line x1="510" y1="114" x2="510" y2="590" stroke="#94A3B8" stroke-dasharray="3 5"/>
<rect x="650" y="78" width="160" height="36" rx="6" fill="#0F2744" fill-opacity="1" stroke="#0F2744" stroke-width="1.4"/>
<text x="730" y="101" font-family="Helvetica, Arial, sans-serif" font-size="12" font-weight="700" fill="#FFFFFF" text-anchor="middle">Workers</text>
<line x1="730" y1="114" x2="730" y2="590" stroke="#94A3B8" stroke-dasharray="3 5"/>
<rect x="870" y="78" width="160" height="36" rx="6" fill="#0F2744" fill-opacity="1" stroke="#0F2744" stroke-width="1.4"/>
<text x="950" y="101" font-family="Helvetica, Arial, sans-serif" font-size="12" font-weight="700" fill="#FFFFFF" text-anchor="middle">Verae / Hooks</text>
<line x1="950" y1="114" x2="950" y2="590" stroke="#94A3B8" stroke-dasharray="3 5"/>
<line x1="70" y1="148" x2="290" y2="148" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="180.0" y="137.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">1 POST /timestamp</text>
<line x1="290" y1="190" x2="950" y2="190" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="620.0" y="179.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">2 entitlement + POST /api/timestamp</text>
<line x1="950" y1="232" x2="290" y2="232" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="620.0" y="246.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">3 202 { jobId }</text>
<line x1="290" y1="274" x2="70" y2="274" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="180.0" y="288.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">4 return jobId to Zap</text>
<line x1="290" y1="322" x2="510" y2="322" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="400.0" y="311.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">5 publish jobs.watch</text>
<line x1="510" y1="364" x2="730" y2="364" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="620.0" y="353.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">6 job-poller</text>
<line x1="730" y1="406" x2="950" y2="406" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="840.0" y="395.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">7 GET /api/status/{jobId}</text>
<line x1="950" y1="448" x2="730" y2="448" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="840.0" y="462.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">8 pending: Nak + delay</text>
<line x1="730" y1="490" x2="510" y2="490" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="620.0" y="504.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">9 terminal → jobs.events</text>
<line x1="510" y1="532" x2="730" y2="532" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="620.0" y="521.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">10 match webhooks</text>
<line x1="730" y1="574" x2="950" y2="574" stroke="#1A6B6B" stroke-width="1.8" marker-end="url(#arrow)"/>
<text x="840.0" y="563.0" font-family="Helvetica, Arial, sans-serif" font-size="10" font-weight="600" fill="#134848" text-anchor="middle">11 POST timestamp.completed</text>
<text x="24" y="612" font-family="Helvetica, Arial, sans-serif" font-size="11" font-weight="500" fill="#64748B" text-anchor="start">Pair this action with the Timestamp Completed hook trigger. Zapier does not poll Verae.</text>
</svg>