{"openapi":"3.1.0","info":{"title":"Zeq SDK — Full Machine API","version":"1.287.0","description":"The complete OpenAPI surface for this Zeq machine: 735 paths / 799 operations across every public /api/* endpoint, plus the full MCP tool surface (60 tools, see x-mcp-tools). All 32 sealed solvers are tagged \"Solvers\" and carry x-solver metadata (domain, numerical method, operator chain, unit). HULYAS Master Equation, KO42, HulyaPulse 1.287 Hz, Zeqond 0.777 s, HMAC ZeqProof receipts. The MCP tools zeq_api_catalog (the map) and zeq_http (the door) reach every endpoint below.","contact":{"email":"info@hulyas.org","url":"https://zeqenvelope.com"}},"servers":[{"url":"https://zeqenvelope.com"}],"tags":[{"name":"Solvers","description":"The sealed physics and engineering solvers — each runs a real numerical method (RK4, leapfrog, eigensolvers, FEM/PCG, Monte-Carlo, DPLL, Riemann-Siegel, ...), validates against the analytic/textbook result, and returns an HMAC-signed ZeqProof receipt. 32 solver endpoints; each carries x-solver metadata."},{"name":"Compute & Proof","description":"The compute spine (/api/zeq/compute) and the proof / verification surface."},{"name":"MCP","description":"Model Context Protocol. POST /api/mcp (JSON-RPC 2.0: initialize, tools/list, tools/call). 60 tools — the full list with input schemas is at x-mcp-tools."},{"name":"Operators & Kernel","description":"The operator registry (1,600+) and the kernel prompt."},{"name":"Reactor","description":"Stateful reactor simulation surface."},{"name":"Contracts","description":"State-contract templates, deploy and fire."},{"name":"Chain & State","description":"State-machine chain, transitions and explorer."},{"name":"Mesh & Nodes","description":"Mesh coherence, node status, DNS and time-shift."},{"name":"Accounts & Keys","description":"Demo keys, accounts, plans and billing."},{"name":"Oracle","description":"Oracle price / data feeds."},{"name":"System","description":"Health, status and metrics."},{"name":"Zeq Core","description":"Core Zeq endpoints."},{"name":"Other","description":"Additional endpoints on this machine."}],"paths":{"/api/.well-known/jwks.json":{"get":{"tags":["Other"],"summary":"GET /api/.well-known/jwks.json","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"oauth.ts"}},"/api/.well-known/openid-configuration":{"get":{"tags":["Other"],"summary":"Standard OIDC discovery endpoints","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"oauth.ts"}},"/api/agent/{zid}/plans/{planId}":{"get":{"tags":["Accounts & Keys"],"summary":"GET /plans/:planId","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"planId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/plans/current":{"get":{"tags":["Accounts & Keys"],"summary":"GET /plans/current","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/plans/draft":{"get":{"tags":["Accounts & Keys"],"summary":"GET /plans/draft","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Accounts & Keys"],"summary":"POST /plans/draft Upserts the draft for (agent, slug). Single draft per pair; subsequent writes overwrite. Lock promotes the draft to a new locked version.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/{zid}/plans/history":{"get":{"tags":["Accounts & Keys"],"summary":"GET /plans/history","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/plans/lock":{"post":{"tags":["Accounts & Keys"],"summary":"Promotes the current draft (or the body shape) to a new locked version. Bumps version = max(prior locked) + 1, marks prior locked rows superseded, patches agent_protocol_state.current_plan_id. Emits a plan_locked audit r","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentPlans.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/{zid}/sandbox/quota":{"get":{"tags":["Accounts & Keys"],"summary":"Cheap snapshot of the rolling-24h quota window. Used by the BUILD surface to render the \"X / 20 runs · Y / 60 000 mz\" counters before the user clicks Run.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentSandbox.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/sandbox/run":{"post":{"tags":["Accounts & Keys"],"summary":"machine context). Always returns 200 with `{ ok, ... }`; non-zero `exit_code` (1, 124, 137) means the Python failed but the call itself completed successfully — clients render the receipt either way.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentSandbox.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/{zid}/sandbox/runs":{"get":{"tags":["Accounts & Keys"],"summary":"Returns the most recent runs for the agent, newest first. Bodies are included (capped server-side at 64 KB per stream); for very long listings the UI can pass `limit=5` and request more lazily.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentSandbox.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/skills":{"get":{"tags":["Accounts & Keys"],"summary":"GET /skills","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts","security":[{"bearerAuth":[]}]}},"/api/agent/{zid}/skills/attach":{"post":{"tags":["Accounts & Keys"],"summary":"POST /skills/attach","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/{zid}/skills/detach":{"post":{"tags":["Accounts & Keys"],"summary":"POST /skills/detach","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/{zid}/state":{"get":{"tags":["Accounts & Keys"],"summary":"GET /state","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Accounts & Keys"],"summary":"PATCH /state","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agent/files/history":{"get":{"tags":["Accounts & Keys"],"summary":"GET /history","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"agentZid","in":"query","required":false,"schema":{"type":"string"}},{"name":"path","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentFiles.ts","security":[{"bearerAuth":[]}]}},"/api/agent/files/list":{"get":{"tags":["Accounts & Keys"],"summary":"GET /list","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"agentZid","in":"query","required":false,"schema":{"type":"string"}},{"name":"role","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentFiles.ts","security":[{"bearerAuth":[]}]}},"/api/agent/files/read":{"get":{"tags":["Accounts & Keys"],"summary":"GET /read","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"agentZid","in":"query","required":false,"schema":{"type":"string"}},{"name":"path","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentFiles.ts","security":[{"bearerAuth":[]}]}},"/api/agent/files/write":{"post":{"tags":["Accounts & Keys"],"summary":"POST /write","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"agentFiles.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/agents":{"get":{"tags":["Accounts & Keys"],"summary":"GET /api/agents","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgents.ts"}},"/api/agents/{zid}":{"get":{"tags":["Accounts & Keys"],"summary":"GET /api/agents/:zid","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgents.ts"}},"/api/analyze":{"post":{"tags":["Other"],"summary":"POST /analyze","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqCompress.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/apps/track":{"post":{"tags":["Other"],"summary":"POST /api/apps/track","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"appsTrack.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/attest":{"post":{"tags":["Other"],"summary":"POST /api/attest","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"attest.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/auth/callback":{"get":{"tags":["Accounts & Keys"],"summary":"auth/callback","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string"}},{"name":"error","in":"query","required":false,"schema":{"type":"string"}},{"name":"error_description","in":"query","required":false,"schema":{"type":"string"}},{"name":"state","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"ssoCallback.ts"}},"/api/auth/login":{"post":{"tags":["Accounts & Keys"],"summary":"Security: this is intentionally \"email = identity\" — consistent with the trial sign-up flow where knowing the email is the sole proof of identity. The session gives access to the portal UI only; the API key material itse","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"auth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/auth/sso-start":{"get":{"tags":["Accounts & Keys"],"summary":"auth/sso-start","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"return","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"ssoCallback.ts"}},"/api/av/claim":{"post":{"tags":["Other"],"summary":"locally. Response: { ok: true, audit_row_id, s_forensic, fired, notified }","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"av.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/av/devices":{"get":{"tags":["Other"],"summary":"GET /api/av/devices?slug=<machine> — list devices for a machine POST /api/av/devices — register a new device","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"av.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/av/devices","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"av.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/av/mesh-feed":{"get":{"tags":["Other"],"summary":"GET /api/av/mesh-feed?slug=<machine> — peer threats this machine subscribes to","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"av.ts"}},"/api/av/threats":{"get":{"tags":["Other"],"summary":"GET /api/av/threats?slug=<machine>&window=24h — recent threat events","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"av.ts"}},"/api/cf/sites":{"get":{"tags":["Other"],"summary":"GET /api/cf/sites?slug=<machine_slug>","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts"},"post":{"tags":["Other"],"summary":"POST /api/cf/sites — register a site","responses":{"200":{"description":"OK"},"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"cf.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/cf/sites/{id}":{"get":{"tags":["Other"],"summary":"GET /api/cf/sites/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts"}},"/api/cf/sites/{id}/analytics":{"get":{"tags":["Other"],"summary":"GET /api/cf/sites/:id/analytics?window=60z|24h|7d","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts"}},"/api/cf/sites/{id}/purge":{"post":{"tags":["Other"],"summary":"POST /api/cf/sites/:id/purge","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/cf/sites/{id}/rules":{"post":{"tags":["Other"],"summary":"POST /api/cf/sites/:id/rules","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/cf/sites/{id}/rules/{rule_id}":{"delete":{"tags":["Other"],"summary":"DELETE /api/cf/sites/:id/rules/:rule_id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"rule_id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cf.ts"}},"/api/chain/{motherSlug}/anchor":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:motherSlug/anchor","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"motherSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{motherSlug}/anchored":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:motherSlug/anchored Pseudonymous overview of every private machine anchoring here.","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"motherSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts"}},"/api/chain/{motherSlug}/anchors":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:motherSlug/anchors","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"motherSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"private_id_hash","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts"}},"/api/chain/{slug}/activity":{"get":{"tags":["Chain & State"],"summary":"9b. GET /api/chain/:slug/activity — typed, paginated audit feed AUDIT-EVERYTHING Phase 5: the observer's API. Every audited action a machine has taken, newest-first, filterable by transition type, with a Zeq","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/admins":{"get":{"tags":["Chain & State"],"summary":"1. GET /api/chain/:slug/admins","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts"},"post":{"tags":["Chain & State"],"summary":"2. POST /api/chain/:slug/admins Body: { zid: string, role: \"admin\" | \"operator\" | \"viewer\" }","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/admins/{zid}":{"delete":{"tags":["Chain & State"],"summary":"4. DELETE /api/chain/:slug/admins/:zid","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts"},"patch":{"tags":["Chain & State"],"summary":"3. PATCH /api/chain/:slug/admins/:zid Body: { role: \"admin\" | \"operator\" | \"viewer\" }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/analytics":{"get":{"tags":["Chain & State"],"summary":"15.8 GET /api/chain/:slug/analytics — per-machine sparkline data EX.H (2026-05-19). Bins audit_log rows into N buckets over the last `windowZeqonds` Zeqonds. Pure COUNT(*) GROUP BY — no fabricated values. Publ","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"buckets","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/api-keys":{"get":{"tags":["Chain & State"],"summary":"9. GET /api/chain/:slug/api-keys — list (no raw values)","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts"},"post":{"tags":["Chain & State"],"summary":"9. POST /api/chain/:slug/api-keys — mint a developer API key Body: { name: string, scope?: 'read'|'write'|'admin', rate_limit_tier?: string, expires_at?: ISO-8601 } admin+ only. The raw key is returned","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/api-keys/{id}":{"delete":{"tags":["Chain & State"],"summary":"10. DELETE /api/chain/:slug/api-keys/:id — revoke","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts"}},"/api/chain/{slug}/app-event":{"post":{"tags":["Chain & State"],"summary":"9d. POST /api/chain/:slug/app-event — mini-app audit hook AUDIT-EVERYTHING Phase 3: client-only mini-apps (compress, mail, av, …) call this so their primary action lands in the observer. Owner-only; th","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/at":{"get":{"tags":["Chain & State"],"summary":"api/chain/:slug/at?zeqond=N","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"share_token","in":"query","required":false,"schema":{"type":"string"}},{"name":"zeqond","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"timeMachine.ts"}},"/api/chain/{slug}/audit/decrypt":{"post":{"tags":["Chain & State"],"summary":"admin role does NOT suffice — only owner. The intent is \"review my own audit history\", not \"read every other admin's actions\". A separate global admin path (legal hold) would live elsewhere with higher gating.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/awareness/status":{"get":{"tags":["Chain & State"],"summary":"Public read — same canRead gate as /state. The numbers are aggregate counters per origin, not per-row data, so even a share-token caller gets to see the integrity state of the chain they're allowed to read.","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/block":{"get":{"tags":["Chain & State"],"summary":"10. GET /api/chain/:slug/block?zeqond=N — snapshot at N","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"proof","in":"query","required":false,"schema":{"type":"string"}},{"name":"zeqond","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/connection":{"post":{"tags":["Chain & State"],"summary":"7. POST /api/chain/:slug/connection — connection event","responses":{"201":{"description":"Created"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts":{"get":{"tags":["Chain & State"],"summary":"2. GET /api/chain/:slug/contracts — list contracts","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Chain & State"],"summary":"1. POST /api/chain/:slug/contracts — create contract","responses":{"200":{"description":"OK"},"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}":{"get":{"tags":["Chain & State"],"summary":"3. GET /api/chain/:slug/contracts/:id — get contract + recent transitions","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Chain & State"],"summary":"overwrites the live row and bumps current_version_no. Rollback inserts a new version row (the audit trail stays linear — history never rewrites).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/audit":{"get":{"tags":["Chain & State"],"summary":"5. GET /api/chain/:slug/contracts/:id/audit — full transition history","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"from_zeqond","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"to_zeqond","in":"query","required":false,"schema":{"type":"string"}},{"name":"triggered_by","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/dry-run":{"post":{"tags":["Chain & State"],"summary":"what would fire / be filtered / pass. No audit rows, no fires, no watermarks, no compute. Pure debug primitive.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/export":{"get":{"tags":["Chain & State"],"summary":"Returns a portable envelope of the contract's definition + metadata. Owner-only, no charge. Omits runtime state (audit, watermarks, secrets).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/fire-now":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/contracts/:id/fire-now","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/freeze":{"post":{"tags":["Chain & State"],"summary":"fires. The row stays in the DB so audit history is preserved. To free up scheduler capacity, frozen contracts also have their next_fire cleared.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/integrity":{"get":{"tags":["Chain & State"],"summary":"Public-read, returns the stored hash + the live re-hash. If they differ, the contract has been tampered with at the DB level.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts"}},"/api/chain/{slug}/contracts/{id}/next-fires":{"get":{"tags":["Chain & State"],"summary":"Predict the next N fires for time-based triggers (one_shot/recurring/cron). Event-triggered contracts return empty + a note. Owner-only, no charge.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/pause":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/contracts/:id/pause","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/preview":{"get":{"tags":["Chain & State"],"summary":"Cheap, GET-only, owner-only, no charge. The IDE polls this every ~5 Z to give a live reactor view.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/resume":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/contracts/:id/resume","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/rollback":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/contracts/:id/rollback","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/skip-next":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/contracts/:id/skip-next","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/transition":{"post":{"tags":["Chain & State"],"summary":"4. POST /api/chain/:slug/contracts/:id/transition — execute transition","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"423":{"description":"Locked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/transitions/stream":{"get":{"tags":["Chain & State"],"summary":"Push every successful transition for this contract.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/verify":{"post":{"tags":["Chain & State"],"summary":"6. POST /api/chain/:slug/contracts/:id/verify — verify entire proof chain","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/{id}/versions":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/contracts/:id/versions","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/{id}/versions/{n}":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/contracts/:id/versions/:n","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"n","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/contracts/custom":{"post":{"tags":["Chain & State"],"summary":"templated deploy path; the only difference is the body carries a `definition` blob instead of a template id.","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/contracts/import":{"post":{"tags":["Chain & State"],"summary":"slug. Runtime state (audit, fire_count, watermarks, secrets) starts clean — definition + metadata only.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/coverage":{"get":{"tags":["Chain & State"],"summary":"9c. GET /api/chain/:slug/coverage — which action types this machine emitted AUDIT-EVERYTHING Phase 5: the audit coverage map for one machine, grouped.","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/event":{"post":{"tags":["Chain & State"],"summary":"4. POST /api/chain/:slug/event — catch-all log","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/events":{"get":{"tags":["Chain & State"],"summary":"Read-only feed over contract_events for one slug. Filterable by event name + a since_zeqond watermark + a limit. Auth-gated by canRead so only the machine's members can tail. Emit is the only writer (M).","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"event","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"since_zeqond","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/events/stream":{"get":{"tags":["Chain & State"],"summary":"Push every contract_events insert for this slug to the connected client as an SSE frame. Heartbeat every 25s. Owner-only auth.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/explore":{"get":{"tags":["Chain & State"],"summary":"} Response shape `version` field marks the new shape so consumers can negotiate. Existing consumers that only read `rows` keep working.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"action","in":"query","required":false,"schema":{"type":"string"}},{"name":"events","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/explore/sse":{"get":{"tags":["Chain & State"],"summary":"12. GET /api/chain/:slug/explore/sse — live feed","responses":{"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"token","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/file":{"post":{"tags":["Chain & State"],"summary":"6. POST /api/chain/:slug/file — file-hash event","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/oracles":{"get":{"tags":["Chain & State"],"summary":"the contracts that carry definition.oracle, each enriched with its latest reading (value + Zeqond) and a small recent-history series so the UI can render a per-oracle card (target site · current value · sparkline) rather","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contracts.ts","security":[{"bearerAuth":[]}]}},"/api/chain/{slug}/pohc/validate":{"get":{"tags":["Chain & State"],"summary":"13. GET /api/chain/:slug/pohc/validate?from=A&to=B PoHC = Proof of Harmonic Convergence. Validates the audit chain integrity over a window using validateHashChain from zeqondClock.ts.","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/settings":{"patch":{"tags":["Chain & State"],"summary":"5. PATCH /api/chain/:slug/settings","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/site/file/{sha}":{"get":{"tags":["Chain & State"],"summary":"3. GET /api/chain/:slug/site/file/:sha — single file metadata","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"sha","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts"}},"/api/chain/{slug}/site/list":{"get":{"tags":["Chain & State"],"summary":"2. GET /api/chain/:slug/site/list — list pages","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"archived","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts"}},"/api/chain/{slug}/site/publish-key":{"delete":{"tags":["Chain & State"],"summary":"DELETE /api/chain/:slug/site/publish-key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts","security":[{"bearerAuth":[]}]},"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/site/publish-key","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts"},"post":{"tags":["Chain & State"],"summary":"Plaintext is only returned on issue; thereafter the proxy at /s/<slug>/sdk/zeq/<op> attaches it server-side from the encrypted blob.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/site/upload":{"post":{"tags":["Chain & State"],"summary":"1. POST /api/chain/:slug/site/upload — upload one page","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"siteAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/sources":{"get":{"tags":["Chain & State"],"summary":"shows a section per named source). The data lives in data_source_audits (display_name, source_type, events_seen/stamped, alive) — this is the read surface the Observer's Sources section uses. canRead-gated: private machi","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/{slug}/state":{"get":{"tags":["Chain & State"],"summary":"9. GET /api/chain/:slug/state — latest state","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"},"post":{"tags":["Chain & State"],"summary":"5. POST /api/chain/:slug/state — state-hash snapshot","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/stats":{"get":{"tags":["Chain & State"],"summary":"7. GET /api/chain/:slug/stats","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts"}},"/api/chain/{slug}/status":{"post":{"tags":["Chain & State"],"summary":"6. POST /api/chain/:slug/status Body: { status: \"active\" | \"paused\" | \"archived\" }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"stateMachineAdmin.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/tally/mint-rate":{"get":{"tags":["Chain & State"],"summary":"the global ticker drips it into `tokens_remaining` automatically. Cap is `max_supply` (lifetime issuance ceiling).","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"},"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/tally/mint-rate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/tally/supply":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/tally/supply","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"}},"/api/chain/{slug}/tally/token":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/tally/token — public token metadata","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"}},"/api/chain/{slug}/tally/token/{tokenId}":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/tally/token/:tokenId","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"}},"/api/chain/{slug}/tally/token/avatar":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/tally/token/avatar — decrypt + serve","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"},"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/tally/token/avatar — encrypted upload","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/tally/token/genesis":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/tally/token/genesis — one-shot create + lock","responses":{"200":{"description":"OK"}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/tally/tokens":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/:slug/tally/tokens","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts"}},"/api/chain/{slug}/tally/verify":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/tally/verify","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tally.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/tx/submit":{"post":{"tags":["Chain & State"],"summary":"8. POST /api/chain/:slug/tx/submit — contract transition (stub for 6.1.N integration) ─","responses":{"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"501":{"description":"Not implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/{slug}/unlock":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/:slug/unlock","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/active":{"get":{"tags":["Chain & State"],"summary":"Returns the top public machines by transition count in the last N Zeqonds. Used by the network-home \"Most active this Zeqond\" widget. Window defaults to 60 Zeqonds (≈47s wall-clock). Private machines never appear.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/aggregate/list":{"get":{"tags":["Chain & State"],"summary":"Phase 6.1.U — aggregator-friendly list of every public state machine. Distinct from /chain/state-machines which mixes the caller's own private machines with public ones. This endpoint is anonymous-safe by design: only is","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/aggregate/sse":{"get":{"tags":["Chain & State"],"summary":"One SSE per consumer (e.g. an external aggregator) replaces N per-machine subscriptions. ONLY public-machine events reach this channel — private machines never leak. The chain.ts publish path (recordEvent) gates the publ","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/fleet":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/fleet","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/newest":{"get":{"tags":["Chain & State"],"summary":"15.4 GET /api/chain/newest — newest registered public machines Network-home \"Latest registered machines\" panel. Newest-first by genesis_zeqond. Privacy: is_public=true only.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/recent":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/recent?limit=50&type=<optional> Returns newest-first. Cached for 1 Zeqond (777ms) — fresh enough for the live feed under HulyaPulse cadence.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"before","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/rejection-log":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/rejection-log","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pulseRejectionLog.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/seal":{"get":{"tags":["Chain & State"],"summary":"it binds, with every constant and recipe a stranger needs to verify the whole thing OFFLINE (tools/verify-zeq-chain.mjs — also served at /verify-zeq-chain.mjs). Distribution of a self-verifying artifact, not an external","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"seals","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/state-machines":{"get":{"tags":["Chain & State"],"summary":"2. GET /api/chain/state-machines — list","responses":{"200":{"description":"OK"}},"parameters":[{"name":"mine","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"},"post":{"tags":["Chain & State"],"summary":"1. POST /api/chain/state-machines — spin up","responses":{"201":{"description":"Created"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/state-machines/{slug}":{"get":{"tags":["Chain & State"],"summary":"3. GET /api/chain/state-machines/:slug — metadata","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/chain/state-machines/{slug}/anchor-config":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/state-machines/:slug/anchor-config","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Chain & State"],"summary":"PUT /api/chain/state-machines/:slug/anchor-config","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/state-machines/{slug}/anchor-key/rotate":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/state-machines/:slug/anchor-key/rotate","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/state-machines/{slug}/share/disable":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/state-machines/:slug/share/disable","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/state-machines/{slug}/share/set":{"post":{"tags":["Chain & State"],"summary":"POST /api/chain/state-machines/:slug/share/set","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chain/verify-anchor":{"get":{"tags":["Chain & State"],"summary":"GET /api/chain/verify-anchor Verifier helper. Recomputes id_hash from (slug, genesis_hash) and reports. PUBLIC — that's the whole point.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"genesis_hash","in":"query","required":false,"schema":{"type":"string"}},{"name":"mother","in":"query","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"privateAnchor.ts"}},"/api/chat/free":{"post":{"tags":["Other"],"summary":"POST /api/chat/free","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"chatFree.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/chat/free/quota":{"get":{"tags":["Other"],"summary":"GET /api/chat/free/quota — UI inspection.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"chatFree.ts","security":[{"bearerAuth":[]}]}},"/api/community-operators":{"get":{"tags":["Other"],"summary":"GET /community-operators","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"tenant","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts"}},"/api/community-operators/{id}":{"get":{"tags":["Other"],"summary":"GET /community-operators/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts"}},"/api/community-operators/{id}/open-vote":{"post":{"tags":["Other"],"summary":"POST /community-operators/:id/open-vote","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/community-operators/{id}/promote":{"post":{"tags":["Other"],"summary":"this), and an explicit { confirm: true } is mandatory: a machine may PROPOSE and the vote may APPROVE, but a person must take this deliberate step. The actual operator-registry.json merge remains a maintainer commit (sou","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/community-operators/{id}/resolve":{"post":{"tags":["Other"],"summary":"POST /community-operators/:id/resolve Deterministic; anyone may trigger after the window closes. Tallies, then RETURNS every staked envelope (clears locked_for_vote, marks votes unloc","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/community-operators/{id}/stake":{"post":{"tags":["Other"],"summary":"POST /community-operators/:id/stake","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/community-operators/propose":{"post":{"tags":["Other"],"summary":"POST /community-operators/propose","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"communityOperators.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/compress":{"post":{"tags":["Other"],"summary":"POST /compress","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqCompress.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/compute/usage":{"get":{"tags":["Other"],"summary":"GET /api/compute/usage","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"computeUsage.ts","security":[{"bearerAuth":[]}]}},"/api/conformance/badge.svg":{"get":{"tags":["Other"],"summary":"GET /api/conformance/badge.svg","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"conformance.ts"}},"/api/constants":{"get":{"tags":["Other"],"summary":"Physical Constants","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/constants/{key}":{"get":{"tags":["Other"],"summary":"GET /api/constants/:key","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/contact":{"post":{"tags":["Other"],"summary":"POST /api/contact","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"marketing.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contracts/generate":{"post":{"tags":["Contracts"],"summary":"route","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contractGenerate.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contracts/public":{"get":{"tags":["Contracts"],"summary":"1. GET /api/contracts/public — directory list (paginated, filterable)","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"string"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"trigger","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/public/{id}":{"get":{"tags":["Contracts"],"summary":"2. GET /api/contracts/public/:id — single contract + status","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/public/{id}/audit":{"get":{"tags":["Contracts"],"summary":"4. GET /api/contracts/public/:id/audit — recent transitions","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/public/{id}/next-fires":{"get":{"tags":["Contracts"],"summary":"3. GET /api/contracts/public/:id/next-fires — predict next 10 fires","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/public/{id}/subscribers":{"get":{"tags":["Contracts"],"summary":"5. GET /api/contracts/public/:id/subscribers — cross-machine listeners","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/public/{id}/superposition":{"get":{"tags":["Contracts"],"summary":"(the /prove result object). It does NOT compute and does NOT touch the mathematics — same doctrine as sealCompute. zsp_envelope stays sealed; we never read ciphertext for display.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractsPublic.ts"}},"/api/contracts/simulate":{"post":{"tags":["Contracts"],"summary":"C3 (2026-06-13): accept a machine API key (Bearer zsm_*) as well as a session, so a CI pipeline can lint → simulate → deploy with one credential. The inline dry-run only uses the caller zid as a created_by fallback; the","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contractsSimulate.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contracts/templates":{"get":{"tags":["Contracts"],"summary":"GET /api/contracts/templates","responses":{"200":{"description":"OK"}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractTemplates.ts"}},"/api/contracts/templates/{id}":{"get":{"tags":["Contracts"],"summary":"GET /api/contracts/templates/:id","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractTemplates.ts"}},"/api/contracts/templates/{id}/deploy":{"post":{"tags":["Contracts"],"summary":"POST /api/contracts/templates/:id/deploy","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contractTemplates.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contracts/templates/categories":{"get":{"tags":["Contracts"],"summary":"GET /api/contracts/templates/categories","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"contractTemplates.ts"}},"/api/contribute/bond":{"post":{"tags":["Other"],"summary":"Marks envelopes immovable IN PLACE. They are not moved, and `issued_to` is untouched: after bonding they are still yours, and the vault still lists them as yours, because they are.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contribute/census":{"get":{"tags":["Other"],"summary":"It is only publishable BECAUSE it carries no identity — how many machines are contributing, never which. A contributor can also read it before joining, to see the size of the network they are being asked to stake into.","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts"}},"/api/contribute/heartbeat":{"post":{"tags":["Other"],"summary":"Deliberately CANNOT change mode — see contributionSeats.heartbeat for why a high-frequency call that could also flip a mode is a replay attack with extra steps.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contribute/job":{"get":{"tags":["Other"],"summary":"GET /api/contribute/job","responses":{"200":{"description":"OK"},"204":{"description":"No content"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","description":"Next replication job for this seat. Auth: session or device key (`zsm_`). The seat must be `contributing` and live (heartbeat). Returns 204 when nothing is queued. @returns {ok:true, job:{id, operators, inputs, required_engine, expires_zeqond}}","security":[{"bearerAuth":[]}]}},"/api/contribute/job/{id}/result":{"post":{"tags":["Other"],"summary":"POST /api/contribute/job/:id/result","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"contribute.ts","description":"Answer a replication job with the local engine's value. Adjudicated against the node's own value; a reproduced answer redirects the free-funded envelope to this seat. Body: `{ value:number, zeq_proof?:string, elapsed_zeqonds?:number }`. @returns {ok:true, verdict:\"reproduced\"|\"diverged\", envelope_token, minted_to}","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contribute/mode":{"post":{"tags":["Other"],"summary":"POST /api/contribute/mode","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contribute/policy":{"get":{"tags":["Other"],"summary":"Deliberately public. You cannot be asked to stake a thousand envelopes without being able to read, in advance and without an account, exactly what is required, what it secures and what you lose if you cheat. It also give","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts"}},"/api/contribute/release":{"post":{"tags":["Other"],"summary":"POST /api/contribute/release","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/contribute/share":{"get":{"tags":["Other"],"summary":"GET /api/contribute/share","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","description":"The one-switch summary: what this identity shares and what it earned. Same numbers in the Vault, the launcher and the CLI. Auth: session or device key. @returns {ok:true, zid, mode, live, engine_version, share:{jobs_done, jobs_reproduced, jobs_diverged, cpu_zeqonds_supplied, envelopes_earned, last_job_zeqond, queued}}","security":[{"bearerAuth":[]}]}},"/api/contribute/status":{"get":{"tags":["Other"],"summary":"GET /api/contribute/status","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"contribute.ts","security":[{"bearerAuth":[]}]}},"/api/credits/bond":{"post":{"tags":["Other"],"summary":"POST /api/credits/bond","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"credits.ts","description":"ECON v5 — bond a tier for 30 days from bought (non-expiring) hours. Body: `{ tier }`.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/credits/from-coin":{"post":{"tags":["Other"],"summary":"POST /api/credits/from-coin","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"credits.ts","description":"ECON v5 — burn whole earned ZEQ coins into compute-hours (1 coin = 1 credit = 1 hour). The coins leave supply (tokens_burned); nothing is minted; the treasury is untouched. With `bond_tier` the coins become a 30-day cycle bond for that tier (whole coins ≥ the tier's hours); without it they become non-expiring fuel. Body: `{ zeq: number, bond_tier?: \"starter\"|\"builder\"|\"advanced\"|\"architect\" }`. @returns {ok:true, zeq_burned, fuel_hours, fuel_plancks} | {ok:true, zeq_burned, bonded:{…}, cycle:{…}}","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/daemon/health":{"get":{"tags":["Other"],"summary":"Health and status endpoints","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqDaemon.ts"}},"/api/daemon/landauer":{"get":{"tags":["Other"],"summary":"GET /api/daemon/landauer","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqDaemon.ts"}},"/api/daemon/pulse":{"get":{"tags":["Other"],"summary":"GET /api/daemon/pulse","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqDaemon.ts"}},"/api/daemon/status":{"get":{"tags":["Other"],"summary":"GET /api/daemon/status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqDaemon.ts"}},"/api/daemon/tesc":{"get":{"tags":["Other"],"summary":"GET /api/daemon/tesc","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqDaemon.ts"}},"/api/decompress":{"post":{"tags":["Other"],"summary":"POST /decompress","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqCompress.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/demo-key":{"get":{"tags":["Accounts & Keys"],"summary":"Shared demo key (10/day, spin-up only — mint your own via POST /api/demo-key/mint).","responses":{"200":{"description":"{ key, plan, dailyLimit }"}}}},"/api/demo-key/mint":{"post":{"tags":["Accounts & Keys"],"summary":"demo-key (one shared key, IP-windowed), each call here mints a FRESH key with its own isolated compute budget; when the budget is spent the caller mints another. IP-rate-limited (same limiter) so it can't spawn unlimite","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"marketing.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/dns/lookup/{address}":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/dns/lookup/:address","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"GET /dns/lookup/:address Look up a node by its mathematical address Output: { address, nodeId, endpoint, status } Auth: None (public lookup) Rate limit: 60/min"}},"/api/dns/register":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/dns/register","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqMesh.ts","description":"POST /dns/register Register a domain-to-node binding Input: { domain: string, nodeId: string, endpoint: string, proof: string } Output: { address, nodeId, endpoint, zeqond, proofHash } Auth: API key required Rate limit: 5/min","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/dns/resolve":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/dns/resolve","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"POST /dns/resolve Resolve a domain to a node address Input: { domain: string } Output: { domain, address, nodeId, endpoint, zeqond, proofHash } Auth: API key or none for public domains Rate limit: 60/min","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/dns/status":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/dns/status","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"GET /dns/status Get DNS registry health"}},"/api/donate/addresses":{"get":{"tags":["Other"],"summary":"Public: deposit addresses + price snapshot","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"cryptoDonations.ts"}},"/api/donate/crypto/claim":{"post":{"tags":["Other"],"summary":"Public: submit a TX hash to claim N months of credit","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"cryptoDonations.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/donate/crypto/status/{id}":{"get":{"tags":["Other"],"summary":"Public: poll status of a claim","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cryptoDonations.ts"}},"/api/donors/wall":{"get":{"tags":["Other"],"summary":"What crypto buys is compute-hours at the one price (USD ÷ usd_per_hour), and the preview is computed client-side from `hours.usd_per_hour` in GET /api/donate/addresses against the live price oracle.","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"cryptoDonations.ts"}},"/api/download/source":{"get":{"tags":["Other"],"summary":"PROJECT_ROOT was used by the retired /source.zip handler that walked the live filesystem (Phase F batch #15). Removed because it's no longer referenced — see the route comment below for full context.","responses":{"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"download.ts"}},"/api/download/source.zip":{"get":{"tags":["Other"],"summary":"We respond 410 Gone so monitoring catches anyone who was scripting against it. Switch to 404 once we're sure no internal tooling depends on the path.","responses":{"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"download.ts"}},"/api/e2ee/escrow":{"delete":{"tags":["Other"],"summary":"Turn escrow OFF (self-custody) — delete the caller's own escrow row.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"e2eeKeys.ts","security":[{"bearerAuth":[]}]},"get":{"tags":["Other"],"summary":"GET /api/e2ee/escrow","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"e2eeKeys.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"The blob is CLIENT-ENCRYPTED under the user's recovery password; the server only stores it and can never open it. All three routes act on the CALLER'S OWN ZID only — nobody can read or overwrite another user's escrow.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"e2eeKeys.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/e2ee/keys":{"get":{"tags":["Other"],"summary":"Batch fetch (for sealing to a conversation's members).","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zids","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"e2eeKeys.ts"},"post":{"tags":["Other"],"summary":"Publish / rotate the caller's own public key.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"e2eeKeys.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/e2ee/keys/{zid}":{"get":{"tags":["Other"],"summary":"Fetch one ZID's published key (public).","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"e2eeKeys.ts"}},"/api/endpoints":{"get":{"tags":["Other"],"summary":"GET /api/mcp (discovery / health) GET /api/endpoints — the public endpoint manifest as plain JSON Powers the API Explorer page and any client that wants the map wi","responses":{"200":{"description":"OK"}},"parameters":[{"name":"auth","in":"query","required":false,"schema":{"type":"string"}},{"name":"domain","in":"query","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mcp.ts"}},"/api/equation-study":{"get":{"tags":["Other"],"summary":"GET /equation-study","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"author","in":"query","required":false,"schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"equationStudy.ts"},"post":{"tags":["Other"],"summary":"POST /equation-study","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"equationStudy.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/equation-study/{id}":{"get":{"tags":["Other"],"summary":"GET /equation-study/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"equationStudy.ts"}},"/api/equations":{"get":{"tags":["Other"],"summary":"Core Equations (informational)","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/experiments":{"get":{"tags":["Other"],"summary":"Premade Experiments","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/explorer/agent-files":{"get":{"tags":["Chain & State"],"summary":"15.7 GET /api/explorer/agent-files — public agent-file activity summary EX.F (2026-05-19). Count-only directory (paths + role + version, never content) of files written by agents whose owner machine is_public=true.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"agent_zid","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/explorer/computations":{"get":{"tags":["Chain & State"],"summary":"GET /api/explorer/computations","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"operator","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"explorer.ts"}},"/api/explorer/computations/{id}":{"get":{"tags":["Chain & State"],"summary":"GET /api/explorer/computations/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"explorer.ts"}},"/api/explorer/pages":{"get":{"tags":["Chain & State"],"summary":"15.6 GET /api/explorer/pages — network-wide hosted pages directory EX.F (2026-05-19). Every published page on the network, joined to state_machines with is_public=true. Excludes the launcher (page_slug='index').","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/explorer/sources":{"get":{"tags":["Chain & State"],"summary":"GET /api/explorer/sources","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/explorer/stats":{"get":{"tags":["Chain & State"],"summary":"GET /api/explorer/stats","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"explorer.ts"}},"/api/explorer/stream":{"get":{"tags":["Chain & State"],"summary":"GET /api/explorer/stream","responses":{"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"explorer.ts"}},"/api/explorer/tags":{"get":{"tags":["Chain & State"],"summary":"15.10 GET /api/explorer/tags — tag-bus directory (Phase X) EX.J (2026-05-19). Lists distinct contract_event tags, with emit_count, emitter slugs, and last_seen Zeqond. Only public machines feed the bus.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachine.ts"}},"/api/external-engines":{"get":{"tags":["Other"],"summary":"GET /api/external-engines","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"enabled","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"externalEngines.ts"}},"/api/external-engines/{id}":{"get":{"tags":["Other"],"summary":"GET /api/external-engines/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"externalEngines.ts"}},"/api/external-engines/{id}/probe":{"get":{"tags":["Other"],"summary":"GET /api/external-engines/:id/probe","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"externalEngines.ts"}},"/api/files/_meta/health":{"get":{"tags":["Other"],"summary":"DEV utility: route count + storage path (no PII)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"files.ts"}},"/api/files/{id}/chunk":{"post":{"tags":["Other"],"summary":"POST /api/files/:id/chunk — append one chunk","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/files/{id}/collect":{"post":{"tags":["Other"],"summary":"POST /api/files/:id/collect","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","description":"The client calls this only AFTER it has successfully written the bytes into local device storage. That ordering matters: a download that fails halfway must not count as collected, or we would delete the only remaining copy of someone's file. Confirmation is the client's job precisely because only the client knows the write succeeded. Once every registered recipient has confirmed, the server drops the bytes — it was only ever the transport.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/files/{id}/complete":{"post":{"tags":["Other"],"summary":"POST /api/files/:id/complete — finalizer","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/files/{id}/download":{"get":{"tags":["Other"],"summary":"GET /api/files/:id/download — owner OR share token","responses":{"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"share_token","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}]}},"/api/files/{id}/share":{"post":{"tags":["Other"],"summary":"POST /api/files/:id/share — mint a share URL","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/files/{id}/status":{"get":{"tags":["Other"],"summary":"GET /api/files/:id/status — lifetime without downloading Lets the mail UI show \"expires in 6h\" or \"expired\" on an attachment chip without pulling the bytes down just to find out.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"share_token","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}]}},"/api/files/init":{"post":{"tags":["Other"],"summary":"POST /api/files/init — multi-chunk session init","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/files/upload":{"post":{"tags":["Other"],"summary":"POST /api/files/upload — single-shot upload","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"files.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleet.ts","description":"GET /api/fleet requireAuth, not optionalAuth. A roster has no anonymous reading: there is no such thing as \"the fleet\" without an identity to own it, so an unauthenticated caller is a 401, never an empty list. An empty list would be a lie that reads as \"you own nothing\" rather than \"we do not know who you are\".","security":[{"bearerAuth":[]}]}},"/api/fleet-records/{collection}/{k}":{"get":{"tags":["Mesh & Nodes"],"summary":"owner GET (failover + opportunistic repair)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"k","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts"},"put":{"tags":["Mesh & Nodes"],"summary":"owner PUT","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"k","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet-records/{collection}/{k}/repair":{"post":{"tags":["Mesh & Nodes"],"summary":"owner repair","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"k","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet-records/peer":{"post":{"tags":["Mesh & Nodes"],"summary":"peer (node→node, mesh-authed)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet-records/peer/{collection}/{k}":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet-records/peer/:collection/:k","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"k","in":"path","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts"}},"/api/fleet-records/rebalance":{"post":{"tags":["Mesh & Nodes"],"summary":"rebalance (loopback-gated operator op)","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetRecords.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/{slug}/govern":{"post":{"tags":["Mesh & Nodes"],"summary":"1. Propose","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetGovernance.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/{slug}/invite":{"post":{"tags":["Mesh & Nodes"],"summary":"1. POST /api/fleet/:slug/invite","responses":{"200":{"description":"OK"},"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetInvites.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/{slug}/parties":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet/:slug/parties","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetGovernance.ts","description":"Every party to a machine, and which of them is the owner of record. Visible to the parties themselves — you are entitled to know who else can act on a machine you share. Not public: on a public machine anyone can already read owner_zid, but the CO-OWNER list is a working relationship between people and is nobody else's business.","security":[{"bearerAuth":[]}]}},"/api/fleet/governance":{"get":{"tags":["Mesh & Nodes"],"summary":"2. What is waiting for MY equation","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetGovernance.ts","security":[{"bearerAuth":[]}]}},"/api/fleet/governance/{id}/approve":{"post":{"tags":["Mesh & Nodes"],"summary":"3. Approve, with an equation proof","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetGovernance.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/governance/{id}/cancel":{"post":{"tags":["Mesh & Nodes"],"summary":"4. Withdraw","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetGovernance.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/invites":{"get":{"tags":["Mesh & Nodes"],"summary":"2. GET /api/fleet/invites Invitations addressed to ME. Scoped by the session ZID, never by a parameter: a parameter is a thing the caller gets to choose.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetInvites.ts","security":[{"bearerAuth":[]}]}},"/api/fleet/invites/{id}/accept":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/fleet/invites/:id/accept","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetInvites.ts","description":"The invited identity accepts. WHAT MAKES THIS SAFE The invite is matched on `target_zid = <the SESSION's zid>`. The caller never names who they are; it comes from a verified v3 token, and a v3 token is obtainable only by proving knowledge of the equation behind that ZID. So an invite cannot be accepted by the inviter, by another co-owner, or by us — only by the person it names, demonstrating they still hold their key. Nothing about the invite id is a secret, and it does not need to be: the id alone is useless without the matching session. That is deliberate, because a link that grants ownership to whoever opens it is a link that grants ownership to whoever finds it in a forwarded email.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/nodes":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet/nodes","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts"}},"/api/fleet/placement":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet/placement","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"key","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts"}},"/api/fleet/reconcile":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/fleet/reconcile","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/replicas":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet/replicas","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"key","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts"}},"/api/fleet/route":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/fleet/route","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"421":{"description":"Misdirected request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"key","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts"}},"/api/fleet/spine":{"get":{"tags":["Mesh & Nodes"],"summary":"Phase 6 — the fleet's cross-witnessed VDF spine (peers' verified seal heads).","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts"}},"/api/fleet/spine/verify":{"post":{"tags":["Mesh & Nodes"],"summary":"Phase 6 — verify a seal in isolation (genesis prevY for index 0, else supplied).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/fleet/spine/witness":{"post":{"tags":["Mesh & Nodes"],"summary":"Phase 6 — ingest a peer's seal head: verify the VDF + record it (the HTTP cross-anchor path; the mesh delivers the same events automatically).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"fleetPlacement.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/analyze":{"post":{"tags":["Other"],"summary":"POST /genesis/analyze","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/execute":{"post":{"tags":["Other"],"summary":"Step 7: Verify result — check if precision target was met","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/gaps":{"get":{"tags":["Other"],"summary":"GET /genesis/gaps — View the gap log","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}]}},"/api/genesis/generate":{"post":{"tags":["Other"],"summary":"POST /genesis/generate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/promote/{id}":{"post":{"tags":["Other"],"summary":"POST /genesis/promote/:id — Promote protocol to permanent","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/protocol/{id}":{"get":{"tags":["Other"],"summary":"GET /genesis/protocol/:id — Get a specific protocol","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}]}},"/api/genesis/protocols":{"get":{"tags":["Other"],"summary":"GET /genesis/protocols — List all generated protocols","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}]}},"/api/genesis/query-to-equation":{"post":{"tags":["Other"],"summary":"POST /genesis/query-to-equation — Convert query to equation","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/genesis/stats":{"get":{"tags":["Other"],"summary":"GET /genesis/stats — Engine statistics (public)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqGenesis.ts"}},"/api/genesis/status":{"get":{"tags":["Other"],"summary":"GET /api/genesis/status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"genesis.ts"}},"/api/handshake":{"post":{"tags":["Other"],"summary":"POST /node/handshake","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqNode.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/health":{"get":{"tags":["System"],"summary":"Liveness probe — reports the live git SHA and build time.","responses":{"200":{"description":"OK"}}}},"/api/healthz":{"get":{"tags":["System"],"summary":"GET /api/healthz","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"health.ts"}},"/api/hite/decrypt":{"post":{"tags":["Other"],"summary":"POST /api/hite/decrypt","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"hite.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hite/encrypt":{"post":{"tags":["Other"],"summary":"POST /api/hite/encrypt","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hite.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hite/placement":{"get":{"tags":["Other"],"summary":"GET /api/hite/placement","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hitePlacement.ts","security":[{"bearerAuth":[]}]}},"/api/hite/records":{"post":{"tags":["Other"],"summary":"POST /api/hite/records Upsert one sealed record. Body is exactly what hite-client `seal()` produces.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"421":{"description":"Misdirected request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hiteRecords.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hite/records/{collection}":{"get":{"tags":["Other"],"summary":"GET /api/hite/records/:collection List the owner's records in a collection. Returns blind indexes + metadata ONLY — never the blob, and there is no plaintext key to return.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hiteRecords.ts","security":[{"bearerAuth":[]}]}},"/api/hite/records/{collection}/{bi}":{"delete":{"tags":["Other"],"summary":"DELETE /api/hite/records/:collection/:bi","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"bi","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hiteRecords.ts","security":[{"bearerAuth":[]}]},"get":{"tags":["Other"],"summary":"GET /api/hite/records/:collection/:bi Fetch one sealed record by blind index. Returns exactly the fields the client needs to reconstruct AAD and unseal — all opaque to the node.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"bi","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hiteRecords.ts","security":[{"bearerAuth":[]}]}},"/api/hite/storage/profile":{"post":{"tags":["Other"],"summary":"POST /api/hite/storage/profile","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hiteStorage.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hite/storage/profile/{backend}":{"delete":{"tags":["Other"],"summary":"DELETE /api/hite/storage/profile/:backend","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"backend","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hiteStorage.ts","security":[{"bearerAuth":[]}]},"get":{"tags":["Other"],"summary":"GET /api/hite/storage/profile/:backend","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"backend","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hiteStorage.ts","security":[{"bearerAuth":[]}]}},"/api/hite/storage/profiles":{"get":{"tags":["Other"],"summary":"GET /api/hite/storage/profiles Backend ids + active flag only — never the sealed creds.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hiteStorage.ts","security":[{"bearerAuth":[]}]}},"/api/hpz/auto":{"post":{"tags":["Other"],"summary":"POST /api/hpz/auto","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"POST /api/hpz/auto — English in, a SUGGESTION out, and a number only when the suggestion was not a near-tie. Scores the query against all 1,612 operators, extracts the quantities from the text, binds them to the operator's symbols BY DIMENSION, and computes when the binding is unambiguous. When two symbols could take the same quantity it refuses — a confident number from an ambiguous reading is the failure this pipeline exists to prevent. WORD MATCHING DOES NOT UNDERSTAND THE QUESTION. Measured on ten ordinary questions, three picks were wrong and nothing in the answer showed it — \"gravitational acceleration at the surface of Earth\" chose NANO_SURFACE, the surface area of nanoparticles. Below a margin of 3 over the runner-up nothing is computed and the candidates are returned instead; above it the answer carries `selection`, which says how the operator was chosen and that it is a suggestion. The candidate list is always returned, so the choice is inspectable rather than magical.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hpz/compute":{"post":{"tags":["Other"],"summary":"POST /api/hpz/compute","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"POST /api/hpz/compute — the seven-step wizard. session+key, like every other compute surface.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hpz/convert":{"post":{"tags":["Other"],"summary":"POST /api/hpz/convert","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"POST /api/hpz/convert — { value, dim: [M,L,T,I,Θ,N,J], to: \"hpz\" | \"si\" } The dimension vector is the same one `lib/dimensions.ts` uses, so a caller that already speaks the framework's dimensions needs no new vocabulary.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hpz/framework":{"get":{"tags":["Other"],"summary":"GET /api/hpz/framework","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"GET /api/hpz/framework — the framework, stated once, machine-readable.","security":[{"bearerAuth":[]}]}},"/api/hpz/kernel":{"get":{"tags":["Other"],"summary":"GET /api/hpz/kernel","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"GET /api/hpz/kernel — the constants and the tick, on their own.","security":[{"bearerAuth":[]}]}},"/api/hpz/operator/{id}":{"get":{"tags":["Other"],"summary":"GET /api/hpz/operator/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"GET /api/hpz/operator/:id — what the registry says about one operator, and whether this solver can evaluate it. The honest answer includes \"no, and here is why\": ~half the catalogue is integrals, PDEs, series and tensor expressions, and a closed-form evaluator should say which kind rather than reporting an unexpected character.","security":[{"bearerAuth":[]}]}},"/api/hpz/replay":{"post":{"tags":["Other"],"summary":"POST /api/hpz/replay","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"Run a recipe and say what it produces. No SIGNATURE and no envelope — the arithmetic question, not the provenance one. (The route is still gated like every other HPZ route; keyless means no CRYPTOGRAPHIC key, not no auth.) `/hpz/verify` answers \"is this receipt genuine and self-consistent\", which needs a signature and a public key to hold it. This answers the arithmetic question underneath — does the recipe produce the number — and asking a reader to construct a sealed envelope to find that out puts a cryptographic dependency in front of a question that has none. Send a recipe, or a whole sealed claim and it will take the recipe out.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hpz/solve":{"post":{"tags":["Other"],"summary":"POST /api/hpz/solve","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"POST /api/hpz/solve — the unified solver, without the seven-step envelope. The same call the wizard's step 4 makes. Useful when a caller wants the number and its measured uncertainty and not the protocol around them — and it is the shape `reactorSurface.ts` would step: one solver, no solver key to resolve.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hpz/verify":{"post":{"tags":["Other"],"summary":"POST /api/hpz/verify","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hpz.ts","description":"POST /api/hpz/verify — check a sealed claim WITHOUT trusting the node. Three independent checks, and the third is the one the legacy envelope cannot offer: the claim carries its own recipe, so the value is re-derived here and compared. A holder who has this module and the public key needs nothing else.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hz/check/{label}":{"get":{"tags":["Other"],"summary":"GET /api/hz/check/:label","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hz.ts"}},"/api/hz/names/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/hz/names/:zid","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hz.ts","security":[{"bearerAuth":[]}]}},"/api/hz/register":{"post":{"tags":["Other"],"summary":"POST /api/hz/register body: { label, years?, payment: { method: \"credits\" | \"envelopes\", envelope_ids?: string[] }, machine_id? }","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"hz.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/hz/resolve/{name}":{"get":{"tags":["Other"],"summary":"GET /api/hz/resolve/:name","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"hz.ts"}},"/api/identity":{"get":{"tags":["Other"],"summary":"GET /api/identity","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"identity.ts"}},"/api/identity/home/{zid}":{"get":{"tags":["Other"],"summary":"user-facing","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"identityDirectory.ts","security":[{"bearerAuth":[]}]}},"/api/identity/peer/login-policy/{zid}":{"get":{"tags":["Other"],"summary":"node-to-node","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"protectedLogin.ts","description":"Peer read of the local policy row (signed). @returns {policy|null}"},"post":{"tags":["Other"],"summary":"POST /api/identity/peer/login-policy/:zid","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"protectedLogin.ts","description":"Peer write (signed over the fields). Applied only if the revision is newer.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/identity/peer/presence/{zid}":{"get":{"tags":["Other"],"summary":"node-to-node","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"identityDirectory.ts"}},"/api/kernel":{"get":{"tags":["Operators & Kernel"],"summary":"GET /api/kernel — full structured JSON","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"kernel.ts"}},"/api/kernel/demo":{"get":{"tags":["Operators & Kernel"],"summary":"GET /api/kernel/demo — cached three-body computation result","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"kernel.ts"}},"/api/kernel/live":{"get":{"tags":["Operators & Kernel"],"summary":"GET /api/kernel/live — re-run three-body computation, refresh cache","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"kernel.ts"}},"/api/kernel/prompt":{"get":{"tags":["Operators & Kernel"],"summary":"Full Zeq kernel prompt (LLM bootstrap).","responses":{"200":{"description":"Kernel markdown"}}}},"/api/kernel/skill":{"get":{"tags":["Operators & Kernel"],"summary":"GET /api/kernel/skill — JSON manifest with install instructions Programmatic install path: client GETs this, reads the install commands for its platform (claude-code / cowork / cursor / openai), and writes","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"kernel.ts"}},"/api/kernel/skill.md":{"get":{"tags":["Operators & Kernel"],"summary":"other skill-aware LLM clients can drop into their skills directory verbatim. Source of truth is buildKernelMarkdown() — change once, every install re-syncs on next pull. Same content as /.well-known/zeq-os-kernel.md but","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"kernel.ts"}},"/api/keyex/{slug}/handshake":{"post":{"tags":["Accounts & Keys"],"summary":"POST /api/keyex/:slug/handshake","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"keyEx.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/keyex/{slug}/pubkey":{"get":{"tags":["Accounts & Keys"],"summary":"GET /api/keyex/:slug/pubkey","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"keyEx.ts"}},"/api/keys/issue":{"post":{"tags":["Accounts & Keys"],"summary":"The middleware is permissive by design: no token → next(), a zeq_ak_/zsm_ bearer → next(). So adding it cannot lock out the legacy cookie path, and the handler keeps its own 401 for the genuinely-unauthenticated case.","responses":{"201":{"description":"Created"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"keys.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/keys/list":{"get":{"tags":["Accounts & Keys"],"summary":"GET /api/keys/list","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"keys.ts","description":"GET /api/keys/list — owner's active keys (cookie-auth, no Bearer required). F16 — the Portal Hub key panel needs to render BEFORE the user has any key to issue. /keys/me is gated behind authenticateKey (requires existing key); this thin endpoint mirrors the same cookie-auth path as /keys/issue and /keys/revoke so the panel can list, generate, revoke without ever needing the user to paste a key back."}},"/api/keys/me":{"get":{"tags":["Accounts & Keys"],"summary":"GET /api/keys/me","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"keys.ts","security":[{"bearerAuth":[]}]}},"/api/keys/revoke":{"post":{"tags":["Accounts & Keys"],"summary":"POST /api/keys/revoke","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"keys.ts","description":"POST /api/keys/revoke — kill an api key by id (cookie-auth, owner-checked). F16 — needed so the Portal can offer Generate / Delete on each key.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/keys/rotate":{"post":{"tags":["Accounts & Keys"],"summary":"POST /api/keys/rotate","responses":{"201":{"description":"Created"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"keys.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/llm/chat":{"post":{"tags":["Other"],"summary":"authed browser sessions (the canonical /apps/skills/ chatbot path) can reach this endpoint without minting a Bearer key on the client. The authenticateKey middleware short-circuits when both req.user and req.zeqAuth are","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"504":{"description":"Upstream timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"llmGateway.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/llm/key":{"post":{"tags":["Other"],"summary":"A10-F1 FIX: req.body guard protects destructure against empty body (500 → 400). async as of 2026-08-02: storing a key is now a durable write to ZSC rather than a synchronous Map.set, so this handler has to await it — and","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"llmGateway.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/llm/models":{"get":{"tags":["Other"],"summary":"GET /api/llm/models?provider=xxx","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"llmGateway.ts"}},"/api/llm/providers":{"get":{"tags":["Other"],"summary":"Async now: hasKey is a question about the vault, not about this process's memory. It was the only signal a user had for \"is the LLM configured?\", and it answered for one container out of fourteen.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"llmGateway.ts"}},"/api/machine/allocation":{"get":{"tags":["Other"],"summary":"GET /api/machine/allocation","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"allocation.ts","security":[{"bearerAuth":[]}]}},"/api/machines/top":{"get":{"tags":["Other"],"summary":"GET /api/machines/top","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"machinesLeaderboard.ts"}},"/api/mail/ai/compose-html":{"post":{"tags":["Other"],"summary":"POST /api/mail/ai/compose-html","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","description":"MAIL.HTML1 — generate an HTML email body from a description. Runs on the SENDER'S OWN provider and key. Nothing is proxied through a Foundation account and no Foundation quota is consumed: the prompt and the generated markup go to whichever provider that user configured in BYOK. If they have not configured one we say so explicitly (code NO_BYOK) rather than failing vaguely, because \"nothing happened\" is the worst possible answer. The model's output is sanitised with the same function used on send and on render. A model can be talked into emitting a <script> — by a hostile instruction pasted into the prompt, or simply by being asked — and that must not survive into anyone's inbox.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/aliases":{"get":{"tags":["Other"],"summary":"GET /mail/aliases","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /mail/aliases","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/aliases/{id}":{"delete":{"tags":["Other"],"summary":"DELETE /mail/aliases/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/blocklist":{"get":{"tags":["Other"],"summary":"GET /mail/blocklist","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /mail/blocklist { kind: \"address\"|\"domain\"|\"pattern\", value, reason? }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/blocklist/{id}":{"delete":{"tags":["Other"],"summary":"DELETE /mail/blocklist/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/contacts":{"get":{"tags":["Other"],"summary":"GET /mail/contacts Derived from message history: every distinct address the owner has sent to OR received from. No separate persistence — keeps the mail schema lean and cont","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Other"],"summary":"PUT /mail/contacts Save or update the detail for one address. Upsert, so the client does not have to know whether a record already exists.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/contacts/{id}":{"delete":{"tags":["Other"],"summary":"Removes the SAVED DETAIL, not the contact. The person reappears from message history with their bare address — we cannot honestly forget someone you have exchanged mail with while that mail still exists, and pretending o","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/foundation/daily":{"post":{"tags":["Other"],"summary":"POST /api/mail/foundation/daily","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/foundation/unsubscribe":{"get":{"tags":["Other"],"summary":"GET /mail/foundation/unsubscribe?zid=&t= — one click, no login.","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"t","in":"query","required":false,"schema":{"type":"string"}},{"name":"zid","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts"}},"/api/mail/inbound":{"post":{"tags":["Other"],"summary":"POST /api/mail/inbound","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/inbox":{"get":{"tags":["Other"],"summary":"GET /mail/inbox","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/message/{id}":{"get":{"tags":["Other"],"summary":"GET /mail/message/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Other"],"summary":"PATCH /mail/message/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/message/{id}/block":{"post":{"tags":["Other"],"summary":"POST /mail/message/:id/block One-click block from an open message or a card. Blocks the sender and sweeps their existing mail into spam so the inbox is clean immediately.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/send":{"post":{"tags":["Other"],"summary":"Internal routing: alias-table OR ZID-derived address → local zid. Both sender's sent-copy and (if internal) recipient's inbox-copy are inserted as separate rows, each independently encrypted under the owner's encryption","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/sent":{"get":{"tags":["Other"],"summary":"GET /mail/sent","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/signatures":{"get":{"tags":["Other"],"summary":"GET /mail/signatures","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Other"],"summary":"PUT /mail/signatures Upsert the signature for one address you own. Stored server-side so it is appended on send no matter which client sent the message.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mail/spam":{"get":{"tags":["Other"],"summary":"GET /mail/spam Quarantine. Nothing here was rejected — it was scored, filed and kept, so a false positive is always recoverable by moving it back to the inbox.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mail/stats":{"get":{"tags":["Other"],"summary":"GET /mail/stats Auth-gate bootstrap. Returns counts + identity card. The UI checks {ok:true} to hide the auth-gate div and render the mailbox.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mail.ts","security":[{"bearerAuth":[]}]}},"/api/mcp":{"get":{"tags":["MCP"],"summary":"MCP discovery document — per-node name/url, machine_hash, surface stats and tool list.","responses":{"200":{"description":"Discovery JSON"}}},"post":{"tags":["MCP"],"summary":"MCP Streamable HTTP endpoint (JSON-RPC 2.0): initialize, tools/list, tools/call. Every tool is listed under x-mcp-tools at the document root; zeq_api_catalog maps the surface and zeq_http calls any endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"type":"string"},"id":{},"method":{"type":"string"},"params":{"type":"object"}},"required":["jsonrpc","method"]}}}},"responses":{"200":{"description":"JSON-RPC result"}}}},"/api/mesh":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/mesh","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mesh.ts"}},"/api/mesh/announce":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/mesh/announce","responses":{"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"POST /mesh/announce — SUPER-MACHINE P3: peer discovery. A peer POSTs its self-descriptor { node_id, base_url, tcp_host, tcp_port }, HMAC-signed over the same body via x-node-handshake (meshHandshake). We register it and return our full peer set, so the caller learns the whole known mesh in one round-trip and a fresh node converges from ONE bootstrap peer with no env surgery on the others. handleAnnounce does the HMAC check. Auth: node handshake (verified inside handleAnnounce) Rate limit: 60/min (shares the gossip limiter budget shape)","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mesh/gossip":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/mesh/gossip","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"POST /mesh/gossip Receive gossip from a peer node Input: { event, sourceNodeId, zeqond, signature } Auth: Node handshake required Rate limit: 60/min","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mesh/issuance/at":{"get":{"tags":["Mesh & Nodes"],"summary":"value with no coordination. This endpoint simply exposes what THIS node computes for a given Zeqond — public, verifiable, non-secret observability. There is deliberately no voting/quorum: determinism needs none, and exac","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"z","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"mesh.ts"}},"/api/mesh/join":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/mesh/join","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"SUPER-MACHINE — OPEN JOIN over HTTPS. Any machine earns read access to the shared federated log by solving a Landauer proof-of-compute challenge (no shared secret needed). On success we mint a fleet-signed join token (valid on ANY node) and hand back the peer roster + genesis anchor. Loopback callers are exempt (0 bits). The token is presented to GET /api/worm/fed/stream.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/mesh/peers":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/mesh/peers","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"SUPER-MACHINE — public peer roster: a fresh joiner GETs this to learn who is in the mesh (bootstrap seed). Descriptors only (hostnames/ports) — no secrets."}},"/api/mesh/self":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/mesh/self","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"mesh.ts"}},"/api/mesh/status":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/mesh/status","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"GET /mesh/status Get mesh health information Output: { meshSize, activeNodes, coherenceScore, lastGossip, zeqond } Auth: None (public endpoint) Rate limit: Built-in (trust via IP)"}},"/api/mesh/verify":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/mesh/verify","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMesh.ts","description":"POST /mesh/verify Verify an identity across the mesh Input: { zid: string, nodes?: string[] } Output: { zid, verified, meshNodes[], coherenceScore, consensusReached, quorum } Auth: API key required Rate limit: 30/min","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ai/chat":{"post":{"tags":["Other"],"summary":"POST /api/msg/ai/chat","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"428":{"description":"Precondition required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ai/history":{"get":{"tags":["Other"],"summary":"GET /api/msg/ai/history","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"convId","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","description":"GET /msg/ai/history?convId=… — this conversation, rebuilt from the server. The client's history is localStorage plus an encrypted transcript it writes itself. Both depend on a device having been there. This does not: every completed turn is already sealed in msg_ai_turns, so a fresh device — or one whose storage was cleared — can be handed the conversation back. Returns messages in the shape the client already renders, so it can merge without a translation layer: a user message from the prompt, an assistant message from the reply, computations and builds attached to the reply where the turn produced them. Ids are DERIVED FROM THE TURN ID rather than generated, so merging is idempotent — a client that already has these messages recognises them instead of duplicating the whole conversation on every open.","security":[{"bearerAuth":[]}]}},"/api/msg/ai/key":{"get":{"tags":["Other"],"summary":"GET /msg/ai/key — which credentials exist? (never returns a key)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /msg/ai/key — save/rotate a credential","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ai/key/{provider}":{"delete":{"tags":["Other"],"summary":"DELETE /msg/ai/key/:provider","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}]}},"/api/msg/ai/transcript-key":{"get":{"tags":["Other"],"summary":"GET /api/msg/ai/transcript-key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","description":"GET /msg/ai/transcript-key — the per-user key that encrypts a user's own AI chat archive (the zeq-chats repo), so the SAME encrypted transcript decrypts on every device the user signs in on. WHY THIS EXISTS. AI chats were HITE-encrypted with a passphrase the user typed into ONE browser. That made cross-device sync impossible: a second device fetched the ciphertext from the repo (which is server-side and does sync) but had no passphrase to read it. The key must therefore come from the server, available to any authenticated session — never from something the user carries between devices. It is a DETERMINISTIC per-ZID key: HMAC-SHA256(\"zeq-chat-archive:\" + ZID, ZEQ_FIELD_KEY). Every node shares ZEQ_FIELD_KEY, so the key is identical on every device and every node, and it is never stored — it is recomputed from the authenticated ZID on each request. At rest in ZeqGit the transcript is still ciphertext; the key lives only behind this authenticated endpoint.","security":[{"bearerAuth":[]}]}},"/api/msg/ai/turn":{"post":{"tags":["Other"],"summary":"POST /msg/ai/turn — start a durable turn, return its id at once","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ai/turn/{id}":{"get":{"tags":["Other"],"summary":"GET /msg/ai/turn/:id — collect a turn, running or finished","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}]}},"/api/msg/ai/turn/{id}/stop":{"post":{"tags":["Other"],"summary":"POST /api/msg/ai/turn/:id/stop","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","description":"POST /msg/ai/turn/:id/stop — the user changed their mind. Every chat interface that streams has a stop button, and this one did not: once a build turn started, the only options were to wait it out or reload and abandon it as a stale row. A long turn the user no longer wants is still spending THEIR key, which makes \"no way to stop\" a billing problem as well as an interface one. Marks the turn failed with a reason that says a human did it, so the record distinguishes \"cancelled\" from \"broke\". The worker notices on its next step write; work already done is kept, because a partial answer the user can read beats a blank one. Scoped to the owner: getTurn already refuses another user's turn.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ai/turns/active":{"get":{"tags":["Other"],"summary":"GET /api/msg/ai/turns/active","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}]}},"/api/msg/calls/history":{"get":{"tags":["Other"],"summary":"Calls","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]}},"/api/msg/calls/log":{"post":{"tags":["Other"],"summary":"POST /api/msg/calls/log","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/calls/missed-count":{"get":{"tags":["Other"],"summary":"GET /api/msg/calls/missed-count","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]}},"/api/msg/channels":{"get":{"tags":["Other"],"summary":"GET /msg/channels","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}]}},"/api/msg/channels/{slug}/messages":{"get":{"tags":["Other"],"summary":"GET /msg/channels/:slug/messages","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"before","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /msg/channels/:slug/messages","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/channels/{slug}/messages/{id}/delete":{"post":{"tags":["Other"],"summary":"POST /msg/channels/:slug/messages/:id/delete Delete a channel message. The AUTHOR or a channel admin may delete it. Hard delete (channels persist; there's nothing to soft-tombstone against","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/channels/{slug}/messages/{id}/edit":{"post":{"tags":["Other"],"summary":"POST /msg/channels/:slug/messages/:id/edit Edit a channel message (AUTHOR only). Sets content + edited_at. Body {content}.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/channels/{slug}/messages/{id}/pin":{"post":{"tags":["Other"],"summary":"POST /msg/channels/:slug/messages/:id/pin Pin/unpin a channel message. The message AUTHOR or a channel admin may pin; the pin is shared (everyone sees the pinned bar). Body: { pinned: bo","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/channels/{slug}/messages/{id}/react":{"post":{"tags":["Other"],"summary":"POST /msg/channels/:slug/messages/:id/react Toggle the caller's reaction on a channel message. Body: { emoji }. Stored in the `reactions` jsonb ({ emoji: [zids] }); returns the updated map","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/channels/{slug}/search":{"get":{"tags":["Other"],"summary":"GET /msg/channels/:slug/search?q= Search a channel's full history by content (case-insensitive). Returns the newest matches first. Channels persist, so this is a real server quer","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"channels.ts","security":[{"bearerAuth":[]}]}},"/api/msg/cli/exec":{"post":{"tags":["Other"],"summary":"POST /msg/cli/exec","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgCli.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/contacts":{"get":{"tags":["Other"],"summary":"Contacts","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/msg/contacts","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/contacts/{zid}":{"delete":{"tags":["Other"],"summary":"DELETE /api/msg/contacts/:zid","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Other"],"summary":"PATCH /api/msg/contacts/:zid","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/contacts/search/{term}":{"get":{"tags":["Other"],"summary":"GET /api/msg/contacts/search/:term","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"term","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]}},"/api/msg/conversations":{"get":{"tags":["Other"],"summary":"Conversations","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/msg/conversations","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/conversations/{id}/messages":{"get":{"tags":["Other"],"summary":"GET /msg/conversations/:id/messages — P2P: the server holds nothing. History lives on the user's devices (client localStorage); this returns an empty page so the client merges its local store.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /msg/conversations/:id/messages — relay + receipt, store nothing.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/conversations/{id}/read":{"post":{"tags":["Other"],"summary":"POST /msg/conversations/:id/read — read-receipt relay.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/feed":{"get":{"tags":["Other"],"summary":"GET /msg/feed","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"source","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msgFeed.ts","security":[{"bearerAuth":[]}]}},"/api/msg/feed/save":{"post":{"tags":["Other"],"summary":"This is NOT an append to the ledger: it writes to the user's vault, and a vault write can never alter the chain. Kept in this router because it is the feed's \"save\" action from the user's point of view.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgFeed.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/ice-servers":{"get":{"tags":["Other"],"summary":"GET /api/msg/ice-servers","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"msg.ts"}},"/api/msg/messages/{id}":{"delete":{"tags":["Other"],"summary":"DELETE /msg/messages/:id — delete relay (tombstone applied client-side).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversationId","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Other"],"summary":"PATCH /msg/messages/:id — edit relay. The server stores nothing, so the client supplies conversationId; recipients apply the edit locally.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/messages/{id}/react":{"post":{"tags":["Other"],"summary":"POST /msg/messages/:id/react — reaction relay. No aggregation server-side (nothing stored): the delta {zid, emoji} relays and every client applies the toggle to its local copy.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/profile":{"get":{"tags":["Other"],"summary":"Profile","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Other"],"summary":"PATCH /api/msg/profile","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/profile/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/msg/profile/:zid","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]}},"/api/msg/profile/links":{"get":{"tags":["Other"],"summary":"GET /api/msg/profile/links","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Other"],"summary":"PUT /api/msg/profile/links","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/profile/links/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/msg/profile/links/:zid","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]}},"/api/msg/push/key":{"get":{"tags":["Other"],"summary":"GET /msg/push/key — the VAPID public key a browser needs to subscribe.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}]}},"/api/msg/push/subscribe":{"post":{"tags":["Other"],"summary":"POST /msg/push/subscribe — register this browser","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/push/unsubscribe":{"post":{"tags":["Other"],"summary":"POST /msg/push/unsubscribe — the user turned it off on this device","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msgAi.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/settings":{"get":{"tags":["Other"],"summary":"Settings + Status","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}]},"patch":{"tags":["Other"],"summary":"PATCH /api/msg/settings","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/msg/status":{"put":{"tags":["Other"],"summary":"PUT /api/msg/status","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"msg.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/multibody":{"post":{"tags":["Other"],"summary":"POST /api/multibody","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/network/join":{"post":{"tags":["Other"],"summary":"Join — flip the caller's primary machine onto the network.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"network.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/network/leave":{"post":{"tags":["Other"],"summary":"Leave — take the caller's primary machine back to local-private.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"network.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/network/nodes":{"get":{"tags":["Other"],"summary":"How many machines are on the network (public — a count, no identities).","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"network.ts"}},"/api/network/status":{"get":{"tags":["Other"],"summary":"Is the caller's machine on the network, and the current member count.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"network.ts","security":[{"bearerAuth":[]}]}},"/api/node/attest":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/node/attest","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"node.ts","description":"Cross-verify the whole fleet: which bundle is consensus, who deviates, who runs the immutable machine. Public and read-only — it reports hashes and postures, never secrets, and every input is already public at /api/node/status. Publishing it is the point: anyone can audit whether the fleet runs the signed release. Rate-limited like status (it fans out to 14 peers with a 4 s timeout)."}},"/api/node/fingerprint":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/node/fingerprint","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"node.ts","description":"GET /api/node/fingerprint — one number that says whether two nodes are the same node. The fleet's identity was spread across five endpoints, so comparing eighteen nodes meant knowing which fields were meant to match. In practice nobody does that, and drift lives wherever nobody looked — governance mode was `evident` on two nodes and `off` on sixteen, unreported, because nothing was checking. PUBLIC on purpose: every component is a hash or a parameter name, there is no secret in it, and a fingerprint nobody can read is one nobody checks."}},"/api/node/peers":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/node/peers","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"node.ts"}},"/api/node/relay":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/node/relay","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"node.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/node/status":{"get":{"tags":["Mesh & Nodes"],"summary":"GET /api/node/status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"node.ts"}},"/api/node/sync":{"post":{"tags":["Mesh & Nodes"],"summary":"POST /api/node/sync","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"node.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/authorize":{"get":{"tags":["Other"],"summary":"oauth/authorize (GET) — entry point of the vault-issuance ceremony","responses":{"200":{"description":"OK"}},"parameters":[{"name":"client_id","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"oauth.ts"}},"/api/oauth/authorize/consent":{"post":{"tags":["Other"],"summary":"oauth/authorize/consent (POST) — user clicked Approve or Cancel","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/device_authorization":{"post":{"tags":["Other"],"summary":"On success: mint access_token (HITE-sealed), refresh_token (HITE-sealed), id_token (JWT HS256). Return OIDC-shaped JSON. PL2 Phase 5 — RFC 8628 §3.1: a TV / IoT client starts the device flow here (issuer node only)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/refresh":{"post":{"tags":["Other"],"summary":"5. token NOT in oauth_tokens_revoked (rotation, revoke, or logout). On success: revoke the old refresh token (rotation), mint NEW access + NEW refresh + NEW id_token. Old refresh is INVALID from this point.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/revoke":{"post":{"tags":["Other"],"summary":"Accepts optional token_type_hint ('access_token' | 'refresh_token') — we try both kinds when the hint is wrong or missing (RFC 7009 §2.1).","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/token":{"post":{"tags":["Other"],"summary":"POST /api/oauth/token","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/oauth/userinfo":{"get":{"tags":["Other"],"summary":"GET /api/oauth/userinfo","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts"},"post":{"tags":["Other"],"summary":"POST /api/oauth/userinfo","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"oauth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/operator/{id}":{"get":{"tags":["Other"],"summary":"Canonical Operator Lookup","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/operators":{"get":{"tags":["Operators & Kernel"],"summary":"Operator registry (1,600+ operators across 67 domains; served verbatim from data/operator-registry.json).","responses":{"200":{"description":"Full operator list"}}}},"/api/operators/categories":{"get":{"tags":["Operators & Kernel"],"summary":"Operator domain categories.","responses":{"200":{"description":"Categories"}}}},"/api/operators/details":{"get":{"tags":["Operators & Kernel"],"summary":"{ id, name, domain, equation, equationLaTeX, latexTrusted, founder, description } per id, in the given order. Public, read-only. Unknown ids come back with the id preserved and empty fields (a missing operator is informa","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"ids","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"operators.ts"}},"/api/oracle/compute-price":{"get":{"tags":["Oracle"],"summary":"api/oracle/compute-price — compute-credit price (cost + margin)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"priceOracle.ts"}},"/api/oracle/history/{chain}":{"get":{"tags":["Oracle"],"summary":"api/oracle/history/:chain?n=120 — consensus history for charts","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string"}},{"name":"n","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"priceOracle.ts"}},"/api/oracle/price/{chain}":{"get":{"tags":["Oracle"],"summary":"api/oracle/price/:chain","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"priceOracle.ts"}},"/api/oracle/prices":{"get":{"tags":["Oracle"],"summary":"api/oracle/prices (both chains)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"priceOracle.ts"}},"/api/oracle/sources/{chain}":{"get":{"tags":["Oracle"],"summary":"api/oracle/sources/:chain — most recent per-source rows","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"priceOracle.ts"}},"/api/orb/{userZid}":{"get":{"tags":["Other"],"summary":"zeqonds_since_genesis (live pulse counter) - wallet { tokens_remaining, mint_rate_per_zeqond, balance_zqt } - paired_user_zid - explorer_url (where to view the orb's chain)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"userZid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/params":{"get":{"tags":["Other"],"summary":"Framework Parameters","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/peers":{"get":{"tags":["Other"],"summary":"GET /node/peers","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqNode.ts"}},"/api/phish/check":{"get":{"tags":["Other"],"summary":"GET /api/phish/check?fingerprint=<hash> — public lookup","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"fingerprint","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"phish.ts"}},"/api/phish/classify":{"post":{"tags":["Other"],"summary":"POST /api/phish/classify — body { url } → { score, reasons }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"phish.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/phish/feed":{"get":{"tags":["Other"],"summary":"GET /api/phish/feed — public top-N by confidence in last 24h","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"phish.ts"}},"/api/phish/report":{"post":{"tags":["Other"],"summary":"→ upsert into phish_fingerprints OR mal_fingerprints (when kind present), + audit row + 'av.phish.detected' fanout. ═","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"phish.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/phish/verify":{"post":{"tags":["Other"],"summary":"POST /api/phish/verify — body { fingerprint_hash } — increment count","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"phish.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/playground/compute":{"post":{"tags":["Other"],"summary":"POST /api/playground/compute","responses":{"200":{"description":"OK"},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"playground.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/pool":{"get":{"tags":["Other"],"summary":"Public, read-only. The pool holds nothing opaquely: this returns its live balance plus the recent WORM-sealed inflows (carve + residual from each settlement) and outflows (credit→ZEQ conversions, ops, bounties, gifts) —","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"n","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"transparency.ts"}},"/api/portability/discover/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/portability/discover/:zid — owner-gated, fans out","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"portability.ts"}},"/api/portability/peer/export/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/portability/peer/export/:zid — peer-only, signed, cursor-paged","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"table","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"portability.ts"}},"/api/portability/peer/manifest/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/portability/peer/manifest/:zid — peer-only, signed","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"portability.ts"}},"/api/portability/pull":{"post":{"tags":["Other"],"summary":"POST /api/portability/pull — owner-gated; walks A's export cursors","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portability.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/portal/certificate":{"get":{"tags":["Accounts & Keys"],"summary":"portal/certificate","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]}},"/api/portal/key":{"get":{"tags":["Accounts & Keys"],"summary":"portal/key (legacy — single key)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]}},"/api/portal/keys":{"get":{"tags":["Accounts & Keys"],"summary":"portal/keys (multi-key management)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Accounts & Keys"],"summary":"POST /api/portal/keys","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/portal/keys/{id}":{"delete":{"tags":["Accounts & Keys"],"summary":"DELETE /api/portal/keys/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]}},"/api/portal/keys/{id}/reveal":{"post":{"tags":["Accounts & Keys"],"summary":"portal/keys/:id/reveal (one-time encrypted reveal)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/portal/me":{"get":{"tags":["Accounts & Keys"],"summary":"portal/me","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]}},"/api/portal/regenerate-key":{"post":{"tags":["Accounts & Keys"],"summary":"portal/regenerate-key (legacy — kept for backward compatibility)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/portal/usage":{"get":{"tags":["Accounts & Keys"],"summary":"portal/usage","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"portal.ts","security":[{"bearerAuth":[]}]}},"/api/pricing/checkout":{"post":{"tags":["Other"],"summary":"POST /api/pricing/checkout","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"pricing.ts","description":"THE BUYER-FACING CHECKOUT DOOR — on EVERY node. Stripe lives on one domain (hulyas.org). The pricing page on the other sixteen used to redirect the browser there, which lands the buyer on a domain where they have no session — so they were asked to sign in a SECOND time and, in practice, never reached Stripe at all. This route is mounted on every node and is NOT behind the /stripe payments gate, so it answers everywhere: · this node has Stripe → build the session here; · it does not → forward to the payments node over the mesh's signed node-to-node channel, vouching for the ZID this node has already authenticated, and hand the browser the URL. Either way the buyer signs in ONCE, on the node they were already using, and the ZID that pays is the ZID that was authenticated. @returns {ok:true,url} | {ok:false,code}","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/pricing/tiers":{"get":{"tags":["Other"],"summary":"GET /api/pricing/tiers","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pricing.ts","description":"The price of compute, the tiers and how to pay, from one source. @returns {ok, price, tiers, bond, contribute, payments, free, zeqond}"}},"/api/pricing/usage":{"get":{"tags":["Other"],"summary":"GET /api/pricing/usage","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"pricing.ts","description":"WHAT THIS ACCOUNT IS USING, AGAINST WHAT ITS TIER ALLOWS. The Vault renders this as \"using X of Y\" per resource. It exists because a limit nobody can see is a limit that only ever appears as a refusal: the owner's rule is that every new capability gets an entry point where users already are. Same table, same counts and the same resolver the enforcement uses, so what you read here is exactly what will refuse you. @returns {ok, tier, tier_source, seats, resources:[{resource,current,limit,allowed}]}","security":[{"bearerAuth":[]}]}},"/api/protocol":{"get":{"tags":["Other"],"summary":"7-Step Wizard Protocol","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/protocol/pohc":{"get":{"tags":["Other"],"summary":"GET /api/protocol/pohc — full specification","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts"}},"/api/protocol/pohc/attest":{"post":{"tags":["Other"],"summary":"POST /api/protocol/pohc/attest — Landauer thermal attestation Proves a computation meets the thermodynamic minimum energy bound.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/protocol/pohc/convergence":{"post":{"tags":["Other"],"summary":"POST /api/protocol/pohc/convergence — check convergence of identities Used by smart contracts to verify that N identities agree on a value.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/protocol/pohc/energy":{"get":{"tags":["Other"],"summary":"GET /api/protocol/pohc/energy — energy per computation comparison","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts"}},"/api/protocol/pohc/finality":{"post":{"tags":["Other"],"summary":"POST /api/protocol/pohc/finality — PLAT-chain finality check Verifies that a state transition has reached finality (2 Zeqonds old).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/protocol/pohc/layers":{"get":{"tags":["Other"],"summary":"GET /api/protocol/pohc/layers — just the layers","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts"}},"/api/protocol/reputation":{"post":{"tags":["Other"],"summary":"POST /api/protocol/reputation — reputation weight for a ZID Used by contracts for weighted voting / access control.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/protocol/sybil":{"get":{"tags":["Other"],"summary":"GET /api/protocol/sybil — sybil resistance status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"pohcProtocol.ts"}},"/api/protocols/":{"get":{"tags":["Other"],"summary":"Full Protocol Registry","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"protocols.ts"}},"/api/protocols/{id}":{"get":{"tags":["Other"],"summary":"Single Protocol Detail","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"protocols.ts"}},"/api/protocols/category/{category}":{"get":{"tags":["Other"],"summary":"Protocols by Category","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"category","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"protocols.ts"}},"/api/qm3/deposit-addresses/{id}":{"get":{"tags":["Other"],"summary":"GET /api/qm3/wallets/:id ─ wallet detail + owners","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}]}},"/api/qm3/deposit-addresses/{id}/initiate":{"post":{"tags":["Other"],"summary":"POST /api/qm3/wallets/:id/initiate ─ start a pending transition","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/qm3/deposit-addresses/{id}/pending":{"get":{"tags":["Other"],"summary":"GET /api/qm3/wallets/:id/pending ─ list pending for wallet","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}]}},"/api/qm3/deposit-addresses/mine":{"get":{"tags":["Other"],"summary":"GET /api/qm3/wallets/mine ─ wallets where caller is an owner","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}]}},"/api/qm3/pending/{tid}/cancel":{"post":{"tags":["Other"],"summary":"POST /api/qm3/pending/:tid/cancel ─ cancel pending tx","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/qm3/pending/{tid}/compute-sig":{"post":{"tags":["Other"],"summary":"signature directly (the caller's identity is proven by the v3 cookie either way). Returns the signature, the caller can then POST it back to /sign. We don't auto-attach because the UX should show \"here's what you're abou","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/qm3/pending/{tid}/sign":{"post":{"tags":["Other"],"summary":"POST /api/qm3/pending/:tid/sign ─ attach signature Body: { signature_hex } — caller-computed.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"qm3DepositAddresses.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/quantum-verify":{"post":{"tags":["Other"],"summary":"POST /quantum-verify","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"quantumVerify.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/quantum-verify/{id}":{"get":{"tags":["Other"],"summary":"GET /quantum-verify/:id Re-checks the stored proof against the stored fields → tamper-evident.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"quantumVerify.ts"}},"/api/quantum-verify/coverage":{"get":{"tags":["Other"],"summary":"GET /quantum-verify/coverage","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"quantumVerify.ts"}},"/api/registry":{"get":{"tags":["Other"],"summary":"Full Canonical Registry","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/registry/categories":{"get":{"tags":["Other"],"summary":"Registry Category Breakdown","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts"}},"/api/relay":{"post":{"tags":["Other"],"summary":"POST /node/relay","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqNode.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/science/domains":{"get":{"tags":["Other"],"summary":"answer carries its own limits rather than a yes. See lib/scienceDomains.ts. GET /science/domains — the 67 registry domains, with the literature sources that actually serve each. Public: an agent needs it to scope a searc","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"science.ts"}},"/api/science/fetch":{"post":{"tags":["Other"],"summary":"POST /science/fetch — resolve one canonical id to its record.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"science.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/science/match":{"post":{"tags":["Other"],"summary":"POST /science/match — which operator domains a paper plausibly falls in. { id } to classify a fetched record, or { text } to classify anything.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"science.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/science/search":{"post":{"tags":["Other"],"summary":"POST /science/search — fan out across literature sources, one shape back.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"science.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/science/sources":{"get":{"tags":["Other"],"summary":"GET /science/sources — the catalogue. Public: an agent needs to know what it can ask for before it asks, and a client needs it to render a picker.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"science.ts"}},"/api/search":{"get":{"tags":["Other"],"summary":"Top-level dispatcher","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"search.ts"}},"/api/skills":{"get":{"tags":["Other"],"summary":"GET /skills — list industry skill templates (browse the directory)","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"skills.ts"}},"/api/skills/{id}":{"get":{"tags":["Other"],"summary":"GET /skills/:id — one industry skill template","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"skills.ts"}},"/api/skills/generate":{"post":{"tags":["Other"],"summary":"POST /api/skills/generate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"skills.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/skills/preview":{"get":{"tags":["Other"],"summary":"`writeSkillFile` would persist on attach. This is the user-facing transparency surface: clicking Preview on a catalogue card calls this and shows the full body before they hit Load. No auth — the catalogue itself is alre","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"ref","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"agentProtocolState.ts"}},"/api/solve":{"post":{"tags":["Other"],"summary":"POST /api/solve","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/solve/strict":{"post":{"tags":["Other"],"summary":"POST /api/solve/strict","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"framework.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/sources":{"get":{"tags":["Other"],"summary":"GET /api/sources — adapter directory","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"sources.ts"}},"/api/sources/{adapter}/{source_id}":{"get":{"tags":["Other"],"summary":"GET /api/sources/:adapter/:source_id — per-source detail","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"504":{"description":"Upstream timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"adapter","in":"path","required":true,"schema":{"type":"string"}},{"name":"source_id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"sources.ts"}},"/api/ssl/credentials":{"get":{"tags":["Other"],"summary":"GET /api/ssl/credentials?machine=<slug>","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts"}},"/api/ssl/credentials/issue":{"post":{"tags":["Other"],"summary":"POST /api/ssl/credentials/issue","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/credentials/revoke":{"post":{"tags":["Other"],"summary":"POST /api/ssl/credentials/revoke","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/credentials/rotate":{"post":{"tags":["Other"],"summary":"POST /api/ssl/credentials/rotate","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/handshake/verify":{"post":{"tags":["Other"],"summary":"POST /api/ssl/handshake/verify","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","description":"Server-side handshake validation. The caller (typically a peer or a service running outside the api-core process) submits a signed handshake envelope and asks us to confirm it would have been accepted at the given Zeqond. Request body: { envelope: SignedHandshake, local_machine: \"<slug>\", — whose perspective we evaluate from peer_machine: \"<slug>\", } On success: 200 { ok: true, session_id, derived_at_zeqond }. On failure: 401 { ok: false, reason: \"<one of validateHandshake reasons>\" }. We DON'T persist the session here — that's the SDK's job once both sides confirm. This endpoint is the \"is the envelope cryptographically sound?\" check, suitable as a sidecar verifier from a Mode 2 bridge.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/peer-seed":{"post":{"tags":["Other"],"summary":"POST /api/ssl/peer-seed","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","description":"SSL-PEER-SEED-EXCHANGE — Mode B first-touch ceremony helper. Two peers POST a derived shared seed to their respective api-cores, with a proof that the OTHER peer's credential is held (signed_canonical_json blob + signature verified against the peer's published pubkey_seed). This endpoint is per-side: each peer calls it on its own api-core with the seed it computed locally. Both peers must arrive at the SAME sharedSeedHex independently for the handshake to work. Request: { local_machine: \"<slug>\", peer_machine: \"<slug>\", shared_seed_hex: \"<64-hex>\" } Auth: admin on local_machine.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/peer-seed/keyex/initiate":{"post":{"tags":["Other"],"summary":"POST /api/ssl/peer-seed/keyex/initiate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/peer-seed/keyex/respond":{"post":{"tags":["Other"],"summary":"POST /api/ssl/peer-seed/keyex/respond","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/trust":{"get":{"tags":["Other"],"summary":"directions. Before this, grant/revoke wrote rows that no surface could display — the manager page's trust panel was a dead placeholder. Trust edges are public records (like credentials' public rows); the signature stays","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts"}},"/api/ssl/trust/grant":{"post":{"tags":["Other"],"summary":"POST /api/ssl/trust/grant","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/trust/revoke":{"post":{"tags":["Other"],"summary":"POST /api/ssl/trust/revoke","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/ssl/verify":{"get":{"tags":["Other"],"summary":"GET /api/ssl/verify?machine=&kid=&zeqond=","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"ssl.ts"}},"/api/state-machines/{slug}/chats":{"get":{"tags":["Chain & State"],"summary":"GET /chats — thread list (meta only)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"machineChats.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Chain & State"],"summary":"PUT /chats — bulk upsert (debounced client push)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"machineChats.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/state-machines/{slug}/chats/{threadKey}":{"delete":{"tags":["Chain & State"],"summary":"DELETE /chats/:threadKey","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"threadKey","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"machineChats.ts","security":[{"bearerAuth":[]}]}},"/api/state-machines/{slug}/chats/full":{"get":{"tags":["Chain & State"],"summary":"GET /chats/full — everything incl. messages (boot pull)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"machineChats.ts","security":[{"bearerAuth":[]}]}},"/api/state-machines/{slug}/pages":{"get":{"tags":["Chain & State"],"summary":"GET /list Public — published pages are hosted content. Excludes the launcher.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts"}},"/api/state-machines/{slug}/pages/{pageSlug}":{"get":{"tags":["Chain & State"],"summary":"GET /:pageSlug Public read of the published version. Returns html + python.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts"}},"/api/state-machines/{slug}/pages/{pageSlug}/history":{"get":{"tags":["Chain & State"],"summary":"GET /:pageSlug/history (owner-only)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts","security":[{"bearerAuth":[]}]}},"/api/state-machines/{slug}/pages/{pageSlug}/publish":{"post":{"tags":["Chain & State"],"summary":"POST /api/state-machines/:slug/pages/:pageSlug/publish","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/state-machines/{slug}/pages/{pageSlug}/rollback":{"post":{"tags":["Chain & State"],"summary":"POST /:pageSlug/rollback (owner-only)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/state-machines/{slug}/pages/{pageSlug}/unpublish":{"post":{"tags":["Chain & State"],"summary":"POST /:pageSlug/unpublish (owner-only)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageSlug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stateMachinePages.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/stats":{"get":{"tags":["Other"],"summary":"GET /api/stats","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"marketing.ts"}},"/api/stats/tiers":{"get":{"tags":["Other"],"summary":"GET /api/stats/tiers","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"marketing.ts"}},"/api/store/app/{slug}":{"get":{"tags":["Other"],"summary":"GET /store/app/:slug — single app detail","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"store.ts"}},"/api/store/apps":{"get":{"tags":["Other"],"summary":"GET /store/apps — full app listing with optional filters","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"difficulty","in":"query","required":false,"schema":{"type":"string"}},{"name":"featured","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"store.ts"}},"/api/store/categories":{"get":{"tags":["Other"],"summary":"GET /store/categories — category list with app counts","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"store.ts"}},"/api/store/launch":{"post":{"tags":["Other"],"summary":"POST /store/launch — track app launches (analytics)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"store.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/stripe/create-checkout":{"post":{"tags":["Accounts & Keys"],"summary":"POST /api/stripe/create-checkout","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"stripe.ts","description":"ECON v5 (2026-09-04) — THE BUYER'S ZID IS AUTHENTICATED, NOT DECLARED. This route used to take `zid` from the request body and check only its SHAPE, so anyone could POST a stranger's ZID and create a subscription whose hours land on that stranger's account. `requireAuth` gates it now and `res.locals.authZid` is the buyer; a body `zid` is accepted only when it matches the session. The session itself is built by lib/checkoutSession.ts, shared with the peer door below and with POST /api/pricing/checkout, so the three cannot drift.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/stripe/peer-checkout":{"post":{"tags":["Accounts & Keys"],"summary":"POST /api/stripe/peer-checkout","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"stripe.ts","description":"PEER DOOR — a buyer signed in on ANOTHER node. Stripe lives on one domain by design. The other sixteen used to redirect the browser here, landing the buyer on a domain where they have no session and asking them to sign in a second time — in practice they never reached Stripe. The home node has already authenticated them, so it says so over the mesh's own Ed25519 node-signature channel (the same trust lib/peerAuth.ts gives the identity directory), and this node builds the session. Only a framework-owned origin can vouch, the signature covers the ZID, plan and seats, and it expires with the 300-Zeqond peer window.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/stripe/portal":{"post":{"tags":["Accounts & Keys"],"summary":"Production webhook endpoint URL: <PUBLIC_BASE_URL>/api/stripe/webhook (register this in your Stripe dashboard with your fork's base URL). Enable the Customer Portal at: dashboard.stripe.com/settings/billing/portal","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"stripe.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/stripe/prices":{"get":{"tags":["Accounts & Keys"],"summary":"Price listing","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"stripe.ts"}},"/api/stripe/success":{"get":{"tags":["Accounts & Keys"],"summary":"Checkout success (Stripe redirects here after payment)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"session_id","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"stripe.ts"}},"/api/subscriptions":{"get":{"tags":["Other"],"summary":"GET /api/subscriptions","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"sources.ts"}},"/api/sync":{"post":{"tags":["Other"],"summary":"POST /node/sync","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqNode.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/account/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/tally/account/:zid — balance + stats for a ZID","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/block/{n}":{"get":{"tags":["Other"],"summary":"GET /api/tally/block/:n — zeqond block data","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"n","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/burn":{"post":{"tags":["Other"],"summary":"POST /api/tally/burn — burn tokens → compute → mint proof token This is the CORE economy endpoint.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/claims/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/tally/claims/:zid — P4.3b — list peer-homed coins you hold (claims) Owner-gated (own claims only).","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/claims/import":{"post":{"tags":["Other"],"summary":"HTTP (trust the home, not the messenger), then records a local claim so the coin shows up in the recipient's wallet. The coin's authority stays on its home chain; this row is a view, never used to serialize.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/claims/publish":{"post":{"tags":["Other"],"summary":"spend_seq, so anyone reading this observer can verify it against the home chain (anchored, not asserted). Private by default — only happens when the holder explicitly publishes. Re-verifies authenticity at the home first","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/claims/transfer":{"post":{"tags":["Other"],"summary":"(transfer-claim) server-side — so any client (CLI or browser Vault) calls its own origin, no CORS, no direct cross-origin from the client. On success the coin has moved away, so the local claim is marked spent.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/clock":{"get":{"tags":["Other"],"summary":"GET /api/tally/clock — current Zeqond + phase (wallet heartbeat)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/consensus":{"get":{"tags":["Other"],"summary":"GET /api/tally/consensus — protocol status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/cost":{"get":{"tags":["Other"],"summary":"GET /api/tally/cost — preview cost for a computation (no execution)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"contract","in":"query","required":false,"schema":{"type":"string"}},{"name":"operators","in":"query","required":false,"schema":{"type":"string"}},{"name":"proof","in":"query","required":false,"schema":{"type":"string"}},{"name":"zsp","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/credits/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/tally/credits/:zid — credit balance, tier, usage","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/credits/history/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/tally/credits/history/:zid — transaction history","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/credits/transfer":{"post":{"tags":["Other"],"summary":"both machines, atomically moves balance from sender supply → recipient supply, writes a chain row on both ledgers via inter-machine edges. Free-tier supplies are locked (isLockedTier gate above) — paid only.","responses":{"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/{tokenId}/authority":{"get":{"tags":["Other"],"summary":"authoritative for a coin and its spend-sequence height — never the holder graph. Lets anyone confirm where a coin must be serialized and verify its sequence is monotonic against the (anchored) entangled-state transitions","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/envelopes/{tokenId}/export":{"post":{"tags":["Other"],"summary":"and bumps spend_seq (killing any prior receipt/ticket), then issues a spend_seq-pinned bearer ticket. Home-chain only. The coin is now live in exactly ONE place: this bearer file. Redeem (Phase 2) brings it back live.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/{tokenId}/height":{"get":{"tags":["Other"],"summary":"GET /api/tally/coins/:tokenId/height — witness read. Any node reports the highest spend_seq + status it has recorded for a token, so a sovereign rescue can ask a coin's custody witnesses whether it has moved past a heigh","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/envelopes/{tokenId}/split":{"post":{"tags":["Other"],"summary":"POST /api/tally/coins/:tokenId/split — break one coin of V plancks into children summing EXACTLY to V (down to 1 planck). Coin-ONLY: an envelope returns 409 (indivisible). Parent → status='split' (consumed, spend_seq++),","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/{zid}":{"get":{"tags":["Other"],"summary":"The transferable tokens minted by compute. Owner-gated like all per-ZID reads (P8 security model).","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}},{"name":"folder","in":"query","required":false,"schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"mesh","in":"query","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/envelopes/{zid}/folders":{"get":{"tags":["Other"],"summary":"Powers the folder chips in the Envelopes manager. Local coins only (the folder is the owner's private organisation, not a mesh concept). \"unfiled\" (NULL/''/'unfiled') is rolled into one bucket the UI shows as Unfiled.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tally/envelopes/burn":{"post":{"tags":["Other"],"summary":"not vote-locked, kind='envelope', V > 0, homed on this chain. ALL-OR-NOTHING: any ineligible id aborts the whole batch (rollback). Replay-idempotent: the burn_tx id is deterministic over the sorted id set; retrying a com","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/conservation":{"get":{"tags":["Other"],"summary":"exact plancks. issuer_remaining + pool + user_held == issued, where user_held includes residual integer balances (hybrid, core scope) PLUS coin bearer tokens. Every coin op (mint/split/merge/transfer/export/redeem) prese","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/envelopes/failover":{"post":{"tags":["Other"],"summary":"aborts (the coin already moved); (4) >=1 independent witness is required. Residual risk = a duplicate of the exact last state (like bearer cash) — it is recorded in the coin's lineage, so a fork is detectable + resolvabl","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/folder":{"post":{"tags":["Other"],"summary":"source folder / search), all owner-scoped. folder:\"\" or \"unfiled\" clears it. No cap. Same movability rules do NOT apply — a soulbound proof can still be FILED (organisation is not a transfer); only ownership is required.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/merge":{"post":{"tags":["Other"],"summary":"POST /api/tally/coins/merge — combine k coins the caller holds into one. Coin-ONLY (envelopes 409). Inputs → status='merged' (consumed), one child of Σ plancks minted. Conservation enforced in-tx.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/meta":{"post":{"tags":["Other"],"summary":"POST /api/tally/envelopes/meta — name + note for a coin. A holder labels an envelope with the experiment / compute it belongs to and jots context. Owner-scoped; empty string clears a field, undefined leaves it.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/migrate-out":{"post":{"tags":["Other"],"summary":"if already migrated to the SAME destination, re-returns the stored auth (so a destination that burned-but-didn't-mint can safely retry — no double-mint, no lost coin).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/mint-from-balance":{"post":{"tags":["Other"],"summary":"already-issued value: DEBIT the caller's integer tokens_remaining and MINT coin bearer tokens summing to EXACTLY amount×10^43 plancks (denominations + change). Never a new mint — the capped supply is untouched; only the","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/redeem":{"post":{"tags":["Other"],"summary":"POST /api/tally/envelopes/redeem","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/transfer":{"post":{"tags":["Other"],"summary":"POST /api/tally/envelopes/transfer","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/transfer-bulk":{"post":{"tags":["Other"],"summary":"move a Foundation-backing proof. Value is conserved (∑ before = ∑ after). One summary transition is recorded (not a per-coin wizard run — that would be pointless at this scale); each coin's spend_seq still advances by on","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/envelopes/transfer-claim":{"post":{"tags":["Other"],"summary":"home re-derives and compares it, confirms the holder is the live issued_to, then serializes the move (spend_seq++ under the lock), records the transition on the coin's machine, and mints a fresh ticket for the new holder","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/health":{"get":{"tags":["Other"],"summary":"GET /api/tally/health — system status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/height":{"get":{"tags":["Other"],"summary":"GET /api/tally/height — current chain height (zeqond number)","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/machine/{slug}/transitions":{"get":{"tags":["Other"],"summary":"owner's current envelope holdings. Powers the observer detail page's \"Envelope transfer\" section (Etherscan-style). The tally chain is public by design (same surface as /tally/ledger, /tally/transparency).","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"zeqond","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/peer/envelopes/{zid}":{"get":{"tags":["Other"],"summary":"A sibling domain (allowlisted + Ed25519-signed) asks for the coins THIS chain homes for a given ZID. Never trusts a user session — only a valid peer node signature over `peer-envelopes|zid|zeqond`, verified against the p","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/receipt/verify":{"post":{"tags":["Other"],"summary":"live spend_seq) or has been superseded by a later transfer. This is how a receiving domain trusts a transfer without trusting the messenger — and how it detects a stale/replayed receipt. Public; reveals no holder identit","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/record":{"get":{"tags":["Other"],"summary":"GET /api/tally/ledger — public ledger of recent burns + mints","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/settings/publish-default":{"get":{"tags":["Other"],"summary":"(P19-PUB Phase 2c). When true, transfers SENT by this owner default to public unless the caller passes visibility explicitly. Owner-gated; operates on the caller's primary machine. Value transfer never depends on this fl","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/tally/settings/publish-default","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/tally/transparency":{"get":{"tags":["Other"],"summary":"GET /api/tally/transparency — foundation stats, economy overview","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts"}},"/api/tally/user/{zid}":{"get":{"tags":["Other"],"summary":"GET /api/tally/user/:zid — resolve ZID to display info","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"tallyProtocol.ts","security":[{"bearerAuth":[]}]}},"/api/tesc/send":{"post":{"tags":["Other"],"summary":"POST /api/tesc/send Temporal Entangled State Channel — encrypts a message with a Phase-Locked Authentication Tag (PLAT) that is valid for exactly one Zeqond (0.77","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"hite.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/text/channel/{channelId}/info":{"get":{"tags":["Other"],"summary":"GET /text/channel/:channelId/info","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqText.ts","security":[{"bearerAuth":[]}]}},"/api/text/channel/create":{"post":{"tags":["Other"],"summary":"POST /text/channel/create","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqText.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/text/receive":{"post":{"tags":["Other"],"summary":"POST /text/receive","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqText.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/text/send":{"post":{"tags":["Other"],"summary":"POST /text/send","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqText.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/text/verify":{"post":{"tags":["Other"],"summary":"POST /text/verify","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqText.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/transparency/breakdown":{"get":{"tags":["Other"],"summary":"Returns a row per active machine: slug, plan, balance, mint rate, burn rate, last mint zeqond. Used by the dashboard's \"see every wallet\" expand panel. Drops PII — only public fields are returned.","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"transparency.ts"}},"/api/transparency/history":{"get":{"tags":["Other"],"summary":"api/transparency/history?n=120","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"n","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"transparency.ts"}},"/api/transparency/now":{"get":{"tags":["Other"],"summary":"api/transparency/now","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"transparency.ts"}},"/api/transparency/revenue":{"get":{"tags":["Other"],"summary":"Every confirmed crypto_donations row where plan_slug='swap' contributes its USD value. Capped at foundation pot inventory (~111k credits/day at 1 credit/Z drip × $0.01 list = $1,112/day max).","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"transparency.ts"}},"/api/transparency/snapshot":{"get":{"tags":["Other"],"summary":"api/transparency/snapshot?zeqond=N","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zeqond","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"timeMachine.ts"}},"/api/trial/me":{"get":{"tags":["Other"],"summary":"GET /api/trial/me","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"trial.ts"}},"/api/trial/start":{"post":{"tags":["Other"],"summary":"POST /api/trial/start","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"trial.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/updates/manifest":{"get":{"tags":["Other"],"summary":"Signed manifest — subscription-gated. Client verifies signature vs the pinned node_pubkey, compares registry_version, then pulls changed artifacts.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"updates.ts","security":[{"bearerAuth":[]}]}},"/api/updates/pubkey":{"get":{"tags":["Other"],"summary":"Public — pin the mother public key + current version (client trust-on-first-use).","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"updates.ts"}},"/api/updates/pull/{artifact}":{"get":{"tags":["Other"],"summary":"Pull one allowlisted artifact — subscription-gated. Body is the canonical JSON whose sha256 is published in the manifest, so the client verifies integrity.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"artifact","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"updates.ts","security":[{"bearerAuth":[]}]}},"/api/vault/sync":{"get":{"tags":["Other"],"summary":"GET /api/vault/sync","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"vaultSync.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Other"],"summary":"PUT /api/vault/sync","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"vaultSync.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/vpn/marketplace":{"get":{"tags":["Other"],"summary":"GET /api/vpn/marketplace","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"}},{"name":"max_zeq_per_gb","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"vpn.ts"}},"/api/vpn/marketplace/list":{"post":{"tags":["Other"],"summary":"POST /api/vpn/marketplace/list","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"vpn.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/vpn/tunnel/{id}/terminate":{"post":{"tags":["Other"],"summary":"POST /api/vpn/tunnel/:id/terminate","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"vpn.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/vpn/tunnel/handshake-accept":{"post":{"tags":["Other"],"summary":"POST /api/vpn/tunnel/handshake-accept","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"vpn.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/vpn/tunnel/handshake-request":{"post":{"tags":["Other"],"summary":"POST /api/vpn/tunnel/handshake-request","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"vpn.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/vpn/tunnels":{"get":{"tags":["Other"],"summary":"GET /api/vpn/tunnels?slug=X","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"vpn.ts"}},"/api/waitlist":{"post":{"tags":["Other"],"summary":"POST /api/waitlist","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"marketing.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/worm/anchor":{"get":{"tags":["Other"],"summary":"GET /api/worm/anchor","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/anchor — this node's own live anchor."}},"/api/worm/anchor-of/{peer}":{"get":{"tags":["Other"],"summary":"GET /api/worm/anchor-of/:peer","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"peer","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/anchor-of/:peer — THIS node's last-stored record of a given peer's root. Lets an HTTP-federated peer ask \"what root did you record for X?\" (the cross-observation quorum needs), without the ZeqSSH channel."}},"/api/worm/anchors":{"get":{"tags":["Other"],"summary":"GET /api/worm/anchors","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/anchors — stored peer anchors."}},"/api/worm/anchors/verify":{"get":{"tags":["Other"],"summary":"GET /api/worm/anchors/verify","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/anchors/verify — for each peer, re-pull its LIVE anchor over ZeqSSH and compare against the stored anchor. A mismatch means the peer's WORM state changed since we anchored it → tamper flagged (the W5 gate)."}},"/api/worm/balances":{"get":{"tags":["Other"],"summary":"GET /api/worm/balances","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/balances — the derived projection + status."}},"/api/worm/fed/stream":{"get":{"tags":["Other"],"summary":"GET /api/worm/fed/stream","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"after_seq","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"origin","in":"query","required":false,"schema":{"type":"string"}},{"name":"token","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"SUPER-MACHINE — HTTPS federated-log transport. The TCP replication port (18870) is internal to the zeqmesh network; this serves the SAME federated sub-chain over 443 so an off-host / NAT'd machine can converge. Gated by a PoW-earned join token (see POST /api/mesh/join). Optional ?origin=X serves this node's stored replica of X, so a joiner can pull the WHOLE mesh from a single hub."}},"/api/worm/kernel":{"get":{"tags":["Other"],"summary":"GET /api/worm/kernel","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts"}},"/api/worm/network-mode":{"get":{"tags":["Other"],"summary":"GET /api/worm/network-mode","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/network-mode — this node's federation posture (public, read-only). `solo` (default) = private: seals its own worm_ledger locally, never pulls or serves a peer's ledger. `networked` = participates in the shared economy log. The enterprise-safe default is solo; the operator opts in via ZEQ_NETWORK_MODE."}},"/api/worm/quorum":{"get":{"tags":["Other"],"summary":"GET /api/worm/quorum","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts"}},"/api/worm/replica/{origin}":{"get":{"tags":["Other"],"summary":"GET /api/worm/replica/:origin","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"origin","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/replica/:origin — this node's verified replica snapshot of a peer (root, count, cursor, integrity, folded balances). Read-only; what this node can serve on the peer's behalf."}},"/api/worm/replication":{"get":{"tags":["Other"],"summary":"GET /api/worm/replication","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts"}},"/api/worm/resolve/{origin}":{"get":{"tags":["Other"],"summary":"GET /api/worm/resolve/:origin","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"origin","in":"path","required":true,"schema":{"type":"string"}},{"name":"host","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/resolve/:origin — failover resolve. Serves local if origin is this node; otherwise probes the origin over ZeqSSH and serves its live state if reachable, else this node's verified replica with stale:true."}},"/api/worm/root":{"get":{"tags":["Other"],"summary":"GET /api/worm/root","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts"}},"/api/worm/status":{"get":{"tags":["Other"],"summary":"GET /api/worm/status","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts"}},"/api/worm/tombstone":{"post":{"tags":["Other"],"summary":"POST /api/worm/tombstone","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"POST /api/worm/tombstone — the ONLY delete in a WORM domain. Owner proves ownership by presenting their account equation; the server recomputes the frozen HITE HMAC and timing-safe compares it to the stored equation_hash. On success it appends a hash-linked, ZeqProof-sealed tombstone. The equation is used transiently and is NEVER stored, logged, or echoed. The original event stays intact (append-only) — reads redact tombstoned tokens. Body: { token_id, owner_zid, equation, reason? } 200 → { ok:true, seq, hash, zeqproof, zeqond, already_tombstoned } 403 → wrong equation / not the owner (enumeration-flat message)","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/worm/tombstones/{owner_zid}":{"get":{"tags":["Other"],"summary":"GET /api/worm/tombstones/:owner_zid","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"owner_zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/tombstones/:owner_zid — the token_ids an owner has deleted."}},"/api/worm/verify":{"get":{"tags":["Other"],"summary":"GET /api/worm/verify","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/verify — recompute the ledger hash chain, report integrity."}},"/api/worm/xfers":{"get":{"tags":["Other"],"summary":"GET /api/worm/xfers","responses":{"200":{"description":"OK"},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"worm.ts","description":"GET /api/worm/xfers — this node's cross-shard transfers + settlement status."}},"/api/zeq-auth/api-key":{"delete":{"tags":["Other"],"summary":"DELETE /api/zeq-auth/api-key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts"},"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/api-key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts"},"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/api-key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/api-keys":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/api-keys — List API keys for authenticated user","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts"},"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/api-keys — Create API key for authenticated ZeqAuth user","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/approve/decide":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/approve/decide","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"approvals.ts","description":"Approve or deny. Signed by a bound device when the identity has one; a session alone otherwise.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/approve/lookup":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/approve/lookup","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"user_code","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"approvals.ts","description":"A TV/IoT code the person typed: what is asking, before they approve it.","security":[{"bearerAuth":[]}]}},"/api/zeq-auth/approve/pending":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/approve/pending","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"approvals.ts","description":"What a trusted launcher shows: my pending sign-in requests (TV codes are entered, not listed).","security":[{"bearerAuth":[]}]}},"/api/zeq-auth/approve/poll":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/approve/poll","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"410":{"description":"Gone — retired endpoint","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"approvals.ts","description":"The requester polls. approved → the session (cookie + token), once.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/approve/start":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/approve/start","responses":{"200":{"description":"OK"},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"approvals.ts","description":"A new device asks to sign in. Never reveals whether the ZID/slug exists.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/device/session":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/device/session","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","description":"Exchange a launcher's device key for a short session (PL2 Phase 1). Auth: `Authorization: Bearer zsm_…` — the per-device admin-scope machine key minted by `session-key/mint` with a `device`. Body: `{ device_id }` (the uuid enrolled with that key). The launcher never posts an equation; \"forget this device\" (DELETE /zeq-auth/devices/:id) ends this door immediately. Audited as `login_device`. Sets the session cookie too. @returns {ok:true, token, zid, device_id, expires_in} @error 401 UNAUTHORIZED (bad/revoked key) · 403 DEVICE_REVOKED / DEVICE_UNKNOWN · 400 INVALID_INPUT","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/devices":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/devices","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"devices.ts","description":"Your devices. @returns {devices:[{id,label,platform,created_at,last_seen_at,revoked_at,has_key}]}","security":[{"bearerAuth":[]}]}},"/api/zeq-auth/devices/{id}":{"delete":{"tags":["Other"],"summary":"DELETE /api/zeq-auth/devices/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"devices.ts","description":"Forget a device: its machine key is revoked NOW; the row stays, marked revoked (revision-ordered).","security":[{"bearerAuth":[]}]}},"/api/zeq-auth/devices/policy":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/devices/policy","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"devices.ts","description":"PL2 Phase 4 — launcher-only sign-in status for the signed-in identity.","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/devices/policy","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"devices.ts","description":"Switch launcher-only sign-in. Needs a session AND the device headers signed by one of this identity's bound devices (a stolen session alone cannot lock the owner out; only a device that can still sign in can turn it on or off). Replicated to the mesh like Protected Login.","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/devices/register":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/devices/register","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"devices.ts","description":"PL2 Phase 4 — bind this device to its own Ed25519 key (first registration wins). Auth: `Bearer zsm_…` (the device key) + the device headers signed with the CANDIDATE key over this very request (proof of possession). Body: { device_id, pubkey } — pubkey = raw Ed25519 public key, 64 hex chars. Once bound, POST /zeq-auth/device/session must carry a signature by this key: a copied .zeqkey on another device (no private key) is refused with DEVICE_BOUND. Re-binding to a different key is refused (409 DEVICE_BOUND); forget the device to start over.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/devices/self":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/devices/self","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"devices.ts","description":"Who am I, as a device. Auth: `Bearer zsm_…` (the device key). The launcher's reachability probe and the replacement for GET /session-key, which needs a session. @returns {ok:true, zid, device:{id,label,platform,last_seen_at,revoked_at}|null}"}},"/api/zeq-auth/equation-reissue":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/equation-reissue","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/genesis-claimed":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/genesis-claimed","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts"}},"/api/zeq-auth/health":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/health","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqAuth.ts"}},"/api/zeq-auth/login-v3":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/login-v3","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/logout-v3":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/logout-v3","responses":{"200":{"description":"OK"}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/me":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/me — alias of /profile (ZID + identity card)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts"}},"/api/zeq-auth/profile":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/profile","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuth.ts"}},"/api/zeq-auth/protected":{"delete":{"tags":["Other"],"summary":"DELETE /api/zeq-auth/protected","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"protectedLogin.ts","description":"Turn Protected Login off, fleet-wide. @returns {enabled:false, nodes_total, nodes_holding}","security":[{"bearerAuth":[]}]},"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/protected","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"nodes","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"protectedLogin.ts","description":"Protected Login status for the signed-in identity. Never returns the word. @returns {enabled, set_at, slug, link_base, nodes_total, nodes_holding}","security":[{"bearerAuth":[]}]},"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/protected","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"protectedLogin.ts","description":"Turn Protected Login on (or regenerate the word). Body: {generate:true} or {word:\"…\"} (letters, digits, dashes; 12+ chars). The link is returned ONCE. @returns {link, word, slug, nodes_total, nodes_holding, revision}","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/protected/slug/{slug}":{"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/protected/slug/:slug","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"protectedLogin.ts","description":"slug → ZID. A ZID-shaped slug is simply upper-cased (no lookup); a custom slug resolves only when its machine is PUBLIC (PL2 Phase P — private by default). Never touches the identity table and never says whether a policy exists. @returns {zid, slug, origin}"}},"/api/zeq-auth/recovery-password":{"delete":{"tags":["Other"],"summary":"DELETE /api/zeq-auth/recovery-password","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"recoveryPassword.ts"},"get":{"tags":["Other"],"summary":"GET /api/zeq-auth/recovery-password","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"recoveryPassword.ts"},"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/recovery-password","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"recoveryPassword.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/register-v3":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/register-v3","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/salt/{zid}":{"get":{"tags":["Other"],"summary":"The DB query runs unconditionally, so response timing remains close to the registered path (HMAC is microseconds; DB dominates). - /login-v3 already flattens timing on the auth side, so even if an attacker","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts"}},"/api/zeq-auth/session-key":{"get":{"tags":["Other"],"summary":"Per-user doctrine: there is no anonymous tier. /api/zeq-auth/session-key always reflects the caller's owned state machine — never a shared/free pool key.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts"}},"/api/zeq-auth/session-key/mint":{"post":{"tags":["Other"],"summary":"own row), so this never invalidates the key the web app already stored. Auth: v3 cookie (zeq_auth_token) OR Bearer JWT (same as session-key). Response: 200 { ok, slug, machine_id, api_key, key_prefix, scope } · 401 · 40","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-auth/verify-v3":{"post":{"tags":["Other"],"summary":"POST /api/zeq-auth/verify-v3 Used by the wizard page on load to detect an existing logged-in session. Accepts token from Authorization header, body.token, or zeq_auth_token cookie.","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/archive":{"post":{"tags":["Other"],"summary":"POST /mail/archive","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/compose":{"post":{"tags":["Other"],"summary":"POST /mail/compose","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/contacts":{"get":{"tags":["Other"],"summary":"GET /mail/contacts","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/health":{"get":{"tags":["Other"],"summary":"Routes GET /mail/health","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/inbox":{"get":{"tags":["Other"],"summary":"GET /mail/inbox","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/login":{"post":{"tags":["Other"],"summary":"POST /mail/login","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/mark-read":{"post":{"tags":["Other"],"summary":"POST /mail/mark-read","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/pubkey":{"post":{"tags":["Other"],"summary":"POST /mail/pubkey","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/pubkey/{zid}":{"get":{"tags":["Other"],"summary":"ruinous for scanners trying to map the ZID space. • ZID_RE pre-validates format and returns the SAME 404 shape as a genuine miss, so attackers can't distinguish \"ZID exists but pubkey not set\" from \"ZID for","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"zid","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/register":{"post":{"tags":["Other"],"summary":"POST /mail/register","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/sent":{"get":{"tags":["Other"],"summary":"GET /mail/sent","responses":{"200":{"description":"OK"}},"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/star":{"post":{"tags":["Other"],"summary":"POST /mail/star","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-mail/starred":{"get":{"tags":["Other"],"summary":"GET /mail/starred","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/status":{"get":{"tags":["Other"],"summary":"GET /mail/status","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/trash":{"get":{"tags":["Other"],"summary":"GET /mail/trash","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts"}},"/api/zeq-mail/trash-msg":{"post":{"tags":["Other"],"summary":"POST /mail/trash-msg","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqMail.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq-vault/{id}":{"delete":{"tags":["Other"],"summary":"DELETE /api/zeq-vault/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqVault.ts","security":[{"bearerAuth":[]}]},"get":{"tags":["Other"],"summary":"GET /api/zeq-vault/:id","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqVault.ts","security":[{"bearerAuth":[]}]}},"/api/zeq-vault/list":{"get":{"tags":["Other"],"summary":"GET /api/zeq-vault/list Returns every entry's id + decrypted label + created_at. Does NOT return the blob — that costs a separate /:id GET so the audit log can distinguish \"browsi","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqVault.ts","security":[{"bearerAuth":[]}]}},"/api/zeq-vault/save":{"post":{"tags":["Other"],"summary":"POST /api/zeq-vault/save","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqVault.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/acoustic":{"post":{"tags":["Solvers"],"summary":"Helmholtz acoustics — -p'' = k^2 p, open/closed ends (finite-volume + half-cell mass, Sturm bisection).","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Helmholtz acoustics — -p'' = k^2 p, open/closed ends (finite-volume + half-cell mass, Sturm bisection).","domain":"Acoustics","numericalMethod":"FV Helmholtz eigensolver","operatorChain":"KO42, WM1","unit":"Hz"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/action":{"post":{"tags":["Solvers"],"summary":"Least-action symplectic mechanics — leapfrog Hamiltonian flow q<-q+(h/2)p; p<-p-h*gradV; q<-q+(h/2)p.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"experimentSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Least-action symplectic mechanics — leapfrog Hamiltonian flow q<-q+(h/2)p; p<-p-h*gradV; q<-q+(h/2)p.","domain":"Symplectic Mechanics","numericalMethod":"Leapfrog symplectic map","operatorChain":"KO42-tensioned","unit":"E"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/agent/context-hash":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/agent/context-hash","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/generate-html":{"post":{"tags":["Zeq Core"],"summary":"s/<slug>/ via the existing site-hosting pipeline. PAID-TIER: gates on the same logic as zeqLlm.ts requirePaid(). BYOK calls don't burn compute units; the user pays the LLM provider directly.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/kill/{id}":{"post":{"tags":["Zeq Core"],"summary":"4. POST /kill/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/lineage/{id}":{"get":{"tags":["Zeq Core"],"summary":"3. GET /lineage/:id Spec §8. Full proof genealogy.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/list":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/agent/list","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/mesh/{master_id}":{"get":{"tags":["Zeq Core"],"summary":"their ZeqProofs to the mesh; master collects into a composite tree. WIRED (Phase 7 source-of-truth pass): in-process snapshot via lib/agentMesh.ts; Redis pub/sub auto-subscribes when REDIS_URL is set.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"master_id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/mesh/{master_id}/publish":{"post":{"tags":["Zeq Core"],"summary":"12. POST /mesh/:master_id/publish — child posts its ZeqProof Used by collaborative-agent runs to publish into the mesh. Idempotent per (master_id, agent_id) — re-posting overwrites the previous entry.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"master_id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/operators/custom":{"get":{"tags":["Zeq Core"],"summary":"9. GET /operators/custom — catalogue of derived operators","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/operators/derive":{"post":{"tags":["Zeq Core"],"summary":"WIRED (Phase 7 source-of-truth pass): calls lib/operatorDeriver.ts which runs all 5 steps using the existing zeqCompute + 1,606 operator catalogue. Verification runs ≥3 reference cases at ≤0.1% precision (KO42 guarantee)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/operators/promote":{"post":{"tags":["Zeq Core"],"summary":"Queue for admin review (skills are user-facing IP). Accepts either operator_id (NPD01-style) or skill_id (synth-*) and routes to the appropriate criterion check.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/page-chat":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/agent/page-chat","responses":{"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/prd/{slug}":{"get":{"tags":["Zeq Core"],"summary":"1. GET /api/zeq/agent/prd/:slug","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"prdRoutes.ts"},"put":{"tags":["Zeq Core"],"summary":"2. PUT /api/zeq/agent/prd/:slug Body: { markdown: string, expected_version?: number }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"prdRoutes.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/prd/{slug}/markdown":{"get":{"tags":["Zeq Core"],"summary":"4. GET /api/zeq/agent/prd/:slug/markdown Raw text/markdown body — used by the standalone /s/<slug>/prd/ view + the Phase D build directive composer. Same owner gate as the JSON endpoint","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"prdRoutes.ts"}},"/api/zeq/agent/prd/{slug}/send":{"post":{"tags":["Zeq Core"],"summary":"(gives us the full BYOK pipeline, compute-credit charging, tripwires, and chain commit for free). On success: status flips to 'built', build_run_id is recorded, and the response carries the deployed page summary.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"prdRoutes.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/skills":{"get":{"tags":["Zeq Core"],"summary":"The permanent UI library at /apps/skills/ is the deterministic catalogue (industry × use_case → operator pick). Agents inherit it implicitly via buildSkill() — no DB-backed listing needed for that surface.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"agent_id","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/skills/{id}":{"get":{"tags":["Zeq Core"],"summary":"7. GET /skills/:id — get a synthesised skill definition","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/skills/synthesise":{"post":{"tags":["Zeq Core"],"summary":"WIRED (Phase 7 source-of-truth pass): calls into lib/skillBuilder.ts — the same deterministic synthesis logic the existing UI route (/api/skills/generate) uses. Persists to synthesised_skills table.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/spawn":{"post":{"tags":["Zeq Core"],"summary":"against the user's daily quota BEFORE spawn. Reject 402 if over. • IDEMPOTENCY: optional `Idempotency-Key` header — same key + same canonical body within 1h returns the same agent_id. Critical for retries a","responses":{"200":{"description":"OK"},"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/agent/status/{id}":{"get":{"tags":["Zeq Core"],"summary":"2. GET /status/:id","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts"}},"/api/zeq/agent/tick/{id}":{"post":{"tags":["Zeq Core"],"summary":"3b. POST /tick/:id — manually advance one generation (Driver / poll endpoint while we don't have an in-process daemon yet.)","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqAgent.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/apis/{slug}":{"get":{"tags":["Zeq Core"],"summary":"1. GET /api/zeq/apis/:slug","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"apisRoutes.ts"},"post":{"tags":["Zeq Core"],"summary":"2. POST /api/zeq/apis/:slug Body: { name, base_url, auth_header?, schema_json?, rate_limit_per_min? }","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"apisRoutes.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/apis/{slug}/{id}":{"delete":{"tags":["Zeq Core"],"summary":"4. DELETE /api/zeq/apis/:slug/:id Soft-delete (sets archived_at). Hard-delete would orphan contract refs.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"apisRoutes.ts"},"patch":{"tags":["Zeq Core"],"summary":"3. PATCH /api/zeq/apis/:slug/:id Body: any subset of { base_url, auth_header (string|null), schema_json, rate_limit_per_min, enabled }","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"apisRoutes.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/apis/{slug}/{id}/test":{"post":{"tags":["Zeq Core"],"summary":"5. POST /api/zeq/apis/:slug/:id/test Server-side test forward. Body: { path?, method?, params?, body? } Returns { status, headers, body } — body is text-truncated to 16 KB.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"502":{"description":"Upstream error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"apisRoutes.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/attest":{"post":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/audit-source/{id}/event":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/audit-source/:id/event","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/audit-source/{id}/kill":{"post":{"tags":["Zeq Core"],"summary":"POST /:id/kill","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/audit-source/{id}/narrations":{"get":{"tags":["Zeq Core"],"summary":"GET /:id/narrations","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts"}},"/api/zeq/audit-source/{id}/status":{"get":{"tags":["Zeq Core"],"summary":"GET /:id/status","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts"}},"/api/zeq/audit-source/{id}/sweep":{"post":{"tags":["Zeq Core"],"summary":"POST /:id/sweep","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/audit-source/list":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/audit-source/list","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"slug","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts"}},"/api/zeq/audit-source/spawn":{"post":{"tags":["Zeq Core"],"summary":"POST /spawn","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/audit-source/types":{"get":{"tags":["Zeq Core"],"summary":"GET /types","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"dataSourceAudit.ts"}},"/api/zeq/auto":{"post":{"tags":["Solvers"],"summary":"Auto-router — classifies a natural-language query and dispatches to the best-fit solver, which seals under its own source.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Auto-router — classifies a natural-language query and dispatches to the best-fit solver, which seals under its own source.","domain":"Solver dispatch","numericalMethod":"NL classifier then dispatch","operatorChain":"inherits target solver","unit":"varies"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/buckling":{"post":{"tags":["Solvers"],"summary":"Beam-column buckling — K*phi = P * Kg*phi (Hermitian beam FEM); smallest eigenvalue vs the Euler critical load.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Beam-column buckling — K*phi = P * Kg*phi (Hermitian beam FEM); smallest eigenvalue vs the Euler critical load.","domain":"Structural Stability","numericalMethod":"Generalized eigenvalue FEM","operatorChain":"KO42, BEAM_DEFLECTION","unit":"N"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/climate":{"post":{"tags":["Solvers"],"summary":"Geophysical fluid dynamics — the shallow-water equations solved with a Lax-Friedrichs finite volume scheme.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Geophysical fluid dynamics — the shallow-water equations solved with a Lax-Friedrichs finite volume scheme.","domain":"Geophysical Fluid Dynamics","numericalMethod":"Finite-volume Lax-Friedrichs","operatorChain":"KO42, OC1","unit":"h"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/closedform":{"post":{"tags":["Solvers"],"summary":"Closed-form master-equation solve — the analytic counterpart to /api/zeq/solve. Compiles polynomial couplings into effective (mu2_eff, lambda_eff, F_eff) and evaluates the EXACT branch of d2phi/dt2 = mu2_eff*phi + lambda_eff*phi^3 + F_eff (all / KO42 tensioner): free, uniform-accel, harmonic, hyperbolic, driven, and Duffing phi0*cn(Omega*t,k) via AGM. KO42 first-order on the linear branches; phi^2 / sqrt / exp shapes refused by name. Ships an independent RK4 closed-vs-open cross-check.","x-solver":{"summary":"Closed-form master-equation solve — the analytic counterpart to /api/zeq/solve. Compiles polynomial couplings into effective (mu2_eff, lambda_eff, F_eff) and evaluates the EXACT branch of d2phi/dt2 = mu2_eff*phi + lambda_eff*phi^3 + F_eff (all / KO42 tensioner): free, uniform-accel, harmonic, hyperbolic, driven, and Duffing phi0*cn(Omega*t,k) via AGM. KO42 first-order on the linear branches; phi^2 / sqrt / exp shapes refused by name. Ships an independent RK4 closed-vs-open cross-check.","domain":"Closed-Form Master Field","numericalMethod":"Analytic branch (compile + cn via AGM) + KO42 perturbation","operatorChain":"KO42-tensioned","unit":"phi"},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"Give the effective ODE one of three ways. Precedence: explicit coeffs > operators/couplings. All fields optional.","properties":{"mu2_eff":{"type":"number","description":"Effective mu^2 (skip compile). mu2_eff<0 oscillates (omega0=sqrt(-mu2_eff)); >0 hyperbolic."},"lambda_eff":{"type":"number","description":"Effective lambda (cubic term -> Duffing)."},"F_eff":{"type":"number","description":"Effective constant forcing."},"couplings":{"type":"array","items":{"type":"object"},"description":"Polynomial couplings to fold: {a,b,c,d} cubic (c!=0 -> refused QUADRATIC) or {samples:[[x,y],...]} (>=4 pts; extra pts checked -> NONPOLY)."},"operators":{"type":"array","items":{},"description":"Operator IDs (or {id,equation,unit,drive}) compiled AS couplings: one input is driven base*(1+scale*phi), the real formula is sampled over the phi grid, fit to a cubic and folded. KO42 sets the frame. Non-polynomial operators (Kepler a^1.5, de-Broglie 1/v) refuse NONPOLY by name."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Anchor values the operator formulas consume (mass, a, r, v, ...)."},"compile":{"type":"object","properties":{"scale":{"type":"number","description":"Drive amplitude in base*(1+scale*phi). Default 0.25."}}},"phi0":{"type":"number","description":"Initial field value. Default: equilibrium launch -F_eff/mu2_eff + 0.5."},"phidot0":{"type":"number","description":"Initial field velocity. Default 0."},"t":{"type":"number","description":"Evaluation time. Default 1."},"ko42":{"type":"boolean","description":"Apply the KO42 tensioner first-order on the linear branches. Default true."},"alpha":{"type":"number","description":"KO42.1 tensioner amplitude. Default 1e-3."},"mode":{"type":"string","enum":["auto","manual"],"description":"manual uses beta as the tensioner amplitude."}}}}}},"responses":{"200":{"description":"On solve: {ok:true, value:phi(t), branch, mu2_eff/lambda_eff/F_eff, phi_t, phidot_t, closedVsOpenPct, compile:{mode,ruleset,scale,operators,anchors,effective}, zeqProof, envelope}. On a shape the master equation cannot carry: {ok:true, refused:true, refusal:{code,term,message}} with code in QUADRATIC | NONPOLY | DRIVEN_DUFFING | SEPARATRIX | NO_BOUNDED_OSCILLATION | DUFFING_NEEDS_REST | PARAMETRIC_RESONANCE | UNKNOWN_OPERATOR | MISSING_INPUT | COMPILE_DEGENERATE (the refusal IS the answer)."},"401":{"description":"Missing or invalid key"},"402":{"description":"Insufficient compute credit"}}}},"/api/zeq/compliance/verify":{"post":{"tags":["Compute & Proof"],"summary":"Surface route (auth: public), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/compose":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/compose","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqCompose.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/compute":{"post":{"tags":["Solvers"],"summary":"Operator compute — the billing spine. Runs the 7-step Zeqond protocol (SELECT · BIND · VALIDATE · COMPUTE · VERIFY · PULSE · RETURN) over KO42 + up to 3 operators and seals a signed receipt.","x-solver":{"summary":"Operator compute — the billing spine. Runs the 7-step Zeqond protocol (SELECT · BIND · VALIDATE · COMPUTE · VERIFY · PULSE · RETURN) over KO42 + up to 3 operators and seals a signed receipt.","domain":"wizard-selected","numericalMethod":"7-step wizard protocol","operatorChain":"KO42 + up to 3 operators","unit":"per-operator"},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}},"responses":{"200":{"description":"Sealed wizard result with ZeqProof"},"401":{"description":"Missing/invalid key"},"402":{"description":"Insufficient compute credit"}}}},"/api/zeq/computes":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/conformance":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/conformance","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"503":{"description":"Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"conformance.ts"}},"/api/zeq/conformance/badge.json":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/conformance/badge.json","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"conformance.ts"}},"/api/zeq/conformance/badge.svg":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/conformance/badge.svg","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"conformance.ts"}},"/api/zeq/device":{"post":{"tags":["Solvers"],"summary":"Semiconductor devices — PN-junction built-in voltage and Poisson/Laplace electrostatics (matrix-free Jacobi-PCG).","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Semiconductor devices — PN-junction built-in voltage and Poisson/Laplace electrostatics (matrix-free Jacobi-PCG).","domain":"Semiconductor Devices","numericalMethod":"Poisson/Laplace solver (PCG)","operatorChain":"KO42, CMP11","unit":"V"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/dock":{"post":{"tags":["Solvers"],"summary":"Molecular docking — rigid-body 6-DOF minimisation of the Lennard-Jones + Coulomb interaction energy.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Molecular docking — rigid-body 6-DOF minimisation of the Lennard-Jones + Coulomb interaction energy.","domain":"Molecular Docking","numericalMethod":"Global optimization (6 DOF)","operatorChain":"KO42, BINDING_AFFINITY","unit":"epsilon"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/epi":{"post":{"tags":["Solvers"],"summary":"Compartmental epidemiology — SIR/SEIR ODEs; basic reproduction number R0 and epidemic peak.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Compartmental epidemiology — SIR/SEIR ODEs; basic reproduction number R0 and epidemic peak.","domain":"Epidemiology","numericalMethod":"Compartmental ODE","operatorChain":"KO42, CELL_GROWTH","unit":"R0"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/evolve":{"post":{"tags":["Solvers"],"summary":"Molecular dynamics — velocity-Verlet NVE over a Lennard-Jones + harmonic potential, energy-conserving.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"experimentSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Molecular dynamics — velocity-Verlet NVE over a Lennard-Jones + harmonic potential, energy-conserving.","domain":"Molecular Dynamics","numericalMethod":"Velocity-Verlet (symplectic)","operatorChain":"KO42-tensioned","unit":"epsilon"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/fea":{"post":{"tags":["Solvers"],"summary":"Structural FEA — plane-stress K*u=f (Q4 elements, matrix-free Jacobi-PCG); tip deflection vs Euler-Bernoulli.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Structural FEA — plane-stress K*u=f (Q4 elements, matrix-free Jacobi-PCG); tip deflection vs Euler-Bernoulli.","domain":"Structural FEA","numericalMethod":"Q4 FEM, matrix-free PCG","operatorChain":"KO42, FEA_DISPLACEMENT, BEAM_DEFLECTION","unit":"m"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/flow":{"post":{"tags":["Solvers"],"summary":"Incompressible Navier-Stokes — du/dt+(u.grad)u = -grad p + nu*laplacian(u), div u = 0 (Stam stable fluids).","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Incompressible Navier-Stokes — du/dt+(u.grad)u = -grad p + nu*laplacian(u), div u = 0 (Stam stable fluids).","domain":"Fluid Dynamics","numericalMethod":"Semi-Lagrangian projection (Stam)","operatorChain":"KO42, FL3","unit":"m/s"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/fracture":{"post":{"tags":["Solvers"],"summary":"Bond-based peridynamics — mode-I crack; bonds break on irreversible stretch, cascaded quasi-static equilibrium.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Bond-based peridynamics — mode-I crack; bonds break on irreversible stretch, cascaded quasi-static equilibrium.","domain":"Fracture Mechanics","numericalMethod":"Bond-based peridynamics","operatorChain":"KO42, STRESS_ANALYSIS","unit":"sigma"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/gauge":{"post":{"tags":["Solvers"],"summary":"Lattice gauge theory — compact U(1), Wilson action; mean plaquette vs the exact I1(beta)/I0(beta).","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Lattice gauge theory — compact U(1), Wilson action; mean plaquette vs the exact I1(beta)/I0(beta).","domain":"Lattice Gauge Theory","numericalMethod":"Monte Carlo lattice","operatorChain":"KO42, HEP4","unit":"plaq"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/grid":{"post":{"tags":["Solvers"],"summary":"Power systems — DC power flow B*theta=P; line flows and Kirchhoff current law checked.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Power systems — DC power flow B*theta=P; line flows and Kirchhoff current law checked.","domain":"Power Systems","numericalMethod":"Linear DC power-flow solve","operatorChain":"KO42, POWER_ELECTRICAL","unit":"pu"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/harness":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/harness What this node actually offers, and honestly what it does not.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"harness.ts"}},"/api/zeq/heat":{"post":{"tags":["Solvers"],"summary":"Heat / thermal diffusion — dT/dt = alpha * laplacian(T) in 1-D and 2-D, Crank-Nicolson / FTCS / ADI, checked vs the exact Fourier decay.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Heat / thermal diffusion — dT/dt = alpha * laplacian(T) in 1-D and 2-D, Crank-Nicolson / FTCS / ADI, checked vs the exact Fourier decay.","domain":"Thermal Diffusion","numericalMethod":"Crank-Nicolson / FTCS / ADI","operatorChain":"KO42, CHE17","unit":"T"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/kalman":{"post":{"tags":["Solvers"],"summary":"Kalman filter — predict/update with Joseph-form covariance; converges to the discrete-algebraic-Riccati fixed point.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Kalman filter — predict/update with Joseph-form covariance; converges to the discrete-algebraic-Riccati fixed point.","domain":"State Estimation","numericalMethod":"Recursive Bayes / Riccati (Joseph)","operatorChain":"KO42, CS47","unit":"err"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/lattice":{"post":{"tags":["Zeq Core"],"summary":"Surface route (auth: session+key), registered via wizardSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"wizardSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/lib-search":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/lib-search 208 libraries / 44 categories, ONE merged catalogue. Ask before writing code that needs a library; it returns the exact package id.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"harness.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/llm/credentials":{"get":{"tags":["Zeq Core"],"summary":"GET /credentials — list caller's credentials","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts"},"post":{"tags":["Zeq Core"],"summary":"POST /credentials — create","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/llm/credentials/{id}":{"delete":{"tags":["Zeq Core"],"summary":"DELETE /credentials/:id — soft disable","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts"},"get":{"tags":["Zeq Core"],"summary":"GET /credentials/:id","responses":{"200":{"description":"OK"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts"}},"/api/zeq/llm/credentials/{id}/system-default":{"post":{"tags":["Zeq Core"],"summary":"At most one credential per provider can hold the flag — the partial unique index in migration 0004 enforces this. We unset any prior default for the same provider in the same transaction-equivalent (sequential updates; t","responses":{"200":{"description":"OK"},"403":{"description":"Forbidden — authenticated, but not permitted for this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"412":{"description":"Precondition failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/llm/providers":{"get":{"tags":["Zeq Core"],"summary":"GET /providers — public registry of supported providers Open route (no paid gate) so the frontend can render the choose-provider UI before the user upgrades.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts"}},"/api/zeq/llm/system-default/{provider}":{"get":{"tags":["Zeq Core"],"summary":"GET /system-default/:provider — public (no key info) Lets the chat UI know whether a free-tier provider is configured so it can render the right CTA. Returns booleans only.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts"}},"/api/zeq/llm/test":{"post":{"tags":["Zeq Core"],"summary":"POST /test — test a credential without storing Useful for the admin frontend's \"Verify key\" button. Sends a tiny \"ping\" prompt; returns provider response shape so users see whether their key +","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqLlm.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/lorenz":{"post":{"tags":["Solvers"],"summary":"Lorenz system — x'=sigma(y-x), y'=x(rho-z)-y, z'=xy-beta*z, RK4; phase-volume contraction invariant.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Lorenz system — x'=sigma(y-x), y'=x(rho-z)-y, z'=xy-beta*z, RK4; phase-volume contraction invariant.","domain":"Chaotic Dynamics","numericalMethod":"RK4","operatorChain":"KO42, NL10","unit":"1/t"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/lotka":{"post":{"tags":["Solvers"],"summary":"Lotka-Volterra predator-prey — dx/dt=ax-bxy, dy/dt=dxy-gy; conserved first integral.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Lotka-Volterra predator-prey — dx/dt=ax-bxy, dy/dt=dxy-gy; conserved first integral.","domain":"Population Ecology","numericalMethod":"ODE integrator (conserved H)","operatorChain":"KO42, CELL_GROWTH","unit":"T"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/multibody":{"post":{"tags":["Solvers"],"summary":"N-body master-equation engine — pairwise Newtonian gravity when positions are supplied, RK4 time-stepping.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"experimentSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"N-body master-equation engine — pairwise Newtonian gravity when positions are supplied, RK4 time-stepping.","domain":"HULYAS Master Field (N-body)","numericalMethod":"RK4 (N-body)","operatorChain":"KO42-tensioned","unit":"J"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/operator-spec":{"post":{"tags":["Zeq Core"],"summary":"The accepted INPUT KEYS for an operator or domain — what zeq_find_operator's description promises. Call it BEFORE zeq_compute instead of guessing a key name: a guessed key plus (until today) a silent default is how GR37","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"harness.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/opt":{"post":{"tags":["Solvers"],"summary":"Numerical optimization — min f(x) by descent; convergence checked against the known optimum.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Numerical optimization — min f(x) by descent; convergence checked against the known optimum.","domain":"Optimization","numericalMethod":"Numerical optimization (descent)","operatorChain":"KO42, CS75","unit":"f"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/phase":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: public), registered via heartbeatSurface.ts manifest.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"heartbeatSurface.ts"}},"/api/zeq/plnb/observe":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/plnb/observe","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"plnb.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/plnb/operator":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/plnb/operator","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"plnb.ts"}},"/api/zeq/protect":{"post":{"tags":["Solvers"],"summary":"PulseGuard protection heartbeat — computes ZEQ-PROTECT-001 |sin(5*phi)|/f_pulse and ZEQ-PROTECT-002 0.5+0.3*sin(t/30) from the Zeqond phase, maps a liveness signal (health up/slow/down, or liveness 0..1, or an HTTP status) to a branch (harmonic guard / hyperbolic alarm), and seals the attestation with R(t)=S(t)[1+alpha*sin(2pi*1.287*t)]. guardState OK/DEGRADED/BREACH.","x-solver":{"summary":"PulseGuard protection heartbeat — computes ZEQ-PROTECT-001 |sin(5*phi)|/f_pulse and ZEQ-PROTECT-002 0.5+0.3*sin(t/30) from the Zeqond phase, maps a liveness signal (health up/slow/down, or liveness 0..1, or an HTTP status) to a branch (harmonic guard / hyperbolic alarm), and seals the attestation with R(t)=S(t)[1+alpha*sin(2pi*1.287*t)]. guardState OK/DEGRADED/BREACH.","domain":"PulseGuard Protection","numericalMethod":"ZEQ-PROTECT operators + Zeq proper-time modulation","operatorChain":"KO42 + ZEQ-PROTECT-001/002","unit":"P"},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","description":"All fields optional. Supply t (unix seconds) or phase (radians), and a liveness signal.","properties":{"t":{"type":"number","description":"unix seconds — drives the Zeqond phase and P002"},"phase":{"type":"number","description":"phase in radians (overrides t for P001)"},"health":{"type":"string","enum":["up","slow","down"],"description":"liveness; or use liveness or status"},"liveness":{"type":"number","description":"liveness in [0,1]"},"status":{"type":"number","description":"HTTP status as a liveness proxy (200=up)"}}}}}},"responses":{"200":{"description":"Sealed protection attestation: { ok:true, value:P001, unit:P, result:{ P001, P002, branch, guardState, mu2_eff, R_t }, zeqProof, envelope }"},"401":{"description":"Missing or invalid key"},"402":{"description":"Insufficient compute credit"}}}},"/api/zeq/prove":{"post":{"tags":["Compute & Proof"],"summary":"PUBLIC keyless KO42 proof — 10/min/IP. For AI agents to verify the SDK computes real math.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"}},"domain":{"type":"string"},"inputs":{"type":"object","additionalProperties":{"type":"number"}}}}}}},"responses":{"200":{"description":"Signed 7-step protocol receipt"},"429":{"description":"Rate limited"}}}},"/api/zeq/prove/verify":{"post":{"tags":["Compute & Proof"],"summary":"Verify a /prove receipt (PUBLIC, no auth, 10/min/IP).","responses":{"200":{"description":"{ valid, R_t, zeqond, operatorIds }"}}}},"/api/zeq/pulse":{"get":{"tags":["Compute & Proof"],"summary":"Live HulyaPulse — Zeqond number, phase, R(t) modulation (no auth).","responses":{"200":{"description":"Pulse object"}}}},"/api/zeq/pulse/stream":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via heartbeatSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"heartbeatSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/quant":{"post":{"tags":["Solvers"],"summary":"Quantitative finance — geometric-Brownian-motion Monte-Carlo option pricing, verified vs the Black-Scholes closed form.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Quantitative finance — geometric-Brownian-motion Monte-Carlo option pricing, verified vs the Black-Scholes closed form.","domain":"Quantitative Finance","numericalMethod":"Monte Carlo (vs Black-Scholes)","operatorChain":"KO42, BLACK_SCHOLES","unit":"$"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/react":{"post":{"tags":["Solvers"],"summary":"Reaction-diffusion chemical kinetics — coupled species diffuse and react on a grid; steady state / pattern checked.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Reaction-diffusion chemical kinetics — coupled species diffuse and react on a grid; steady state / pattern checked.","domain":"Reaction-Diffusion","numericalMethod":"Reaction-diffusion integrator","operatorChain":"KO42, ICO9","unit":"c"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/reactor":{"post":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/reactor/{id}":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reactor/{id}/close":{"post":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/reactor/{id}/next":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reactor/{id}/observe":{"post":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/reactor/{id}/secure/open":{"post":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/reactor/{id}/secure/pull":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: public), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts"}},"/api/zeq/reactor/{id}/state":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reactor/{id}/step":{"post":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/reactor/{id}/telemetry":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reactor/{id}/trajectory":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reactors":{"get":{"tags":["Reactor"],"summary":"Surface route (auth: session+key), registered via reactorSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"reactorSurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/receipts":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/receipts/{id}":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/reverify":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/reverify","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"reverify.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/sat":{"post":{"tags":["Solvers"],"summary":"Boolean satisfiability — random 3-SAT (hardness peak alpha~4.26), DPLL + unit propagation; assignment certified.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Boolean satisfiability — random 3-SAT (hardness peak alpha~4.26), DPLL + unit propagation; assignment certified.","domain":"Computational Complexity","numericalMethod":"DPLL + unit propagation","operatorChain":"KO42, CS81","unit":"decisions"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/schrodinger":{"post":{"tags":["Solvers"],"summary":"Time-independent Schrodinger — H*psi = E*psi, tridiagonal finite-difference spectrum (Sturm bisection) vs the exact analytic levels.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Time-independent Schrodinger — H*psi = E*psi, tridiagonal finite-difference spectrum (Sturm bisection) vs the exact analytic levels.","domain":"Quantum Mechanics","numericalMethod":"FD eigensolver (Sturm bisection)","operatorChain":"KO42, QM5","unit":"E"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/sdk/metadata":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: public), registered via heartbeatSurface.ts manifest.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"heartbeatSurface.ts"}},"/api/zeq/settle":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/settle","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"settle.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/shift":{"post":{"tags":["Zeq Core"],"summary":"Surface route (auth: session+key), registered via wizardSurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"wizardSurface.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/solve":{"post":{"tags":["Solvers"],"summary":"HULYAS master-field solver — integrates the master equation Box-phi - mu^2(r)phi - lambda*phi^3 - e^(-phi/phi_c) + phi_42 * Sum C_k(phi) by RK4.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"experimentSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"HULYAS master-field solver — integrates the master equation Box-phi - mu^2(r)phi - lambda*phi^3 - e^(-phi/phi_c) + phi_42 * Sum C_k(phi) by RK4.","domain":"HULYAS Master Field","numericalMethod":"RK4","operatorChain":"KO42-tensioned","unit":"J"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/state/live":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: public), registered via heartbeatSurface.ts manifest.","responses":{"200":{"description":"OK"}},"x-zeq-tier":"public","x-zeq-source":"heartbeatSurface.ts"}},"/api/zeq/stream/channels/{id}/pull":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/stream/channels/:id/pull","responses":{"200":{"description":"OK"},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/stream/channels/{id}/secure/pull":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/stream/channels/:id/secure/pull","responses":{"200":{"description":"OK"},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/stream/solvers":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/stream/solvers","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/streams/{id}/pull":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/streams/:id/pull","responses":{"200":{"description":"OK"},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/streams/{id}/secure/pull":{"get":{"tags":["Zeq Core"],"summary":"GET /api/zeq/streams/:id/secure/pull","responses":{"200":{"description":"OK"},"402":{"description":"Insufficient compute credit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/streams/solvers":{"get":{"tags":["Zeq Core"],"summary":"GET solvers — the catalogue a builder UI populates from","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqStream.ts"}},"/api/zeq/tumor":{"post":{"tags":["Solvers"],"summary":"Fisher-KPP tumor growth-front — du/dt = D u_xx + r u(1-u); front speed vs the Ablowitz-Zeppetella exact wave.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Fisher-KPP tumor growth-front — du/dt = D u_xx + r u(1-u); front speed vs the Ablowitz-Zeppetella exact wave.","domain":"Growth-Front Dynamics","numericalMethod":"Reaction-diffusion PDE","operatorChain":"KO42, CELL_GROWTH","unit":"c"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/unified":{"post":{"tags":["Solvers"],"summary":"Unified multi-domain composer — evaluates a supplied operator list into ONE sealed value with a safe evaluator (no eval/Function): algebraic product, sequential/RK4, or fallback, under the KO42 frame. Operator chain, unit and master equation are derived at runtime.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Unified multi-domain composer — evaluates a supplied operator list into ONE sealed value with a safe evaluator (no eval/Function): algebraic product, sequential/RK4, or fallback, under the KO42 frame. Operator chain, unit and master equation are derived at runtime.","domain":"Multi-Domain Composition","numericalMethod":"Safe evaluator — algebraic / sequential-RK4 / fallback","operatorChain":"dynamic (from the operators you pass)","unit":"dynamic"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/usage":{"get":{"tags":["Compute & Proof"],"summary":"Surface route (auth: session+key), registered via verifySurface.ts manifest.","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"verifySurface.ts","security":[{"bearerAuth":[]}]}},"/api/zeq/verify":{"post":{"tags":["Compute & Proof"],"summary":"Verify a /compute ZeqProof HMAC (auth required).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Verification result"},"401":{"description":"Missing/invalid key"}}}},"/api/zeq/wave":{"post":{"tags":["Solvers"],"summary":"Wave equation — 2-D membrane d2u/dt2 = c^2 * laplacian(u), energy-conserving leapfrog; exact standing-mode check.","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Wave equation — 2-D membrane d2u/dt2 = c^2 * laplacian(u), energy-conserving leapfrog; exact standing-mode check.","domain":"Wave Mechanics","numericalMethod":"Leapfrog (energy-conserving)","operatorChain":"KO42, WM1","unit":"E"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeq/web-search":{"post":{"tags":["Zeq Core"],"summary":"POST /api/zeq/web-search","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zeqWebSearch.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/wizard/auth-bootstrap":{"post":{"tags":["Zeq Core"],"summary":"This split was added under the wizard-ratelimit-emergency-fix patch after agent + browser-driven traffic exhausted the shared anon counter and locked every visitor out of /auth/. Vault generators that should consume the","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/wizard/compute":{"post":{"tags":["Zeq Core"],"summary":"NOTE: the registration wizard at /auth/ does NOT call this endpoint anymore — it calls /zeq/wizard/auth-bootstrap (below) which has its own dedicated bucket so account creation cannot be starved by general anon compute t","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqAuthV3.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zeq/zeta":{"post":{"tags":["Solvers"],"summary":"Riemann zeta — Riemann-Siegel Z(t); nontrivial zeros of zeta(1/2+it) counted vs N(T).","responses":{"200":{"description":"Sealed result envelope — value, unit, operatorChain, masterEquation, HMAC zeqProof."},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"402":{"description":"Insufficient compute credit"}},"x-zeq-tier":"public","x-zeq-source":"solverSurface.ts","security":[{"bearerAuth":[]}],"x-solver":{"summary":"Riemann zeta — Riemann-Siegel Z(t); nontrivial zeros of zeta(1/2+it) counted vs N(T).","domain":"Analytic Number Theory","numericalMethod":"Riemann-Siegel root count","operatorChain":"KO42","unit":"zeros"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operators":{"type":"array","items":{"type":"string"},"description":"Operator IDs to run. KO42 sets the metric frame, e.g. [\"KO42\",\"GR37\",\"NM19\"]."},"inputs":{"type":"object","additionalProperties":{"type":"number"},"description":"Named numeric inputs the operators consume (mass, r, v, ...)."},"consts":{"type":"object","additionalProperties":{"type":"number"},"description":"Optional constant overrides (t, alpha, f_H, ...)."},"domain":{"type":"string","description":"Optional domain hint (used by /compute and /auto)."},"query":{"type":"string","description":"Natural-language problem statement (used by /auto)."}}}}}}}},"/api/zeqpm/vault":{"get":{"tags":["Other"],"summary":"GET — pull the encrypted blob for this ZID (null if none yet).","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqpmVault.ts","security":[{"bearerAuth":[]}]},"put":{"tags":["Other"],"summary":"PUT — push; optimistic concurrency on updated_at.","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zeqpmVault.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/compute-key":{"delete":{"tags":["Other"],"summary":"DELETE /api/zsc/compute-key — revoke (unreadable AND unusable)","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"},"get":{"tags":["Other"],"summary":"be able to paste it into something. After that only the elided prefix ever leaves the vault. GET /api/zsc/compute-key — what this app uses (never the key)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"},"post":{"tags":["Other"],"summary":"POST /api/zsc/compute-key — mint for an app (idempotent)","responses":{"200":{"description":"OK"},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/compute-key/list":{"get":{"tags":["Other"],"summary":"GET /api/zsc/compute-key/list — default + every per-app key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"}},"/api/zsc/public/{app}/{env}/{name}":{"delete":{"tags":["Other"],"summary":"DELETE /api/zsc/public/:app/:env/:name","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"path","required":true,"schema":{"type":"string"}},{"name":"env","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}]}},"/api/zsc/public/get":{"get":{"tags":["Other"],"summary":"GET /api/zsc/public/get?app=X&key=Y[&env=Z]","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}},{"name":"env","in":"query","required":false,"schema":{"type":"string"}},{"name":"key","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}]}},"/api/zsc/public/list":{"get":{"tags":["Other"],"summary":"GET /api/zsc/public/list?app=X[&env=Z]","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}},{"name":"env","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}]}},"/api/zsc/public/put":{"post":{"tags":["Other"],"summary":"POST /api/zsc/public/put","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/public/rotate":{"post":{"tags":["Other"],"summary":"POST /api/zsc/public/rotate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/public/subscribe":{"post":{"tags":["Other"],"summary":"POST /api/zsc/public/subscribe","responses":{"201":{"description":"Created"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscPublic.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/user-key":{"delete":{"tags":["Other"],"summary":"DELETE /api/zsc/user-key — revoke","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"},"get":{"tags":["Other"],"summary":"GET /api/zsc/user-key — what is connected (never the key)","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string"}}],"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"},"put":{"tags":["Other"],"summary":"PUT /api/zsc/user-key — seal or rotate","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"409":{"description":"Conflict — the resource is not in a state that allows this","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsc/user-key/list":{"get":{"tags":["Other"],"summary":"GET /api/zsc/user-key/list — the default + every per-app override","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts"}},"/api/zsc/user-key/resolve":{"post":{"tags":["Other"],"summary":"POST /api/zsc/user-key/resolve — service-to-service, emits the key","responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"owner","x-zeq-source":"zscUserKey.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsp/protect":{"post":{"tags":["Other"],"summary":"POST /api/zsp/protect","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zsp.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsp/scan":{"post":{"tags":["Other"],"summary":"POST /api/zsp/scan","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zsp.ts","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/zsp/status":{"get":{"tags":["Other"],"summary":"Phase C completion (TODO-2 from phase-c-report.md) — public read-only status snapshot used by apps/zeq-dev/public/apps/zsp/index.html. No secret material is exposed; this surface only describes current health of the prot","responses":{"200":{"description":"OK"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zsp.ts"}},"/api/zsp/unprotect":{"post":{"tags":["Other"],"summary":"AU2: auth-gated like protect. The zid used for the temporal HMAC stays body→env.zid resolution (backward compat — old envelopes were stamped with the zid they carry; forcing the session zid here would break them).","responses":{"200":{"description":"OK"},"400":{"description":"Bad request — a parameter or body field is missing or malformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"401":{"description":"Missing or invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZeqError"}}}}},"x-zeq-tier":"public","x-zeq-source":"zsp.ts","security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object"}}}}}}},"x-mcp":{"endpoint":"/api/mcp","protocol":"JSON-RPC 2.0 (MCP Streamable HTTP)","toolCount":60,"map":"zeq_api_catalog","door":"zeq_http"},"x-mcp-tools":[{"name":"zeq_hpz","description":"HulyaPulse-Zeqond solver — ONE solver over everything, in natural units where c = ħ = k_B = ε₀ = 1 and time is counted in Zeqonds (f₀ = 1287/1000 Hz exactly, definitional). It dispatches on mathematical FORM, not on subject area, and there are only three:\n  • closed     — evaluate a finite expression. `expression` plus `inputs` for every free symbol. Constants (c, hbar, h, k_B, eps0, mu0, G, e, m_e, m_p, m_n, sigma_SB, b_Wien, N_A, alpha, M_Planck, pi, two_pi, euler) resolve automatically as PURE NUMBERS; an unbound symbol is REFUSED by name, never defaulted. Pass `dim` [M,L,T,I,Θ,N,J] to get the SI value back.\n  • dynamical  — integrate the HULYAS master equation ϕ̈ = −3Hϕ̇ − μ²ϕ − λϕ³ − e^{−ϕ/ϕ_c} + ϕ_c²ΣC_k − T^μ_μ − βF² − J_ext, on a Minkowski or cubic-sine FLRW background. Returns the trajectory, the residual of the published equation on it, and both HULYAS runtime equations: the Functional Equation E = P_ϕ·Z(M,R,δ,C,X) and the Spectral-Topological propagator Ψ = ∭K·ϕ.\n  • geometry   — sample a closed-form invariant of the cyclic FLRW reference spacetime a(t) = 1 + ε sin³(πt): a, H, HDot, R, K, rho, P, V, rhoPlusP.\n  • integral   — a DEFINITE INTEGRAL by adaptive Gauss–Kronrod (G7/K15), with the error MEASURED from the embedded pair. `expression`, `variable`, `from`, `to`. A singular integrand is refused with the abscissa where it blew up.\n  • ode        — dy/d<var> = f(var, y) from an initial value, adaptive DP54.\n  • series     — Σ or ∏ over an INTEGER index, by Kahan compensated summation, so the answer does not depend on the order the terms were added in. The residual compensation IS the reported uncertainty. A fractional limit is refused and points at the integral form; an overflowing product is refused rather than returned as Infinity.\n  • pde        — a FIELD EQUATION by the method of lines: wave, heat, klein-gordon, schrodinger, or **hulyas** — the HULYAS master equation with ∇²ϕ ACTUALLY PRESENT, which no other implementation in this framework carries (they all drop the spatial term and integrate the homogeneous reduction). The uncertainty is the drift of the equation's own conserved quantity — field energy, mass, or norm — because a scheme can take small steps and still not be solving the equation.\n  • operator   — evaluate one of the **1,612 registry operators** from ITS OWN published equation. `operator` is the id (GR37, HOHMANN_TRANSFER, …) plus `inputs` for its free symbols. 805 of the 1,612 are closed-form algebra and evaluate here; the other 807 are integrals, partial differential equations, series, systems, asymptotic growth classes and tensor expressions, and are REFUSED BY SHAPE with the kind named — never answered with a neighbouring solver's formula. Σ C_k in the master equation couples to these same ids, and an id that is not in the registry is refused with near misses.\n  • vector     — VECTOR ALGEBRA and VECTOR CALCULUS. `vector: {op, …}`. Algebra: dot, cross, norm, unit, add, sub, scale, triple, angle, project — each checked against an identity (Lagrange for the cross product, ‖â‖ = 1 for the unit vector, (a − proj)·b = 0 for the projection) and each carrying an ABSOLUTE rounding bound, so two near-perpendicular vectors whose dot product cancels to nothing come back OUT OF TOLERANCE instead of as a confident 0. Calculus: gradient, divergence, curl and laplacian of a field given as EXPRESSIONS, evaluated at a point — `{op:'curl', field:['-y','x','0'], at:{x:1,y:2,z:0}}`. The derivative is a central difference Richardson-extrapolated to O(h⁴), and the extrapolation's own disagreement IS the reported uncertainty. The step is scaled to the point, so a derivative at x = 1e8 is not pure rounding noise. cross and curl exist only in three dimensions and refuse anything else BY NAME rather than padding with zeros.\n  • quantum    — HILBERT-SPACE vectors and the operators on them. `quantum: {op, psi, phi, a, b, rho}`; amplitudes are numbers or [re, im] pairs. inner (⟨φ|ψ⟩, conjugating the LEFT argument), probability (the Born rule), norm, normalise, apply (Â|ψ⟩), expectation (⟨ψ|Â|ψ⟩/⟨ψ|ψ⟩), variance (⟨Â²⟩ − ⟨Â⟩²), commutator and anticommutator, outer (ρ = |ψ⟩⟨ψ|), trace, purity Tr(ρ²), the von Neumann entropy −Tr(ρ log ρ) by Jacobi on the real 2n × 2n embedding, and the Kronecker product |ψ⟩⊗|φ⟩. EVERY ONE IS CROSS-CHECKED against a property a wrong implementation cannot fake — Cauchy–Schwarz on the inner product, ⟨Â⟩ real for a Hermitian Â with ‖Â − Â†‖ reported so a non-observable cannot pass itself off as one, Var ≥ 0, ρ² = ρ for a pure state, Σλᵢ = Tr ρ — and the check must PASS for `verified`, because an expectation value that comes out complex is wrong however tight its rounding bound. A non-Hermitian ρ is REFUSED for the entropy rather than returned as a number that would look like one.\nTHE UNCERTAINTY IS MEASURED, NOT STAMPED — a closed-form cross-check against an independent numerical route, a Richardson step-doubling estimate, or the exact arithmetic bound — so `verified` means the bound was actually met. Every result is SEALED with an Ed25519 claim that carries its own recipe, so `zeq_hpz_verify` can RE-DERIVE the value offline instead of trusting this node. The claim also carries a `repro_digest` — SHA-256 over everything but the tick — so two claims of the SAME computation made at different times share it, and reproducibility is checkable with a hash rather than asserted. No API key required.","inputSchema":{"type":"object","properties":{"form":{"type":"string","description":"closed | operator | geometry | dynamical | integral | ode | pde | series | vector | quantum"},"expression":{"type":"string","description":"closed: e.g. \"2*G*M/c^2\" or \"sqrt(hbar*c/G)\""},"inputs":{"type":"object","description":"closed: a value for every free symbol, in HPZ units"},"dim":{"type":"array","description":"closed: SI dimensions [M,L,T,I,Θ,N,J] to convert the answer back","items":{"type":"number"}},"unit":{"type":"string","description":"a label for the receipt; never read by the maths"},"quantity":{"type":"string","description":"geometry: a | H | HDot | R | K | rho | P | V | rhoPlusP"},"t":{"type":"number","description":"geometry: time in Zeqonds (the geometry has period 2)"},"epsilon":{"type":"number","description":"geometry/dynamical: 0 < ε < 1, default 0.3"},"operator":{"type":"string","description":"operator: a registry id, e.g. GR37 or HOHMANN_TRANSFER"},"variable":{"type":"string","description":"integral/ode: the variable of integration (default x / t)"},"from":{"type":"number","description":"integral/ode: lower limit"},"to":{"type":"number","description":"integral/ode: upper limit"},"y0":{"type":"number","description":"ode: the initial value"},"product":{"type":"boolean","description":"series: true for the product instead of the sum"},"rtol":{"type":"number","description":"the tolerance the solver must hold; it is signed into the claim"},"atol":{"type":"number"},"pde":{"type":"object","description":"pde: {equation:'wave'|'heat'|'klein-gordon'|'schrodinger'|'hulyas', nx, length, boundary, tMax, frames, speed, diffusivity, muSq, lambda, phiC, couplingSum, jExt, background, potential, initial, mode, amplitude}"},"master":{"type":"object","description":"dynamical: {background:'minkowski'|'cubic-sine', muSq, lambda, phiC, beta, jExt, phi0, phiDot0, tMax, dt, rtol, atol, couplings:{<operatorId>: weight}}"},"quantum":{"type":"object","description":"quantum: {op:'inner'|'probability'|'norm'|'normalise'|'apply'|'expectation'|'variance'|'commutator'|'anticommutator'|'outer'|'trace'|'purity'|'entropy'|'tensor', psi, phi (states: arrays of numbers or [re,im] pairs), a, b (square matrices), rho (a density matrix)}"},"vector":{"type":"object","description":"vector: {op:'dot'|'cross'|'norm'|'unit'|'add'|'sub'|'scale'|'triple'|'angle'|'project'|'gradient'|'divergence'|'curl'|'laplacian', a, b, c, k, field (a string, or one string per coordinate), at (the point), vars (default x,y,z), h (the step)}"},"couplingCount":{"type":"number","description":"operators on the chain — the C term of the Functional Equation"},"wizard":{"type":"boolean","description":"true → run the seven-step wizard and return every step"}}}},{"name":"zeq_hpz_auto","description":"HulyaPulse-Zeqond AUTO — say what you want computed in plain English and it is routed, bound, computed and sealed. The query is scored against ALL 1,612 registry operators (id, name, description, category, equation, founder), quantities are extracted from the text with their units (\"1.989e30 kg\", \"5x10^14 Hz\", \"6371 km\") and bound to the chosen operator's symbols BY DIMENSION.\nIT REFUSES RATHER THAN GUESSES. If two symbols could take the same quantity it says so and returns the candidates; if the query supplies nothing for a symbol it names the symbol. The ranked candidate list is always returned, so the routing is inspectable instead of magical. Supply `inputs` to bind symbols the sentence does not carry. No API key required.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"e.g. \"Schwarzschild radius of a 1.989e30 kg star\""},"inputs":{"type":"object","description":"explicit symbol bindings, in HPZ units, for anything the sentence does not say"}},"required":["query"]}},{"name":"zeq_hpz_verify","description":"Verify a sealed HulyaPulse-Zeqond claim WITHOUT trusting the node that produced it. Three independent checks: the Ed25519 signature over canonicalJson(claim); the claim's own inequality (precision_actual ≤ precision_bound, asserted only when verification is \"verified\"); and — the check a conventional receipt cannot offer — the VALUE, by re-running the recipe the claim carries inside its signature and comparing to 1e-12. Pass the `sealed` block from zeq_hpz verbatim. A value altered and then validly re-signed still fails, because the recipe no longer produces it. No API key required.","inputSchema":{"type":"object","properties":{"sealed":{"type":"object","description":"the {alg, public_key, claim, signature} block from zeq_hpz"}},"required":["sealed"]}},{"name":"zeq_protect","description":"ZeqPulseGuard — the PROTECT solver: a sealed protection heartbeat. Computes ZEQ-PROTECT-001 |sin(5ϕ)|/f_pulse and ZEQ-PROTECT-002 0.5+0.3·sin(t/30) from the live Zeqond phase, maps a liveness signal to a branch (healthy→bounded harmonic guard; down→hyperbolic alarm), applies the Zeq proper-time modulation R(t)=S(t)[1+α·sin(2π·1.287·t)], and returns guardState OK/DEGRADED/BREACH. Give t (unix seconds) or phase (radians), and health (up|slow|down) or liveness [0,1] or an HTTP status. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"t":{"type":"number","description":"unix seconds"},"phase":{"type":"number","description":"phase in radians"},"health":{"type":"string","description":"up | slow | down"},"liveness":{"type":"number","description":"0..1"},"status":{"type":"number","description":"HTTP status (200=up)"}}}},{"name":"zeq_api_catalog","description":"THE MAP - search the FULL public API surface of this Zeq node (883 public endpoints; admin routes are not exposed). Filter by q (substring across path+description), method, auth. Use this to discover endpoints, then call them with zeq_http.","inputSchema":{"type":"object","properties":{"q":{"type":"string","description":"Substring filter across path + description (e.g. 'tally envelopes', 'observer', 'state-machines')."},"method":{"type":"string","description":"Filter: GET | POST | PUT | PATCH | DELETE."},"auth":{"type":"string","description":"Filter: public | user | key | admin."},"limit":{"type":"number","description":"Max entries returned (default 40, max 200)."}}}},{"name":"zeq_http","description":"THE DOOR - call ANY public /api/* endpoint on this node directly (the full 883-endpoint public surface, not just the curated tools). Supports GET/POST/PUT/PATCH/DELETE and the new HTTP QUERY method (RFC 10008, June 2026): the safe, idempotent GET-with-a-body for complex data grabs - pass method QUERY with a JSON body and the node merges it into query params per the RFC semantics. Your Authorization bearer key is forwarded. Admin routes and /api/mcp itself are blocked. Discover endpoints with zeq_api_catalog first.","inputSchema":{"type":"object","required":["method","path"],"properties":{"method":{"type":"string","description":"GET | POST | PUT | PATCH | DELETE | QUERY (RFC 10008: safe GET-with-body - use for complex searches)"},"path":{"type":"string","description":"Endpoint path starting /api/ (e.g. /api/zeq/pulse, /api/mesh, /api/chain/state-machines/foundation)."},"query":{"type":"object","description":"Optional query params as a flat object."},"body":{"type":"object","description":"Optional JSON body for non-GET requests."}}}},{"name":"zeq_spin_up","description":"Spin up your own ZeqVM state machine and get a REAL, account-backed API key. REQUIRES authentication: pass a demo key as Authorization: Bearer zeq_ak_demo_… — if you have no key yet, first POST /api/demo-key/mint (free, no signup) to get one, then call this with it. Provisions a fresh machine (unique ZID), seeds its audit chain, and mints an active zeq_ak_ compute key on the free tier. Returns your ZID, recovery equation + salt (SHOWN ONCE — save them, there is no password reset), the machine slug, and the API key (SHOWN ONCE). Put the returned apiKey in your connector's Authorization header and every subsequent zeq_compute / zeq_solve / contract call runs on YOUR machine. (Every API key belongs to an account — there is no keyless minting.)","inputSchema":{"type":"object","properties":{"displayName":{"type":"string","description":"Optional label for your machine (e.g. your agent's name). Defaults to 'mcp-agent'."}}}},{"name":"zeq_contract_generate","description":"Draft a state contract from a plain-English description. The framework turns your intent into an operator-grounded contract definition on YOUR machine. Returns the definition — pass it to zeq_contract_deploy. Requires your zeq_ak_ key (from zeq_spin_up).","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"8-600 chars: what the contract should do, its states, and transition conditions."}}}},{"name":"zeq_contract_templates","description":"List the 321 built-in state-contract templates (id + name) across every industry category. Deploy any with zeq_contract_deploy { templateId } — no LLM credential needed. Requires your zeq_ak_ key.","inputSchema":{"type":"object","properties":{}}},{"name":"zeq_contract_deploy","description":"Deploy a state contract to your machine. Every transition is ZeqProof-anchored on the entangled-state chain and visible in the Observer. Pass EITHER `templateId` (from zeq_contract_templates — works with no LLM credential) OR a full `definition` object (must include a version; from zeq_contract_generate). Requires your zeq_ak_ key.","inputSchema":{"type":"object","properties":{"templateId":{"type":"string","description":"Built-in template id to deploy (see zeq_contract_templates)."},"definition":{"type":"object","description":"A full custom contract definition (states, transitions, operators, conditions, version)."}}}},{"name":"zeq_contract_list","description":"List the state contracts on your machine — id, name, current state, and fire count. Requires your zeq_ak_ key.","inputSchema":{"type":"object","properties":{}}},{"name":"zeq_contract_get","description":"Get one contract's full state + definition by id. Requires your zeq_ak_ key.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Contract id (from zeq_contract_list)."}}}},{"name":"zeq_contract_fire","description":"Fire a contract's next transition now. Returns a ZeqProof receipt; guarded transitions report their reason instead of firing. Requires your zeq_ak_ key.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Contract id to advance."}}}},{"name":"zeq_observer","description":"Read the live entangled-state chain — your proof-of-computation feed. With no key it returns the global recent feed; with your zeq_ak_ key it focuses on YOUR machine's state. Each entry links to the Explorer.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"How many entries (1-50, default 15)."}}}},{"name":"zeq_publish_page","description":"Publish a live HTML page/app to your machine — instantly hosted at /s/<machine>/p/<pageSlug>/ and added to your machine launcher. Pass `title` and full `html` (optional `pageSlug`). Owner-authenticated. Requires your zeq_ak_ key (from zeq_spin_up).","inputSchema":{"type":"object","required":["title","html"],"properties":{"title":{"type":"string","description":"Page title."},"html":{"type":"string","description":"Full HTML markup of the page/app."},"pageSlug":{"type":"string","description":"URL slug (a-z0-9-, defaults to 'app')."}}}},{"name":"zeq_mail_html","description":"Build an HTML email and deliver it straight to YOUR OWN Zeq Mail inbox (<zid>@<your node's mail domain>), where you can review it and forward it on to anyone. This does NOT send to third parties — it only ever delivers to the mailbox of the identity making the call, so an agent cannot be talked into mailing strangers. Use it to draft newsletters, announcements and campaigns: compose the markup, deliver it here, open Zeq Mail, then hit Forward. Write email HTML, not web-page HTML — table layout, all CSS inline, absolute https:// links, max 600px wide. Scripts, forms and iframes are stripped on arrival. Owner-authenticated: requires your zeq_ak_ key (from zeq_spin_up).","inputSchema":{"type":"object","required":["subject","html"],"properties":{"subject":{"type":"string","description":"Subject line of the email."},"html":{"type":"string","description":"The email body as HTML (fragment or full document)."},"text":{"type":"string","description":"Optional plain-text alternative. Generated from the HTML if omitted — always sent, because an empty text part reads blank in text-only clients."},"from":{"type":"string","description":"Optional display name to attribute the draft to, e.g. 'Campaign Builder'. Cosmetic only; delivery is always to your own mailbox."}}}},{"name":"zeq_compute","description":"Compute physics results using the Zeq.dev HulyaSync framework. Applies 1,600+ catalogued operators across 67 domains (19 closed-form solvers; coverage map published). Every result is phase-stamped to the HulyaPulse (1.287 Hz system clock) and returned as a ZeqState envelope with masterSum R(t), phase φ, Zeqond τ, and an explicit numeric-accuracy bound. KO42 is always included. Response includes a zeqProof HMAC for tamper-evident verification. Requires a valid zeq_ak_ API key in the Authorization header.","inputSchema":{"type":"object","required":["domain","inputs"],"properties":{"domain":{"type":"string","description":"Physics domain to compute in. Examples: quantum-mechanics, classical-mechanics, thermodynamics, fluid-dynamics, aerospace, electromagnetism, astrophysics, biomedical, materials-science. 67 domains are available — use zeq_list_operators to see all."},"inputs":{"type":"object","description":"Key-value pairs of numeric domain inputs — use the keys the solver actually reads. Example for quantum-mechanics (particle in a box): {\"n\": 1, \"L\": 1e-10, \"m\": 9.109e-31} → E_n eigenvalue. Unrecognized keys are rejected by the dimensional gate (value: NaN), so match the domain's documented inputs. Values must be finite numbers.","additionalProperties":{"type":"number"}},"operators":{"type":"array","items":{"type":"string"},"description":"Optional list of specific operator IDs to apply (e.g. ['QM01', 'QM03']). KO42 is always added automatically. If omitted, the domain default operator is used. Use zeq_list_operators to discover available IDs per domain."},"folder":{"type":"string","description":"Optional folder name to file this computation under (e.g. 'Orbital Mechanics'). Computations sharing a folder group together: each folder becomes a tab in the state explorer and a directory in the user's ZeqGit 'computations' repo (open in Zeq Studio). Reuse the same name to keep adding to it; omit for the 'unfiled' catch-all. When a user is running several related computes, ask if they want to name a folder."}}}},{"name":"zeq_list_operators","description":"List available Zeq.dev physics operators for a given domain, or list all 67 domains. Use this to discover operator IDs before calling zeq_compute. No API key required.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to list operators for. Omit or pass empty string to list all 67 domains."}}}},{"name":"zeq_paper_search","description":"Search the scientific literature across arXiv, OpenAlex, Crossref and Europe PMC in one call. Returns deduplicated results with a canonical id (arxiv:… / doi:… / pmid:…), title, authors, date, venue and abstract snippet. Use this INSTEAD of answering a literature question from memory — a citation you did not look up is a guess. No API key required.","inputSchema":{"type":"object","required":["q"],"properties":{"q":{"type":"string","description":"Search query, e.g. 'AlphaFold protein structure prediction'."},"sources":{"type":"array","items":{"type":"string"},"description":"Optional subset of: arxiv, openalex, crossref, europepmc, semanticscholar, biorxiv. Defaults to the four that work without a key."},"limit":{"type":"number","description":"Max results, 1-50. Default 20."}}}},{"name":"zeq_paper_fetch","description":"Fetch one scientific record by canonical id — 'arxiv:1706.03762', 'doi:10.1038/s41586-021-03819-2', 'pmid:34265844'. Returns the full record including abstract where the source provides one. Use this to verify a citation before repeating it. No API key required.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"Canonical id in 'scheme:local' form. Schemes: arxiv, doi, pmid, openalex, s2, biorxiv."}}}},{"name":"zeq_domain_match","description":"Given a paper (canonical id) or any text, return which of the 67 Zeq operator domains it plausibly falls in, with the exact vocabulary terms that fired as evidence. Use this to ask 'could the framework compute this?' before claiming it can. IMPORTANT: this is deterministic term overlap, NOT a solvability proof — 258 of 1,612 operators (16%) have their own equation evaluated, so a domain match means 'worth testing with zeq_solve', never 'solvable'.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Canonical id — arxiv:1706.03762, doi:10.1038/…, pmid:…"},"text":{"type":"string","description":"Raw text to classify, if you have no id."},"limit":{"type":"number","description":"Max domains to return, 1-12. Default 5."}}}},{"name":"zeq_science_domains","description":"List the 67 Zeq operator domains and which literature sources serve each. Use before zeq_paper_search to scope a search: applied/industry domains (ENERGY, FIN, ENG, MAT) are served by Crossref + OpenAlex, physics and CS by arXiv, biomedical by Europe PMC. Scoping measurably improves precision. No API key required.","inputSchema":{"type":"object","properties":{}}},{"name":"zeq_find_operator","description":"Find operators by name, id, equation or description — ONE call instead of paging through domains. Returns id, domain, PREFIX (what zeq_compute takes), tier, equation and the domain's accepted input keys. No API key required.","inputSchema":{"type":"object","required":["term"],"properties":{"term":{"type":"string","description":"Search term, e.g. 'schwarzschild', 'kinetic', 'QM9', 'entropy'."},"limit":{"type":"number","description":"Max matches (default 12, max 40)."}}}},{"name":"zeq_pulse","description":"Get the current ZeqPulse state — live Zeqond counter, HulyaPulse phase φ, and R(t) value. No API key required. Use this to read the real-time 1.287 Hz heartbeat of the Zeq.dev framework and synchronize agent operations to the HulyaPulse clock.","inputSchema":{"type":"object","properties":{}}},{"name":"zeq_verify","description":"Verify a ZeqProof HMAC returned by zeq_compute. Confirms the response (including the physics value, for v2 receipts) reached you unmodified — integrity, not independent re-derivation of the physics. Pass the proof string along with operatorIds, R_t, zeqond, value, unit, and the keyPrefix from the original response. Returns valid: true/false. Requires API key.","inputSchema":{"type":"object","required":["proof","operatorIds","R_t","zeqond"],"properties":{"proof":{"type":"string","description":"The 64-character hex zeqProof HMAC from the compute response (field: zeqProof)."},"operatorIds":{"type":"array","items":{"type":"string"},"description":"Operator IDs array from the original zeqState.operators field."},"R_t":{"type":"number","description":"The masterSum value from the original zeqState.masterSum field."},"zeqond":{"type":"number","description":"The zeqond value from the original zeqState.zeqond field."},"keyPrefix":{"type":"string","description":"Optional keyPrefix from the original response. Defaults to the API key user ID prefix."},"value":{"type":"number","description":"The physics value from the original response (required for v2 receipts, which sign the value)."},"unit":{"type":"string","description":"The unit string from the original response (v2 receipts)."}}}},{"name":"zeq_lattice","description":"Compute a ZeqLattice — a multi-node coherence grid. Pass an array of 2–5 node specs, each with optional { domain, inputs }. All nodes share one Date.now() timestamp but run at staggered HulyaPulse phases. Returns per-node R_t, coherenceScore (0–1), and lattice equation. Counts as N compute tokens (one per node). Requires API key.","inputSchema":{"type":"object","required":["nodes"],"properties":{"nodes":{"type":"array","description":"Array of 2–5 node specifications, each with optional domain and inputs.","minItems":2,"maxItems":5,"items":{"type":"object","properties":{"domain":{"type":"string","description":"Physics domain for this node (same options as zeq_compute)."},"inputs":{"type":"object","description":"Numeric key-value physics inputs for this node.","additionalProperties":{"type":"number"}}}}}}}},{"name":"zeq_shift","description":"Compute a ZeqShift — a deterministic forward time-series projection of R(t) across up to 64 Zeqond steps. Each step advances by 0.777 s (one Zeqond) and returns t (absolute seconds), phase φ, zeqond τ, R_t, and delta (R_t change from previous step; 0 for step 0). Counts as N compute tokens (one per step). Requires API key.","inputSchema":{"type":"object","properties":{"steps":{"type":"number","description":"Number of Zeqond steps to project forward (1–64, default 16)."},"domain":{"type":"string","description":"Physics domain (optional, defaults to Quantum Mechanics)."},"inputs":{"type":"object","description":"Numeric key-value physics inputs for S(t) computation.","additionalProperties":{"type":"number"}}}}},{"name":"zeq_field_status","description":"Query the ZeqField security system status — cipher algorithm, key source, and protocol versions. Returns whether ZEQ_FIELD_KEY is configured, current PBKDF2 parameters, and ZeqProof HMAC settings. No API key required.","inputSchema":{"type":"object","properties":{}}},{"name":"zeq_solve","description":"Integrates the geodesic in the KO42-tensioned metric  ds² = gμν dxμ dxν + α·sin(2π·1.287·t)·dt²  and returns the trajectory φ(t), the register dump, the HULYAS functional energy E = P_φ · Z(M,R,δ,C,X), and the term-by-term diagnostic. The base metric carries the REAL physics selected by the operators (7-step SELECT→BIND): NM19/NM24 → free-fall −g; NM21 (+ real `position` in metres) → radial gravity −GM/x²; NM30 → SHM −ω²x; GR33–38 add the weak-field g₀₀ factor √(1−2GM/xc²) (relativity, in the metric). The KO42 metric tension rides on top for every domain — the unification — so R(t)=S(t)[1+α·sin] reduces to textbook mechanics within the α≈1.29e-3 band and its Zeqond-average recovers S(t) exactly. `errorPct` is a TOLERANCE CEILING (≤0.1% confirms 'computed within physical law'), not an error rate. Use REAL numbers and REAL positions. (`zeq_compute` is the exact static closed-form path.) Requires zeq_ak_ API key.","inputSchema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Label only — never read by math. Max 500 chars."},"mass":{"type":"number","description":"Object mass in kg. Default 1.0."},"location":{"type":"string","description":"Categorical: earth | mars | moon | jupiter | sun."},"medium":{"type":"string","description":"Categorical: air | water | vacuum."},"object":{"type":"string","description":"Free-form object label — not read by math."},"alpha":{"type":"number","description":"KO42.1 amplitude. Default 1.0."},"beta":{"type":"number","description":"KO42.2 amplitude. Default 0.0."},"koSettings":{"type":"object","description":"Operator weights, keyed by operator ID (e.g. { KO42: 1.0, NM21: 0.5, GR35: 0.3 }).","additionalProperties":{"type":"number"}},"tMax":{"type":"number","description":"Simulation horizon in seconds. Clamped to [0.1, 30]. Default 5.0."},"position":{"type":"number","description":"Real starting position/radius in METRES for gravity mode (a=−GM/x²). Real numbers only — not toy units."},"dt":{"type":"number","description":"Integrator timestep. Clamped to [0.001, 0.1]. Default 0.01."},"useOperatorModules":{"type":"boolean","description":"Use operator-specific physics values (SDK formula path)."},"normalizeOperators":{"type":"boolean","description":"Default true: normalise operator values by reference scale."},"coreOnly":{"type":"boolean","description":"Restrict coupling to the 8 Core Operator Families."},"referenceMode":{"type":"string","enum":["free-fall","shm","gravity","model"],"description":"Base-metric law: free-fall (−g), shm (−ω²x), gravity (−GM/x², needs `position`), or model. Operators (NM19/NM21/NM24/NM30, GR33–38) also select it automatically."},"strict":{"type":"boolean","description":"ALWAYS ON (2026-08-10 — same rule as the REST route since 2026-08-01): every solve autotunes β + operator weights to drive the precision bound vs the chosen referenceMode to ≤ 0.1 %, and REFUSES to seal anything still outside it. This flag is accepted and ignored; there is no opt-out. Honest — returns tuneStatus 'converged' (tolerance met) or a refusal (never a faked pass)."},"maxIterations":{"type":"number","description":"Strict-mode autotune budget (1–40). Default 40."},"folder":{"type":"string","description":"Optional folder name to file this solve under. Computations sharing a folder group into a tab in the state explorer and a directory in the user's ZeqGit 'computations' repo (open in Zeq Studio). Reuse the name to append; omit for the 'unfiled' catch-all."}}}},{"name":"zeq_multibody","description":"Run the vector master equation: N coupled φ_i(t) trajectories with pairwise inverse-square coupling. Each body gets its own register dump; every pair returns mean/final force magnitude + separation statistics. Use for Sun-Earth-Moon-style three-body experiments. Strictly mathematical — math reads only the numerical/categorical fields. Requires zeq_ak_ API key.","inputSchema":{"type":"object","required":["prompt","bodies"],"properties":{"prompt":{"type":"string","description":"Label only — never read by math."},"bodies":{"type":"array","minItems":2,"maxItems":16,"description":"Array of body specs (2–16 bodies).","items":{"type":"object","required":["mass"],"properties":{"mass":{"type":"number","description":"Body mass in kg."},"location":{"type":"string","description":"earth | mars | moon | jupiter | sun."},"medium":{"type":"string","description":"air | water | vacuum."},"object":{"type":"string","description":"Free-form label."},"phi0":{"type":"number","description":"Optional explicit initial φ."},"dphi0":{"type":"number","description":"Optional explicit initial dφ/dt."},"position":{"type":"number","description":"Real 1-D position in METRES. If every body has one, runs REAL Newtonian gravity (G, real r) instead of the dimensionless φ-field."}}}},"alpha":{"type":"number"},"beta":{"type":"number"},"koSettings":{"type":"object","additionalProperties":{"type":"number"},"description":"Operator weights shared across all bodies."},"tMax":{"type":"number"},"dt":{"type":"number"},"pairwiseCoupling":{"type":"number","description":"γ in the pairwise term. Default 0.05."},"pairwiseSoftening":{"type":"number","description":"ε² softening. Default 1e-6."},"useOperatorModules":{"type":"boolean"},"normalizeOperators":{"type":"boolean"},"coreOnly":{"type":"boolean"},"folder":{"type":"string","description":"Optional folder name to file this multibody run under. Computations sharing a folder group into a tab in the state explorer and a directory in the user's ZeqGit 'computations' repo (open in Zeq Studio). Reuse the name to append; omit for 'unfiled'."}}}},{"name":"zeq_evolve","description":"Run ZeqEvolve — deterministic Nano-Zeqond MOLECULAR DYNAMICS: velocity-Verlet (2nd-order symplectic) integration of a Lennard-Jones system (NM19) with optional harmonic bonds (NM30) in the NVE ensemble. Presets: lj-liquid, lj-gas, crystal, polymer. Returns the energy-conservation drift (the ≤0.1% reality check), temperature, virial pressure and total momentum, plus a ZEQOND_RECEIPT of the real fields it produced. Same inputs reproduce the same run (seeded). Real physics for materials/soft-matter/biology sandboxes. Requires zeq_ak_ API key.","inputSchema":{"type":"object","properties":{"preset":{"type":"string","description":"lj-liquid | lj-gas | crystal | polymer. Default lj-liquid."},"N":{"type":"number","description":"Particle count (2–2000). Default from preset."},"rho":{"type":"number","description":"Number density N/area (reduced units)."},"T0":{"type":"number","description":"Initial temperature (reduced units)."},"steps":{"type":"number","description":"Velocity-Verlet steps (10–200000). Default 2000."},"dtSim":{"type":"number","description":"MD time step, reduced units. Default 0.003 (VV-stable)."},"eps":{"type":"number","description":"Lennard-Jones ε. Default 1."},"sig":{"type":"number","description":"Lennard-Jones σ. Default 1."},"rc":{"type":"number","description":"Cutoff in units of σ. Default 2.5."},"kBond":{"type":"number","description":"Harmonic bond stiffness (polymer). Default 30."},"r0Bond":{"type":"number","description":"Bond rest length. Default 1."},"seed":{"type":"number","description":"Seed for reproducibility. Omit → deterministic seed derived from the inputs."},"sample":{"type":"number","description":"Energy samples in the returned series (2–500). Default 40."},"folder":{"type":"string","description":"Optional folder to file this run under (groups in the explorer + ZeqGit)."}}}},{"name":"zeq_action","description":"Run ZeqAction — a least-action, HIGH-ORDER SYMPLECTIC integrator (Störmer-Verlet → Yoshida triple-jump, order 4/6/8, fixed dt, Kahan-compensated). Structure-preserving, so energy has NO secular drift. Systems: kepler (orbit), oscillator (anharmonic), pendulum. It ALSO runs classical RK4 on the same system and returns both drifts, proving the difference — symplectic stays bounded, RK4 drifts (the orbit decays). The reality check for long-horizon dynamics. Requires zeq_ak_ API key.","inputSchema":{"type":"object","properties":{"system":{"type":"string","description":"kepler | oscillator | pendulum. Default kepler."},"order":{"type":"number","description":"Symplectic composition order: 2 | 4 | 6 | 8. Default 4."},"steps":{"type":"number","description":"Integration steps (10–2,000,000). Default 20000."},"dt":{"type":"number","description":"Fixed time step (symplecticity needs it constant). Default 0.01."},"eccentricity":{"type":"number","description":"Kepler orbit eccentricity 0–0.98. Default 0.6."},"mu":{"type":"number","description":"Kepler gravitational parameter. Default 1."},"omega":{"type":"number","description":"Oscillator frequency. Default 1."},"lambda":{"type":"number","description":"Oscillator quartic anharmonicity. Default 1."},"q0":{"type":"number","description":"Initial coordinate (oscillator/pendulum)."},"p0":{"type":"number","description":"Initial momentum (oscillator/pendulum)."},"compare":{"type":"boolean","description":"Also run RK4 to show the drift difference. Default true."},"sample":{"type":"number","description":"Series points returned (2–500). Default 60."},"folder":{"type":"string","description":"Optional folder to file this run under."}}}},{"name":"zeq_heat","description":"ZeqHeat — 2-D heat/diffusion ∂T/∂t=α(∂²T/∂x²+∂²T/∂y²) on a grid (the default). method 'explicit' (FTCS, conditionally stable — blows up past the 2-D CFL r=α·dt·(1/dx²+1/dy²)=½) or 'implicit' (ADI Peaceman–Rachford, UNCONDITIONALLY stable). Compared to the exact 2-D Fourier-mode decay. Fills temperature_field + heat_flux_vector. Pass dim:1 (or L, or the 1-D `mode`) for the original 1-D bar. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"method":{"type":"string","description":"explicit | implicit (default)"},"nx":{"type":"number","description":"grid points in x (8–128)"},"ny":{"type":"number","description":"grid points in y (8–128)"},"kx":{"type":"number","description":"Fourier mode in x"},"ky":{"type":"number","description":"Fourier mode in y"},"alpha":{"type":"number"},"dt":{"type":"number"},"steps":{"type":"number"},"dim":{"type":"number","description":"1 for the 1-D bar"},"mode":{"type":"number","description":"1-D Fourier mode (selects the 1-D bar)"},"folder":{"type":"string"}}}},{"name":"zeq_lorenz","description":"ZeqLorenz — the Lorenz attractor (RK4), deterministic chaos. Checks the exact phase-volume contraction −(σ+1+β) and measures the Lyapunov exponent (butterfly effect) from a twin trajectory. Bounded strange attractor, reproduced bit-for-bit. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"sigma":{"type":"number"},"rho":{"type":"number"},"beta":{"type":"number"},"dt":{"type":"number"},"steps":{"type":"number"},"delta":{"type":"number","description":"twin separation for the Lyapunov estimate"},"folder":{"type":"string"}}}},{"name":"zeq_wave","description":"ZeqWave — 2-D MEMBRANE wave ∂²u/∂t²=c²(∂²u/∂x²+∂²u/∂y²) by leapfrog (the default), reality-checked by EXACT discrete-energy conservation (drift ~1e-13) and against the standing mode ω=cπ√(kx²/Lx²+ky²/Ly²). 2-D Courant C=c·dt·√(1/dx²+1/dy²)≤1 or it explodes. Pass mode:'maxwell' for 1-D Maxwell (Yee FDTD), or dim:1 / mode_k for the 1-D scalar wave. Fills displacement/velocity (or E,B in maxwell). Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","description":"membrane (default) | maxwell | wave1d"},"nx":{"type":"number","description":"grid x (16–128)"},"ny":{"type":"number","description":"grid y (16–128)"},"kx":{"type":"number","description":"2-D mode in x"},"ky":{"type":"number","description":"2-D mode in y"},"c":{"type":"number"},"dt":{"type":"number"},"courant":{"type":"number","description":"target 2-D Courant (default 0.5)"},"steps":{"type":"number"},"dim":{"type":"number","description":"1 for the 1-D scalar wave"},"mode_k":{"type":"number","description":"1-D Fourier mode (selects 1-D)"},"eps":{"type":"number"},"mu":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_flow","description":"ZeqFlow — 2-D incompressible Navier–Stokes (Stam stable fluids): advect + diffuse + pressure PROJECTION so ∇·u→0. Reports divergence before/after projection. Fills velocity/pressure/viscosity. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"N":{"type":"number","description":"grid size (8–160)"},"steps":{"type":"number"},"dt":{"type":"number"},"visc":{"type":"number"},"iters":{"type":"number","description":"Poisson iterations"},"folder":{"type":"string"}}}},{"name":"zeq_fracture","description":"ZeqFracture — 2-D bond-based peridynamic CRACK PROPAGATION (mode-I SENT, the default): a seeded edge notch either holds below a critical far-field strain, or the crack initiates at the tip and runs across the specimen above it (unstable fracture). Reports crack tip, advance, whether it spanned, critical strain. Fills the material+boundary receipt tier: stress, strain, damage, elasticity, boundary_traction, contact. Pass mode:\"bar\" (or an N) for the 1-D cohesive bar. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","description":"\"2d\" (default, crack propagation) | \"bar\" (1-D)"},"nx":{"type":"number","description":"2-D grid width (16–64)"},"ny":{"type":"number","description":"2-D grid height (8–40)"},"notchFrac":{"type":"number","description":"2-D starter-notch length as a fraction of width (0.1–0.6)"},"horizonM":{"type":"number","description":"peridynamic horizon in grid spacings (2–4)"},"N":{"type":"number","description":"1-D bar node count (selects mode:bar)"},"E":{"type":"number"},"strain":{"type":"number","description":"max applied far-field strain"},"s0":{"type":"number","description":"critical bond stretch"},"sf":{"type":"number","description":"1-D full-failure stretch"},"loadSteps":{"type":"number"},"relaxIters":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_react","description":"ZeqReact — reaction–diffusion (biology). model 'gray-scott' (Turing morphogenesis: spots/stripes/worms self-organise) or 'fitzhugh-nagumo' (excitable media: cardiac/neural travelling & spiral waves). 2-D grid, explicit. Stability D·dt/dx²≤¼ or it blows up. Fills the chemical/biological receipt tier (concentration + reaction rate). Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"gray-scott | fitzhugh-nagumo"},"N":{"type":"number","description":"grid size (16–400)"},"steps":{"type":"number"},"dt":{"type":"number"},"Du":{"type":"number"},"Dv":{"type":"number"},"F":{"type":"number","description":"Gray-Scott feed"},"k":{"type":"number","description":"Gray-Scott kill"},"epsilon":{"type":"number"},"a":{"type":"number"},"b":{"type":"number"},"I":{"type":"number","description":"FitzHugh-Nagumo stimulus"},"folder":{"type":"string"}}}},{"name":"zeq_epi","description":"ZeqEpi — SIR/SEIR epidemic dynamics (RK4). Reality check: population conserved. Reports R₀, peak infected, peak day, final size (Kermack–McKendrick). Public-health domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"model":{"type":"string","description":"sir | seir"},"beta":{"type":"number"},"gamma":{"type":"number"},"sigma":{"type":"number"},"N":{"type":"number"},"I0":{"type":"number"},"days":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_quant","description":"ZeqQuant — European option price by Monte-Carlo, verified against the closed-form Black–Scholes. Reports price, standard error, delta. Quant-finance domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"call | put"},"S0":{"type":"number"},"K":{"type":"number"},"r":{"type":"number"},"sigma":{"type":"number"},"T":{"type":"number"},"paths":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_zeta","description":"ZeqZeta — locate Riemann zeta nontrivial zeros on the ½-line (Riemann–Siegel) and VERIFY the count against N(T)=θ(T)/π+1 up to height T. Verifies RH in range; does NOT prove it. Number-theory domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"T":{"type":"number","description":"height up to which to verify (15–2000)"},"dt":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_sat","description":"ZeqSAT — DPLL 3-SAT solver on a seeded random instance at ratio α=m/n (hardness peaks ≈4.26). Certifies SAT assignments; reports decisions/propagations (the NP-hard scaling). Solves instances; does NOT resolve P vs NP. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"n":{"type":"number","description":"variables (3–120)"},"alpha":{"type":"number","description":"clause/variable ratio"},"m":{"type":"number"},"seed":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_gauge","description":"ZeqGauge — 2-D compact U(1) lattice gauge theory (Metropolis). Mean plaquette verified against the EXACT Bessel result I₁(β)/I₀(β). The method used to study Yang–Mills numerically; does NOT prove the mass-gap theorem. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"L":{"type":"number","description":"lattice size (4–64)"},"beta":{"type":"number"},"sweeps":{"type":"number"},"seed":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_fea","description":"ZeqFEA — 2-D plane-stress finite-element cantilever (Q4, matrix-free element-by-element Jacobi-preconditioned CG — memory O(dof), so LARGE meshes run: up to ~9000 elements). Tip deflection vs Euler–Bernoulli beam theory; refine the mesh and the ratio CONVERGES to ~1.00 (coarse 24×6 is ~0.94, refined 120×30 is ~1.00). Reports von Mises stress, CG residual. Fills stress/strain/displacement/elasticity. Structural-engineering domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"nx":{"type":"number","description":"elements along length (4–220, default 120)"},"ny":{"type":"number","description":"elements through depth (2–80, default 30)"},"Lx":{"type":"number"},"Ly":{"type":"number"},"E":{"type":"number"},"P":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_grid","description":"ZeqGrid — DC power-flow on an N-bus network (B·θ=P). Reality check: Kirchhoff's current law + power balance. Reports bus angles, line flows, max loading. Power-systems domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"N":{"type":"number","description":"buses (3–300)"},"chords":{"type":"number"},"reactance":{"type":"number"},"seed":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_device","description":"ZeqDevice — 2-D device ELECTROSTATICS (the default): the potential + field in a semiconductor cross-section under an electrode, solving ∇²φ=0 by matrix-free Jacobi-preconditioned CG, verified against the EXACT analytic solution (a sinh Fourier mode) to ~0.004% — the peak |E| sets breakdown (MOSFET/HEMT/diode design). Pass dim:1 (or Na/Nd) for the 1-D PN junction (built-in voltage V_bi=V_T·ln(NaNd/ni²) vs Poisson). Fills potential + E-field. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"nx":{"type":"number","description":"2-D grid x (16–220)"},"ny":{"type":"number","description":"2-D grid y (16–220)"},"Lx":{"type":"number"},"Ly":{"type":"number"},"V":{"type":"number","description":"electrode voltage"},"kx":{"type":"number","description":"electrode mode"},"dim":{"type":"number","description":"1 for the PN junction"},"Na":{"type":"number","description":"1-D acceptor doping (m⁻³) — selects PN junction"},"Nd":{"type":"number","description":"1-D donor doping (m⁻³)"},"ni":{"type":"number"},"T":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_opt","description":"ZeqOpt — nonlinear optimization: minimise a test function (sphere, rosenbrock, rastrigin, beale) by Nelder–Mead or gradient descent, checked against the KNOWN global minimum. Operations-research / ML / design domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"fn":{"type":"string","description":"sphere | rosenbrock | rastrigin | beale"},"method":{"type":"string","description":"nelder-mead | gradient"},"dim":{"type":"number"},"maxIter":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_climate","description":"ZeqClimate — 2-D shallow-water equations (Lax–Friedrichs), a droplet radiating gravity waves. Reality check: total mass conserved; CFL √(gH)dt/dx≤1. Fills velocity + height. Climate / geophysics / oceanography domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"N":{"type":"number"},"steps":{"type":"number"},"g":{"type":"number"},"H":{"type":"number"},"dt":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_unified","description":"ZeqUnifiedComposer -- compose MULTIPLE operators in ONE call. Give an operator chain (KO42 is auto-prepended) plus numeric inputs; each operator is evaluated formula-as-data (no eval) and composed: Strategy A (algebraic product under the KO42 frame), B (sequential Zeqond timeline, RK4 for ODE operators), or C (single-operator fallback). Operators may be ids (GR37, NM19, NM21, QM9, ORBIT_PERIOD, NM23/24/26, GR35/36/41, QM10) or {id, equation, unit?, kind?} objects for ANY formula-as-data expression. Returns the composed value, the method, per-operator intermediates and the compiled expression, sealed like every solver. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"operators":{"type":"array","description":"operator ids and/or {id, equation, unit?, kind?} objects; KO42 auto-prepended","items":{}},"inputs":{"type":"object","description":"numeric inputs used by the operator equations (mass, m, v, r, a, ...)"},"consts":{"type":"object","description":"optional overrides: t, alpha, f_H, T_Z"},"folder":{"type":"string"}}}},{"name":"zeq_dock","description":"ZeqDock — rigid-body molecular docking: minimise a Lennard-Jones + Coulomb score over the ligand's 6 DOF against a receptor pocket, from seeded restarts. Reports binding energy + pose. Drug-discovery / comp-chem domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"restarts":{"type":"number"},"iters":{"type":"number"},"seed":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_buckling","description":"ZeqBuckling — the Euler critical buckling load of a compressed column/strut: the axial load P_cr at which a slender member collapses (columns, struts, landing gear, rocket interstages, scaffolding). Solves the beam-column buckling generalised eigenproblem K φ=P·K_g φ from Hermitian Euler–Bernoulli beam finite elements (Cholesky reduction + Jacobi), the smallest positive P being P_cr. Checked against EULER's exact P_cr=π²·EI/(K·L)² for the end condition — pinned-pinned K=1, fixed-fixed K=0.5, fixed-free K=2, fixed-pinned K≈0.699. RMS error vs Euler is the seal (a coarse mesh seals observable-differential). Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"ends":{"type":"string","description":"\"pinned-pinned\" (default), \"fixed-fixed\", \"fixed-free\", \"fixed-pinned\""},"EI":{"type":"number","description":"flexural rigidity E·I (N·m²)"},"E":{"type":"number","description":"Young's modulus (Pa)"},"I":{"type":"number","description":"second moment of area (m⁴)"},"L":{"type":"number","description":"column length (m)"},"ne":{"type":"number","description":"elements (4–80)"},"folder":{"type":"string"}}}},{"name":"zeq_acoustic","description":"ZeqAcoustic — the resonant modes of a 1-D acoustic resonator (Helmholtz −p″=k²p): the standing-wave frequencies of an organ pipe, wind instrument, exhaust/HVAC duct or muffler. Each end is OPEN (pressure-release) or CLOSED (rigid); a finite-volume + half-cell-mass discretisation gives a symmetric tridiagonal solved by Sturm bisection, and the frequencies f=kc/2π are checked against the EXACT closed forms — open–open n·c/2L, open–closed (2n−1)·c/4L, closed–closed n·c/2L. RMS error vs exact is the seal (a coarse grid seals observable-differential). Reports the fundamental + overtones in Hz. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"ends":{"type":"string","description":"\"open-open\" (default), \"open-closed\", or \"closed-closed\""},"L":{"type":"number","description":"resonator length (m)"},"c":{"type":"number","description":"sound speed (m/s), default 343"},"N":{"type":"number","description":"cells (64–6000)"},"modes":{"type":"number","description":"resonances to return (1–16)"},"folder":{"type":"string"}}}},{"name":"zeq_schrodinger","description":"ZeqSchrodinger — the time-independent Schrödinger eigenvalue problem Ĥψ=Eψ, Ĥ=−(ℏ²/2m)d²/dx²+V(x): the quantum bound-state ENERGY LEVELS behind atoms, quantum wells/dots, molecular vibration and the qubit. A finite-difference tridiagonal Hamiltonian is diagonalised by Sturm-sequence bisection (robust, deterministic) and its lowest levels are checked against the EXACT analytic spectrum — harmonic oscillator Eₙ=ℏω(n+½), infinite square well Eₙ=n²π²ℏ²/2mL². The RMS error vs exact is the seal (life-or-death: too coarse a grid or too small a box gives WRONG levels and seals observable-differential). Natural units ℏ=m=1. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"potential":{"type":"string","description":"\"harmonic\" (default) or \"square-well\""},"N":{"type":"number","description":"grid points (64–4000)"},"levels":{"type":"number","description":"eigenvalues to return (1–12)"},"omega":{"type":"number","description":"harmonic frequency ω"},"L":{"type":"number","description":"square-well width"},"folder":{"type":"string"}}}},{"name":"zeq_tumor","description":"ZeqTumor — Fisher–KPP growth front ∂u/∂t=D u_xx+r u(1−u): a population/tumor/gene that grows AND spreads, invading as a travelling front (oncology, invasion biology, gene spread, spatial epidemics). Reality checks: the density stays in [0,1] (the seal — a stable scheme holds it, an unstable one past CFL D·dt/dx²≤½ violates it and explodes), and the front advances at the EXACT Ablowitz–Zeppetella speed c=5√(rD/6) (verified to ~0.2%). Reports front speed, boundedness, pointwise error vs the exact wave. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"D":{"type":"number","description":"diffusion (spread rate)"},"r":{"type":"number","description":"growth rate"},"nx":{"type":"number","description":"grid points (50–2000)"},"L":{"type":"number","description":"domain length"},"x0":{"type":"number","description":"initial front position"},"dt":{"type":"number"},"steps":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_lotka","description":"ZeqLotka — predator–prey / ecosystem dynamics (Lotka–Volterra). dx/dt=αx−βxy, dy/dt=δxy−γy. Reality check: the first integral H=δx−γ·ln x+βy−α·ln y is conserved on every orbit — RK4 (default) holds it to ~1e-9 (the seal), forward-Euler drifts and the populations spiral to a FALSE extinction/explosion (the life-or-death). Reports the boom-bust extremes, cycle period, and coexistence fixed point (γ/δ, α/β). Fisheries, pest control, conservation biology. method 'rk4'|'symplectic'|'euler'. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"method":{"type":"string","description":"rk4 (default) | symplectic | euler"},"alpha":{"type":"number","description":"prey growth"},"beta":{"type":"number","description":"predation rate"},"delta":{"type":"number","description":"predator growth from prey"},"gamma":{"type":"number","description":"predator death"},"x0":{"type":"number","description":"initial prey"},"y0":{"type":"number","description":"initial predator"},"dt":{"type":"number"},"steps":{"type":"number"},"folder":{"type":"string"}}}},{"name":"zeq_kalman","description":"ZeqKalman — optimal state estimation (the Kalman filter): track a constant-velocity target from noisy position measurements (GPS/radar/robotics/sensor-fusion/navigation). Reality checks: the error covariance converges to the steady-state Riccati/DARE solution (the seal, → machine precision); empirical RMSE → √P∞ (optimality); innovation variance ≈ HP⁻Hᵀ+R (whiteness); the Joseph-form update keeps the covariance positive-definite (a naive update diverges). Deterministic (seeded). State-estimation / control domain. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"steps":{"type":"number","description":"filter steps (50–20000)"},"dt":{"type":"number"},"sigmaA":{"type":"number","description":"process (acceleration) noise σ"},"sigmaZ":{"type":"number","description":"measurement noise σ"},"seed":{"type":"number"},"v0":{"type":"number","description":"true target velocity"},"folder":{"type":"string"}}}},{"name":"zeq_auto","description":"ZeqAuto — FRICTIONLESS: send a natural-language `query` + `constants` and the right solver is auto-selected, run, and sealed. Covers molecular dynamics, orbits, heat, chaos, waves/EM, fluids, fracture, reaction-diffusion, epidemics, option pricing, Riemann zeros, SAT, lattice gauge, FEA, power flow, semiconductors, optimization, shallow-water, docking. No operators or endpoint to pick. Requires zeq_ak_ key.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"e.g. 'simulate a Lennard-Jones liquid', 'price a call S0=100 K=100 sigma=0.2', 'shallow-water tsunami', 'SIR epidemic R0=3'"},"constants":{"type":"object","description":"solver parameters (S0, K, sigma, preset, steps, beta, gamma, …)"},"solver":{"type":"string","description":"optional: force a specific solver key"},"folder":{"type":"string"}}}},{"name":"zeq_stream","description":"ZeqStream — hosted, ticking solver channels. A channel is a solver wrapped as a live endpoint with its OWN key that a game/sensor/instrument ticks. action=create makes one (returns its key, shown once); action=tick advances ONE Zeqond and seals an envelope + receipt; action=get/list/close manage it. Each seal is one credit-compute; `tickIntervalZeqonds` sets the fair cadence (≈111197 ≈ a 24-hour tick). Requires zeq_ak_ key.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"create | tick | get | list | close | link | secure. link = a keyless signed pull URL (no API key/.env). secure = open a ZeqSSH AES-256-GCM encrypted line (returns a one-time sessionSecret)."},"solver":{"type":"string","description":"create: solver key (lorenz, quant, evolve, heat, …) — or use query"},"query":{"type":"string","description":"create: natural-language, auto-classified like zeq_auto"},"constants":{"type":"object","description":"create: base constants merged into every tick"},"label":{"type":"string"},"autotick":{"type":"boolean","description":"create: server advances it every cadence (spends credits)"},"tickIntervalZeqonds":{"type":"number","description":"create: Zeqonds between seals; ~111197 ≈ 24h"},"ttlSeconds":{"type":"number","description":"link: how long the keyless URL stays valid (default 30d)"},"channel":{"type":"string","description":"tick/get/close/link/secure: the channel id"},"inputs":{"type":"object","description":"tick: values merged over the channel constants"}}}},{"name":"zeq_closedform","description":"ZeqClosedForm — the CLOSED-FORM master-equation solver, the analytic counterpart to the open-form RK4 (/api/solve). Compiles polynomial couplings a+bϕ+dϕ³ into effective (μ²_eff,λ_eff,F_eff) and writes the EXACT branch solution of ϕ̈=μ²_eff·ϕ+λ_eff·ϕ³+F_eff (÷ KO42 tensioner): free / uniform-accel / harmonic / hyperbolic / driven, and Duffing ϕ₀·cn(Ωt,k) via AGM (hardening & softening). KO42 enters first-order in α on the linear branches. Ships an independent RK4 closed-vs-open cross-check. ϕ² / √ / exp shapes are REFUSED by name, never approximated. Give effective coeffs directly (mu2_eff,lambda_eff,F_eff) OR couplings [{a,b,c,d}] / [{samples:[[x,y],...]}]; phi0/phidot0 (else equilibrium launch), t, ko42, alpha. Requires zeq_ak_ key.","inputSchema":{"type":"object","properties":{"mu2_eff":{"type":"number","description":"effective μ² (skip compile)"},"lambda_eff":{"type":"number","description":"effective λ (cubic)"},"F_eff":{"type":"number","description":"effective constant forcing"},"couplings":{"type":"array","description":"couplings to compile: {a,b,c,d} cubics or {samples:[[x,y],...]} (≥4 pts; c≠0 → refused QUADRATIC)","items":{}},"mu2":{"type":"number"},"lambda":{"type":"number"},"Jext":{"type":"number"},"phi42":{"type":"number"},"phi0":{"type":"number"},"phidot0":{"type":"number"},"t":{"type":"number","description":"evaluation time"},"ko42":{"type":"boolean","description":"apply the KO42 tensioner (default true)"},"alpha":{"type":"number","description":"KO42.1 amplitude (default 1e-3)"},"mode":{"type":"string","description":"auto | manual"},"beta":{"type":"number","description":"manual-mode tensioner amplitude"},"folder":{"type":"string"}}}},{"name":"zeq_reactor","description":"ZeqReactor — recursive, sealed, environment-driven compute loops. Where zeq_stream BROADCASTS one sealed envelope, a reactor CLOSES THE LOOP: the sealed output of step n plus a live environment observation become the inputs for step n+1 — xₙ₊₁ = seal(Solver(T(xₙ, uₙ))), each step hash-linked to the previous. action=create builds one from a transition contract (a solver + initialInput + a transition.inputs map whose values are literals or dot-paths over {output, env, step}, e.g. sigmaZ:'env.noise', v0:'output.rmse'); action=step advances one step (a credit-compute, sealed + receipt), optional inline env; action=observe pushes an environment reading and steps immediately if the contract's trigger is 'on-observe'; action=state/trajectory/telemetry/get read it (owner-scoped); action=close stops it. Any of the 26 solvers can drive a reactor. Field-carry makes a stateful digital twin — set transition.inputs.initialState:'output.finalDensity' (e.g. a tumour front that keeps advancing). Each step is reality-gated: a step that fails its ≤0.1% check seals observable-differential and the onUnverified guard can halt the loop, so a blown-up state can never seed the next. Requires zeq_ak_ key (step/observe burn credit, tied to your ZID).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","description":"create | list | step | observe | state | trajectory | telemetry | secure | get | close. secure = open a keyless ZeqSSH encrypted line to consume sealed states (no API key)."},"solver":{"type":"string","description":"create: solver key (kalman, lorenz, tumor, heat, …) or 'auto'"},"initialInput":{"type":"object","description":"create: x₀ base inputs, e.g. { steps: 60, sigmaZ: 0.5 }"},"transition":{"type":"object","description":"create: { inputs: { nextKey: 'env.x' | 'output.y' | literal } }"},"trigger":{"type":"object","description":"create: { mode: 'on-request' | 'on-observe' }"},"guards":{"type":"object","description":"create: { maxSteps, creditBudget, until, onUnverified: 'halt'|'continue' }"},"contract":{"type":"object","description":"create: a full contract object (overrides solver/initialInput/transition/trigger/guards)"},"reactor":{"type":"string","description":"step/observe/state/trajectory/telemetry/get/close: the reactor id"},"env":{"type":"object","description":"step/observe: the environment observation uₙ, e.g. { noise: 0.8 }"},"folder":{"type":"string","description":"create: seal folder for this reactor's steps"}}}}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A Zeq API key (zeq_ak_…) or machine key (zsm_…) as a bearer token."},"adminSession":{"type":"apiKey","in":"cookie","name":"zeq_auth_token","description":"An admin principal's session cookie. Admin routes are cookie-gated; there is no bearer path."}},"schemas":{"ZeqError":{"type":"object","description":"The uniform failure shape. `ok` is false on every error path; `code` is the machine-readable reason and `error` the human one.","properties":{"ok":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"Human-readable message."},"code":{"type":"string","description":"Stable machine-readable code, e.g. ADMIN_REQUIRED, INVALID_ZID, ZID_NOT_LINKED."}},"required":["ok"]},"ZeqProof":{"type":"object","description":"The seal carried by every verified computation: HMAC over the operator chain and the result, bound to the Zeqond it was computed at.","properties":{"zeqProof":{"type":"string","description":"HMAC-SHA256 seal."},"operatorChain":{"type":"array","items":{"type":"string"},"description":"Operators applied, KO42 first."},"masterSum":{"type":"number","description":"R(t) — the HulyaPulse modulation at that tick."},"phase":{"type":"number","description":"Phase in [0,1)."},"zeqondTick":{"type":"integer","description":"The Zeqond the result was sealed at."},"precisionBound":{"type":"number","description":"Numeric-accuracy bound; the gate is <= 0.001."}}},"ZeqondClock":{"type":"object","description":"The machine's clock reading. One Zeqond is 0.777000777 s; the pulse is 1.287 Hz.","properties":{"zeqond":{"type":"integer"},"phase":{"type":"number"},"sinceGenesis":{"type":"integer","description":"Ticks since this network's genesis."}}}}}}