{"openapi":"3.1.0","info":{"title":"Waveform API","version":"1","description":"Installed operations only. Cross-field constraints are enforced by the shared runtime schemas. Browser sessions require same-origin requests and a CSRF header for mutations; API keys are workspace-scoped. Account/payment management retains browser recent-auth requirements."},"servers":[{"url":"https://getwaveform.com/api/v1"}],"paths":{"/identity":{"get":{"operationId":"identity_get","summary":"Read the authenticated workspace, role and scopes. No credentials or session tokens are returned.","parameters":[],"security":[{"bearerAuth":[]},{"oauth":[]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":null,"x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["user","api-key","oauth","internal"]},"role":{"type":"string","enum":["owner","admin","editor","viewer"]},"scopes":{"type":"array","items":{"type":"string","enum":["pages:read","pages:write","pages:publish","domains:manage","forms:manage","leads:read","leads:deliver","billing:read","billing:manage","workspace:manage"]}},"verified":{"type":"boolean"},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["workspaceId","kind","role","scopes","verified","userId"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations":{"get":{"operationId":"generations_list","summary":"List page revisions, newest first. Use nextCursor as before for the next page.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":100,"type":"integer","minimum":1,"maximum":100}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"pageId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"generation_create","summary":"Create one page revision. A parentId refines that page. Credits are managed automatically from the workspace balance. Reuse a key only for the identical uncertain submission.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"prompt":{"type":"string","minLength":10,"maxLength":20000},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."},"parentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"brandOverrides":{"type":"object","properties":{"colors":{"maxItems":8,"type":"array","items":{"type":"string","pattern":"^#[a-fA-F0-9]{6}$"}},"logoUrl":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"null"}]}},"additionalProperties":false}},"required":["prompt"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}":{"get":{"operationId":"generation_get","summary":"Read saved progress, designs, available source, preview, quality and publication links.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generation-requests/{requestKey}":{"get":{"operationId":"generation_request_get","summary":"Look up the committed generation for an exact request key in the current workspace without submitting work. A null result does not prove an earlier in-flight submission was not accepted and does not authorize a new request key.","parameters":[{"name":"requestKey","in":"path","required":true,"schema":{"type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generation":{"anyOf":[{"type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}},{"type":"null"}]}},"required":["generation"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/artifact-manifest":{"get":{"operationId":"artifact_manifest","summary":"Read the immutable completed export inventory: exact sorted paths, byte sizes, SHA-256 digests and content types. Available for ready or needs_review source revisions. final:true identifies a completed export; qualityPass describes its visual quality. This read never publishes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"number","const":1},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["ready","needs_review"]},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"qualityPass":{"type":"boolean"},"final":{"type":"boolean","const":true},"entries":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"byteSize":{"type":"integer","minimum":0,"maximum":9007199254740991},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentType":{"type":"string","minLength":1}},"required":["path","byteSize","sha256","contentType"],"additionalProperties":false}}},"required":["version","generationId","pageId","state","sourceHash","referenceHash","qualityPass","entries"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/source":{"get":{"operationId":"source_get","summary":"Read available HTML, CSS and JavaScript as data. Availability does not imply passing quality or publication approval.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"previewUrl":{"type":["string","null"]}},"required":["id","files","quality","previewUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/quality":{"get":{"operationId":"quality_get","summary":"Read actual quality findings. A missing report remains pending, never an implied pass.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","state","quality"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/review-designs":{"post":{"operationId":"designs_review","summary":"Review existing saved designs and continue from the chosen design without regenerating the designs. Uses available workspace credits automatically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/edit-design":{"post":{"operationId":"design_edit","summary":"Edit one saved design using its expected hash. Returns a design revision to review; use design_select afterward when ready to build the page. Uses available workspace credits automatically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"candidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"expectedImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000}},"required":["candidateId","expectedImageHash","prompt"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/select-design":{"post":{"operationId":"design_select","summary":"Choose an existing design and build a new revision. Candidate identifiers are opaque. Uses available workspace credits automatically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"candidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["candidateId"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/edit":{"post":{"operationId":"source_edit","summary":"Save reviewed plain source as a new revision and run quality checks. Bind the original content hash; credits are managed automatically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"expectedContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["files","expectedContentHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/finalize":{"post":{"operationId":"generation_finalize","summary":"Finalize validated saved source from a stopped standalone build as an immutable child, without another AI attempt or new credit reservation. Optional autoPublish requires pages:publish scope.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"expectedContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["expectedContentHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/continue":{"post":{"operationId":"generation_continue","summary":"Continue checking saved source in a new revision with the exact original hash and automatic credit admission. If the design needs a new build, the request returns 409 REFERENCE_REBUILD_REQUIRED; use design_select to rebuild instead.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"expectedContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["expectedContentHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/cancel":{"post":{"operationId":"generation_cancel","summary":"Cancel this job explicitly. Saved designs/source remain available; already incurred usage may still settle. Disconnecting a tool does not cancel the job.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/hosting":{"get":{"operationId":"hosting_get","summary":"Read publication, hosting grace, capacity and domain status.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"publishedGenerationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"publishedContentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"siteUrl":{"type":"string"},"published":{"type":"boolean"},"serving":{"type":"boolean"},"capacity":{"type":"object","properties":{"planId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"pendingPlanId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"hosting":{"type":"object","properties":{"state":{"type":"string","enum":["internal","paid","grace","suspended"]},"serving":{"type":"boolean"},"paidUntil":{"type":["string","null"]},"graceUntil":{"type":["string","null"]},"graceReason":{"anyOf":[{"type":"string","enum":["cancelled","renewal_unpaid"]},{"type":"null"}]}},"required":["state","serving","paidUntil","graceUntil","graceReason"],"additionalProperties":{}},"periodStart":{"type":["string","null"]},"periodEnd":{"type":["string","null"]},"limits":{"anyOf":[{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hostedPages","customDomains","seats","formResponses"],"additionalProperties":{}},{"type":"null"}]},"used":{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hostedPages","customDomains","seats","formResponses"],"additionalProperties":{}},"excess":{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"required":["planId","hosting","periodStart","periodEnd","limits","used","excess"],"additionalProperties":{}},"customDomainsConfigured":{"type":"boolean"},"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"hostname":{"type":"string"},"state":{"type":"string","enum":["pending","active","error","detaching","detached"]},"hostnameStatus":{"type":["string","null"]},"certificateStatus":{"type":["string","null"]},"dnsRecords":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["CNAME","TXT"]},"name":{"type":"string"},"value":{"type":"string"},"purpose":{"type":"string","enum":["routing","ownership","certificate"]}},"required":["type","name","value","purpose"],"additionalProperties":{}}},"routingVerified":{"type":"boolean"},"checkedAt":{"type":["string","null"]},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","pageId","hostname","state","hostnameStatus","certificateStatus","dnsRecords","routingVerified","checkedAt","error","createdAt","updatedAt","url"],"additionalProperties":{}}},"formsConfigured":{"type":"boolean"},"formOrigin":{"type":"string"}},"required":["publishedGenerationId","publishedContentHash","siteUrl","published","serving","capacity","customDomainsConfigured","domains","formsConfigured","formOrigin"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/publish":{"post":{"operationId":"page_publish","summary":"Publish the exact passing checked revision. Changes the publicly served page. Requires reviewed source hash and available hosting capacity.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["expectedContentHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:publish"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:publish","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"finalizableSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":{}},"rebuildRequired":{"type":"boolean"},"siteTask":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"}},"required":["id","siteId","state","message"],"additionalProperties":false},"designEdit":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sourceCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"imported":{"type":"object","properties":{"kind":{"type":"string","const":"external-tool"},"tool":{"type":"string","const":"imagegen"},"sourceId":{"type":"string","maxLength":200,"pattern":"^[A-Za-z0-9_-]+(?::[A-Za-z0-9_-]+)*$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cost":{"type":"string","const":"unknown-not-billable"}},"required":["kind","tool","sourceId","imageHash","cost"],"additionalProperties":false},"review":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"summary":{"type":"string","minLength":1,"maxLength":3000},"findings":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":1000}},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","sourceImageHash","imageHash","status","summary","findings","receiptPath","receiptHash"],"additionalProperties":false}},"required":["version","sourceGenerationId","sourceCandidateId","sourceImageHash","prompt"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parentId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"files":{"anyOf":[{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},{"type":"null"}]},"quality":{"anyOf":[{"type":"object","properties":{"completion":{"type":"object","properties":{"version":{"type":"number","const":1},"reason":{"type":"string","enum":["checks_passed","attempt_limit","design_limit","deadline","checks_unavailable","provider_failure","saved_result"]},"attempts":{"type":"integer","minimum":0,"maximum":3},"maxAttempts":{"type":"number","const":3}},"required":["version","reason","attempts","maxAttempts"],"additionalProperties":{}},"pass":{"type":"boolean"},"scope":{"type":"string","enum":["generated","edited"]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"referenceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"findings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string","enum":["blocker","major","minor"]},"nodeId":{"type":"string"},"viewport":{"type":"number"}},"required":["code","message","severity"],"additionalProperties":{}}},"ssim":{"type":["number","null"]},"pixelError":{"type":["number","null"]},"screenshots":{"type":"array","items":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"path":{"type":"string"}},"required":["width","height","path"],"additionalProperties":{}}},"judged":{"type":"boolean"},"scores":{"anyOf":[{"type":"object","properties":{"composition":{"type":"number"},"typography":{"type":"number"},"imagery":{"type":"number"},"relevance":{"type":"number"},"responsiveness":{"type":"number"}},"required":["composition","typography","imagery","relevance","responsiveness"],"additionalProperties":{}},{"type":"null"}]},"logo":{"type":"object","properties":{"version":{"type":"number","const":1},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"type":"string","enum":["pass","fail","unverified"]},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","sourceHash","status","receiptHash","path"],"additionalProperties":{}},"copy":{"type":"object","properties":{"version":{"type":"number","const":1},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"path":{"type":"string"}},"required":["version","policyHash","sourceHash","receiptHash","path"],"additionalProperties":{}}},"required":["pass","scope","contentHash","referenceHash","findings","ssim","pixelError","screenshots","judged","scores"],"additionalProperties":{}},{"type":"null"}]},"referenceUrl":{"type":["string","null"]},"previewUrl":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"publishedUrl":{"type":["string","null"]},"designs":{"anyOf":[{"type":"object","properties":{"analysisPolicy":{"type":"string","const":"selected-v1"},"version":{"type":"number","const":1},"candidates":{"type":"array","items":{"type":"object","properties":{"assessment":{"type":"object","properties":{"rank":{"type":"integer","minimum":1,"maximum":4},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["rank","reason","findings","audience"],"additionalProperties":{}},"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["queued","generating","ready","failed"]},"imagePath":{"type":["string","null"]},"imageHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"error":{"type":["string","null"]},"evaluation":{"anyOf":[{"type":"object","properties":{"eligible":{"type":"boolean"},"scores":{"type":"object","properties":{"creativity":{"type":"number"},"specificity":{"type":"number"},"composition":{"type":"number"},"typography":{"type":"number"},"usability":{"type":"number"},"factualIntegrity":{"type":"number"}},"required":["creativity","specificity","composition","typography","usability","factualIntegrity"],"additionalProperties":{}},"reason":{"type":"string"},"findings":{"type":"array","items":{"type":"string"}},"audience":{"type":"object","properties":{"profile":{"type":"string"},"fit":{"type":"string","enum":["strong","mixed","weak","uncertain"]},"reason":{"type":"string"}},"required":["profile","fit","reason"],"additionalProperties":{}}},"required":["eligible","scores","reason","findings"],"additionalProperties":{}},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"previousImageUrl":{"type":["string","null"]},"previousImage":{"type":"object","properties":{"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"},"reason":{"type":"string"}},"required":["imagePath","imageHash","width","height","reason"],"additionalProperties":{}},"inspection":{"type":"object","properties":{"accepted":{"type":"boolean"},"findings":{"type":"array","items":{"type":"string"}}},"required":["accepted","findings"],"additionalProperties":{}},"integrity":{"type":"object","properties":{"version":{"type":"number","const":1},"designHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"policyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logo":{"type":"string","enum":["pass","fail","unverified","not_applicable"]},"copy":{"type":"string","enum":["pass","fail","unverified"]},"receiptPath":{"type":"string"},"receiptHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","designHash","policyHash","logo","copy","receiptPath","receiptHash"],"additionalProperties":{}}},"required":["id","label","status","imagePath","imageHash","width","height","error","evaluation","imageUrl"],"additionalProperties":{}}},"recommendedId":{"type":["string","null"]},"selectedId":{"type":["string","null"]},"selectionReason":{"type":"string"},"context":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":{}}},"facts":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceUrls":{"type":"array","items":{"type":"string"}}},"required":["text","sourceUrls"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"branding":{"type":"object","properties":{"sourceUrl":{"type":"string"},"logoUrl":{"type":["string","null"]},"colors":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"}},"required":["role","value"],"additionalProperties":{}}},"fonts":{"type":"array","items":{"type":"string"}},"logoPath":{"type":"string"},"logoHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"logoImageUrl":{"type":"string"},"logoCandidates":{"type":"array","items":{"type":"string"}},"inlineLogoCandidates":{"type":"array","items":{"type":"object","properties":{"sourceUrl":{"type":"string"},"selector":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sourceUrl","selector","hash"],"additionalProperties":{}}},"colorEvidence":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"required":["role","value","source"],"additionalProperties":{}}},"warnings":{"type":"array","items":{"type":"string"}},"logoAuthority":{"type":"object","properties":{"version":{"type":"number","const":1},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"canonicalSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","path","hash","canonicalSourceHash"],"additionalProperties":{}}},"required":["sourceUrl","logoUrl","colors","fonts"],"additionalProperties":{}},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceUrl":{"type":"string"},"alt":{"type":"string"},"selected":{"type":"boolean"},"path":{"type":"string"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["url","sourceUrl"],"additionalProperties":{}}},"research":{"type":"object","properties":{"scope":{"type":"string"},"subject":{"type":"string"},"decisions":{"type":"array","items":{"type":"object","properties":{"round":{"type":"number"},"reason":{"type":"string"},"urls":{"type":"array","items":{"type":"string"}}},"required":["round","reason","urls"],"additionalProperties":{}}}},"required":["scope","subject","decisions"],"additionalProperties":{}}},"required":["urls","sources","facts","warnings"],"additionalProperties":{}},"integrityPolicy":{"type":"object","properties":{"version":{"type":"number","const":2},"copyPolicyHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","copyPolicyHash"],"additionalProperties":{}},"refinement":{"type":"object","properties":{"kind":{"type":"string","const":"edited-render"},"imagePath":{"type":"string"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"number"},"height":{"type":"number"}},"required":["kind","imagePath","imageHash","contentHash","width","height"],"additionalProperties":{}},"direction":{"type":"object","properties":{"aspectRatio":{"type":"string","enum":["1:1","3:4","2:3","9:16"]},"factIndices":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["aspectRatio","factIndices"],"additionalProperties":{}}},"required":["version","candidates","recommendedId","selectedId","selectionReason","context"],"additionalProperties":{}},{"type":"null"}]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"unreviewedSource":{"type":"object","properties":{"files":{"type":"object","properties":{"html":{"type":"string","minLength":1,"maxLength":200000},"css":{"type":"string","maxLength":150000},"js":{"type":"string","maxLength":100000}},"required":["html","css","js"],"additionalProperties":false},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["files","contentHash","imageHash"],"additionalProperties":{}}},"required":["id","pageId","parentId","title","prompt","state","stage","createdAt","updatedAt","error","files","quality","referenceUrl","previewUrl","downloadUrl","publishedUrl"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/unpublish":{"post":{"operationId":"page_unpublish","summary":"Stop public serving of the reviewed published revision. Preserve saved source, releases and form inbox.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["expectedGenerationId"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:publish"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:publish","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"published":{"type":"boolean","const":false}},"required":["published"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-tasks":{"post":{"operationId":"site_task_start","summary":"Submit a site message to plan and build the needed pages or edits automatically from an owned homepage. The server binds the checked homepage, current scope and shared facts; it waits or needs attention when those prerequisites are not ready. Uses available credits and never publishes automatically.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"autoPublish":{"type":"boolean"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["prompt","homepageGenerationId"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"scopeVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"pages":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"state":{"anyOf":[{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},{"type":"null"}]}},"required":["pageId","path","name","generationId","state"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"message":{"type":"string"}},"required":["id","at","message"],"additionalProperties":false}}},"required":["id","siteId","homepagePageId","homepageGenerationId","prompt","state","message","error","createdAt","updatedAt","scopeVersion","pages","activity"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-tasks/{id}":{"get":{"operationId":"site_task_get","summary":"Read actual saved site-message progress, affected pages and attention state. This read does not start work.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"scopeVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"pages":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"state":{"anyOf":[{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},{"type":"null"}]}},"required":["pageId","path","name","generationId","state"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"message":{"type":"string"}},"required":["id","at","message"],"additionalProperties":false}}},"required":["id","siteId","homepagePageId","homepageGenerationId","prompt","state","message","error","createdAt","updatedAt","scopeVersion","pages","activity"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/site-tasks":{"get":{"operationId":"site_tasks_list","summary":"Read the latest 30 saved site messages for this homepage, newest first.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"scopeVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"pages":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"state":{"anyOf":[{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},{"type":"null"}]}},"required":["pageId","path","name","generationId","state"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"message":{"type":"string"}},"required":["id","at","message"],"additionalProperties":false}}},"required":["id","siteId","homepagePageId","homepageGenerationId","prompt","state","message","error","createdAt","updatedAt","scopeVersion","pages","activity"],"additionalProperties":false}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-tasks/{id}/cancel":{"post":{"operationId":"site_task_cancel","summary":"Cancel this site message and only its unfinished jobs. Retain saved page versions and already incurred usage; leave publication unchanged.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"publication":{"type":"object","properties":{"state":{"type":"string","enum":["pending","published","blocked"]},"message":{"type":["string","null"]}},"required":["state","message"],"additionalProperties":false},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"prompt":{"type":"string"},"state":{"type":"string","enum":["queued","planning","waiting_homepage","building","completed","needs_attention","cancelled"]},"message":{"type":"string"},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"scopeVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"pages":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"state":{"anyOf":[{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},{"type":"null"}]}},"required":["pageId","path","name","generationId","state"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"message":{"type":"string"}},"required":["id","at","message"],"additionalProperties":false}}},"required":["id","siteId","homepagePageId","homepageGenerationId","prompt","state","message","error","createdAt","updatedAt","scopeVersion","pages","activity"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/site":{"get":{"operationId":"site_for_page","summary":"Read the saved site scope associated with this homepage, if one exists.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"site":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}},{"type":"null"}]}},"required":["site"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites":{"post":{"operationId":"site_create","summary":"Create or open a site scope for an existing homepage. This does not authorize a paid build.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"default":"","type":"string","maxLength":4000}},"required":["homepagePageId","title","goal"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}":{"get":{"operationId":"site_get","summary":"Read current and approved site scope versions.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/history":{"get":{"operationId":"site_history","summary":"Read immutable scope history; before is a scope version cursor.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/scope":{"put":{"operationId":"site_edit","summary":"Save the full reviewed site scope, bound to expectedVersion. Homepage identity/path stay fixed.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{"type":"string","minLength":1,"maxLength":240},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}}},"required":["expectedVersion","title","goal","audience","blogRequested","pages"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/facts":{"post":{"operationId":"site_facts","summary":"Correct shared facts with exact strings and expectedVersion. User provenance is derived from authentication.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"corrections":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]}},"required":["key","value"],"additionalProperties":false}}},"required":["expectedVersion","corrections"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/approve":{"post":{"operationId":"site_approve","summary":"Approve the exact reviewed scope version and hash. This approval never authorizes charges or building pages.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["expectedVersion","expectedHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/proposals":{"post":{"operationId":"site_propose","summary":"Request a paid proposal from the selected homepage and context. Uses automatic credit admission.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageCandidateId":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]},"homepageImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"prompt":{"type":"string","minLength":1,"maxLength":20000},"maxPages":{"type":"integer","minimum":1,"maximum":50},"blogRequested":{"type":"boolean"},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["expectedVersion","expectedHash","homepageGenerationId","homepageCandidateId","homepageImageHash","prompt","maxPages","blogRequested"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"result":{"anyOf":[{"type":"object","properties":{"proposal":{"type":"object","properties":{"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]}},"required":["name","path","purpose","kind"],"additionalProperties":false}}},"required":["pages"],"additionalProperties":false},"application":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"applied"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["status","version","hash"],"additionalProperties":{}},{"type":"object","properties":{"status":{"type":"string","const":"conflict"}},"required":["status"],"additionalProperties":{}}]}},"required":["proposal","application"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","siteId","state","stage","createdAt","updatedAt","error","activity","result"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"site_proposals","summary":"Read the latest saved proposal jobs for this site.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"result":{"anyOf":[{"type":"object","properties":{"proposal":{"type":"object","properties":{"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]}},"required":["name","path","purpose","kind"],"additionalProperties":false}}},"required":["pages"],"additionalProperties":false},"application":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"applied"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["status","version","hash"],"additionalProperties":{}},{"type":"object","properties":{"status":{"type":"string","const":"conflict"}},"required":["status"],"additionalProperties":{}}]}},"required":["proposal","application"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","siteId","state","stage","createdAt","updatedAt","error","activity","result"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-jobs/{id}":{"get":{"operationId":"site_job_get","summary":"Read saved proposal progress and result.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"result":{"anyOf":[{"type":"object","properties":{"proposal":{"type":"object","properties":{"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]}},"required":["name","path","purpose","kind"],"additionalProperties":false}}},"required":["pages"],"additionalProperties":false},"application":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"applied"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["status","version","hash"],"additionalProperties":{}},{"type":"object","properties":{"status":{"type":"string","const":"conflict"}},"required":["status"],"additionalProperties":{}}]}},"required":["proposal","application"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","siteId","state","stage","createdAt","updatedAt","error","activity","result"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-jobs/{id}/cancel":{"post":{"operationId":"site_job_cancel","summary":"Cancel the proposal, retaining its current saved site scope and any incurred usage.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"result":{"anyOf":[{"type":"object","properties":{"proposal":{"type":"object","properties":{"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]}},"required":["name","path","purpose","kind"],"additionalProperties":false}}},"required":["pages"],"additionalProperties":false},"application":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"applied"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["status","version","hash"],"additionalProperties":{}},{"type":"object","properties":{"status":{"type":"string","const":"conflict"}},"required":["status"],"additionalProperties":{}}]}},"required":["proposal","application"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","siteId","state","stage","createdAt","updatedAt","error","activity","result"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-jobs/{id}/apply":{"post":{"operationId":"site_proposal_apply","summary":"Explicitly apply a completed proposal that conflicted with a newer scope; bind the currently reviewed version and hash.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["expectedVersion","expectedHash"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"at":{"type":"string"},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"message":{"type":"string"},"details":{"type":"string"}},"required":["id","at","stage","message"],"additionalProperties":{}}},"result":{"anyOf":[{"type":"object","properties":{"proposal":{"type":"object","properties":{"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]}},"required":["name","path","purpose","kind"],"additionalProperties":false}}},"required":["pages"],"additionalProperties":false},"application":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"applied"},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["status","version","hash"],"additionalProperties":{}},{"type":"object","properties":{"status":{"type":"string","const":"conflict"}},"required":["status"],"additionalProperties":{}}]}},"required":["proposal","application"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","siteId","state","stage","createdAt","updatedAt","error","activity","result"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/posts":{"get":{"operationId":"site_posts","summary":"List authored post drafts and their selected/live revision identifiers. This performs no build or publication.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"current":{"type":"object","properties":{"version":{"type":"number","const":1},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","postId","siteId","workspaceId","revision","content","authorId","createdAt","contentHash","summaryHash","hash"],"additionalProperties":false},"selectedRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"liveRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","siteId","current","selectedRevision","liveRevision"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"site_post_create","summary":"Save an authored post draft from exact structured content. Author names and dates are explicit fields. This is free and does not build or publish.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false}},"required":["content"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"current":{"type":"object","properties":{"version":{"type":"number","const":1},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","postId","siteId","workspaceId","revision","content","authorId","createdAt","contentHash","summaryHash","hash"],"additionalProperties":false},"selectedRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"liveRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","siteId","current","selectedRevision","liveRevision"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/posts/{postId}":{"get":{"operationId":"site_post_get","summary":"Read this owned post draft and exact selected/live revision identifiers.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"postId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"current":{"type":"object","properties":{"version":{"type":"number","const":1},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","postId","siteId","workspaceId","revision","content","authorId","createdAt","contentHash","summaryHash","hash"],"additionalProperties":false},"selectedRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"liveRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","siteId","current","selectedRevision","liveRevision"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"site_post_edit","summary":"Save a new authored post revision bound to its reviewed revision and hash. Existing selected or live revisions stay unchanged.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"postId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false}},"required":["expectedRevision","expectedHash","content"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"current":{"type":"object","properties":{"version":{"type":"number","const":1},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","postId","siteId","workspaceId","revision","content","authorId","createdAt","contentHash","summaryHash","hash"],"additionalProperties":false},"selectedRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"liveRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","siteId","current","selectedRevision","liveRevision"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/posts/{postId}/history":{"get":{"operationId":"site_post_history","summary":"Read immutable authored post history using beforeRevision. This reads structured content only.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"postId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"beforeRevision","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"version":{"type":"number","const":1},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"content":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"slug":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"author":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"body":{"minItems":1,"maxItems":300,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"paragraph"},"text":{"type":"string","minLength":1,"maxLength":10000}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"heading"},"level":{"anyOf":[{"type":"number","const":2},{"type":"number","const":3}]},"text":{"type":"string","minLength":1,"maxLength":200}},"required":["type","level","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"quote"},"text":{"type":"string","minLength":1,"maxLength":5000},"attribution":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]}},"required":["type","text","attribution"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"list"},"ordered":{"type":"boolean"},"items":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}}},"required":["type","ordered","items"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"link"},"text":{"type":"string","minLength":1,"maxLength":400},"url":{"type":"string","maxLength":2000}},"required":["type","text","url"],"additionalProperties":false}]}}},"required":["title","description","slug","author","date","body"],"additionalProperties":false},"authorId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","postId","siteId","workspaceId","revision","content","authorId","createdAt","contentHash","summaryHash","hash"],"additionalProperties":false}},"nextBeforeRevision":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["items","nextBeforeRevision"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/blog-selection":{"post":{"operationId":"site_posts_select","summary":"Select exact authored post revisions for the next site scope. This invalidates scope approval and preserves the live release. It neither builds nor publishes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","revision","hash"],"additionalProperties":false}}},"required":["expectedVersion","expectedHash","pageSize","posts"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepagePageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"currentVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"approvedVersion":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"current":{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},"approved":{"anyOf":[{"type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"origin":{"type":"string","enum":["homepage","proposal","user-edit","user-facts","verified-facts"]},"document":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"goal":{"type":"string","minLength":1,"maxLength":4000},"audience":{"type":"string","maxLength":4000},"blogRequested":{"type":"boolean"},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"purpose":{"type":"string","minLength":1,"maxLength":2000},"kind":{"type":"string","enum":["page","blog-index"]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"navigation":{"type":"boolean","const":false}},"required":["name","path","purpose","kind","id"],"additionalProperties":false}},"sharedFacts":{"type":"object","properties":{"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"facts":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":10000},{"type":"null"}]},"authority":{"type":"string","enum":["user","verified"]},"sourceUrls":{"maxItems":12,"type":"array","items":{"type":"string","format":"uri"}},"changedInVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["key","value","authority","sourceUrls","changedInVersion","userId"],"additionalProperties":false}}},"required":["version","facts"],"additionalProperties":false},"blog":{"type":"object","properties":{"version":{"type":"number","const":1},"indexPageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageSize":{"type":"integer","minimum":1,"maximum":24},"posts":{"maxItems":49,"type":"array","items":{"type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"summaryHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["postId","pageId","revision","hash","summaryHash"],"additionalProperties":false}},"indexes":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"page":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["pageId","page"],"additionalProperties":false}}},"required":["version","indexPageId","pageSize","posts","indexes"],"additionalProperties":false}},"required":["title","goal","audience","blogRequested","pages","sharedFacts"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["siteId","version","hash","origin","document","createdAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","workspaceId","homepagePageId","currentVersion","approvedVersion","current","approved"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/builds":{"post":{"operationId":"site_build","summary":"Build the explicitly selected child pages from the checked homepage and approved scope. Each child uses an independent automatic reservation; the complete batch is admitted atomically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"children":{"minItems":1,"maxItems":49,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["pageId"],"additionalProperties":false}}},"required":["expectedVersion","expectedHash","sharedFactsHash","homepageGenerationId","homepageContentHash","homepageImageHash","children"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"createdAt":{"type":"string"},"revision":{"type":"object","properties":{"scope":{"type":"string","enum":["local","global","pages"]},"prompt":{"type":"string"},"continueSource":{"type":"boolean","const":true}},"required":["scope","prompt"],"additionalProperties":{}},"items":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"contentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["pageId","path","name","generationId","state","stage","updatedAt","error","contentHash"],"additionalProperties":{}}}},"required":["id","siteId","scopeVersion","scopeHash","createdAt","items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"site_builds","summary":"Read saved initial and revision batches with actual per-page progress.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"createdAt":{"type":"string"},"revision":{"type":"object","properties":{"scope":{"type":"string","enum":["local","global","pages"]},"prompt":{"type":"string"},"continueSource":{"type":"boolean","const":true}},"required":["scope","prompt"],"additionalProperties":{}},"items":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"contentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["pageId","path","name","generationId","state","stage","updatedAt","error","contentHash"],"additionalProperties":{}}}},"required":["id","siteId","scopeVersion","scopeHash","createdAt","items"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/revision-options":{"get":{"operationId":"site_revision_options","summary":"Read eligible source parents and the exact approved binding for a reviewed site revision. This performs no generation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"homepageGenerationId","in":"query","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"scope","in":"query","required":true,"schema":{"type":"string","enum":["local","global","pages"]}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scope":{"type":"string","enum":["local","global","pages"]},"binding":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["expectedVersion","expectedHash","sharedFactsHash","homepageGenerationId","homepageContentHash","homepageImageHash"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string","minLength":1,"maxLength":120},"path":{},"canStartNew":{"type":"boolean"},"active":{"type":"boolean"},"unavailableReason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"versions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"title":{"type":"string","maxLength":160},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"state":{"type":"string","enum":["ready","needs_review"]}},"required":["generationId","contentHash","title","createdAt","state"],"additionalProperties":false}}},"required":["pageId","name","path","canStartNew","active","unavailableReason","versions"],"additionalProperties":false}}},"required":["siteId","scope","binding","pages"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/revisions":{"post":{"operationId":"site_revise","summary":"Revise one local page, several explicitly selected pages, or the complete site from exact source parents. Every selected page uses an independent automatic reservation. The command validates the exact selected revision scope.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageGenerationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"homepageContentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"homepageImageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"scope":{"type":"string","enum":["local","global","pages"]},"prompt":{"type":"string","minLength":1,"maxLength":20000},"continueSource":{"type":"boolean","const":true},"children":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"parent":{"anyOf":[{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash"],"additionalProperties":false},{"type":"null"}]},"approval":{"oneOf":[{"type":"object","properties":{"billingMode":{"type":"string","const":"internal"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["billingMode","workspaceId"],"additionalProperties":false},{"type":"object","properties":{"billingMode":{"type":"string","const":"credits"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maximumCredits":{"type":"string"},"maximumMicros":{"type":"string","pattern":"^[1-9]\\d{0,15}$"},"policyId":{"type":"string","minLength":1,"maxLength":250}},"required":["billingMode","workspaceId","maximumCredits","maximumMicros","policyId"],"additionalProperties":false}],"description":"Historical exact-request compatibility. New tasks omit approval and use server-managed reservations from available workspace credits."}},"required":["pageId","parent"],"additionalProperties":false}}},"required":["expectedVersion","expectedHash","sharedFactsHash","homepageGenerationId","homepageContentHash","homepageImageHash","scope","prompt","children"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"202":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"createdAt":{"type":"string"},"revision":{"type":"object","properties":{"scope":{"type":"string","enum":["local","global","pages"]},"prompt":{"type":"string"},"continueSource":{"type":"boolean","const":true}},"required":["scope","prompt"],"additionalProperties":{}},"items":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"contentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["pageId","path","name","generationId","state","stage","updatedAt","error","contentHash"],"additionalProperties":{}}}},"required":["id","siteId","scopeVersion","scopeHash","createdAt","items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-builds/{id}":{"get":{"operationId":"site_build_get","summary":"Read saved batch progress. Open each generationId for available source and findings; cancel individual pages with generation_cancel.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"createdAt":{"type":"string"},"revision":{"type":"object","properties":{"scope":{"type":"string","enum":["local","global","pages"]},"prompt":{"type":"string"},"continueSource":{"type":"boolean","const":true}},"required":["scope","prompt"],"additionalProperties":{}},"items":{"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{"type":"string"},"name":{"type":"string"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"stage":{"type":"string","enum":["queued","researching","designing","comparing","inspecting","building","checking","refining","finished"]},"updatedAt":{"type":"string"},"error":{"type":["string","null"]},"contentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]}},"required":["pageId","path","name","generationId","state","stage","updatedAt","error","contentHash"],"additionalProperties":{}}}},"required":["id","siteId","scopeVersion","scopeHash","createdAt","items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/summary":{"get":{"operationId":"billing_summary","summary":"Read exact available/reserved credits, receipts, plan and configuration. No estimated or unresolved cost is a charge.","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1000}}],"security":[{"bearerAuth":[]},{"oauth":["billing:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"capacity":{"type":"object","properties":{"planId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"pendingPlanId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"hosting":{"type":"object","properties":{"state":{"type":"string","enum":["internal","paid","grace","suspended"]},"serving":{"type":"boolean"},"paidUntil":{"type":["string","null"]},"graceUntil":{"type":["string","null"]},"graceReason":{"anyOf":[{"type":"string","enum":["cancelled","renewal_unpaid"]},{"type":"null"}]}},"required":["state","serving","paidUntil","graceUntil","graceReason"],"additionalProperties":{}},"periodStart":{"type":["string","null"]},"periodEnd":{"type":["string","null"]},"limits":{"anyOf":[{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hostedPages","customDomains","seats","formResponses"],"additionalProperties":{}},{"type":"null"}]},"used":{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hostedPages","customDomains","seats","formResponses"],"additionalProperties":{}},"excess":{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}}},"required":["planId","hosting","periodStart","periodEnd","limits","used","excess"],"additionalProperties":{}},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"billingMode":{"type":"string","enum":["internal","credits"]},"canManage":{"type":"boolean"},"configured":{"type":"boolean"},"catalog":{"type":"object","properties":{"id":{"type":"string"},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["starter","studio","business"]},"name":{"type":"string"},"monthlyCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"creditMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"limits":{"type":"object","properties":{"hostedPages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customDomains":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seats":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"formResponses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"concurrentJobs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["hostedPages","customDomains","seats","formResponses","concurrentJobs"],"additionalProperties":{}}},"required":["id","name","monthlyCents","credits","creditMicros","limits"],"additionalProperties":{}}},"topups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"creditMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["id","name","cents","credits","creditMicros"],"additionalProperties":{}}}},"required":["id","plans","topups"],"additionalProperties":{}},"wallet":{"type":"object","properties":{"availableMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"reservedMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"spentMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"unit":{"type":"string","const":"credit_micro"},"creditMicrosPerCredit":{"type":"string","const":"1000000"}},"required":["availableMicros","reservedMicros","spentMicros","unit","creditMicrosPerCredit"],"additionalProperties":{}},"entitlement":{"type":"object","properties":{"planId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"status":{"type":"string"},"paidUntil":{"type":["string","null"]},"blockedReview":{"type":"boolean"}},"required":["planId","status","paidUntil","blockedReview"],"additionalProperties":{}},"subscription":{"type":"object","properties":{"id":{"type":"string"},"cancelAtPeriodEnd":{"type":"boolean"},"scheduledPlanId":{"anyOf":[{"type":"string","enum":["starter","studio","business"]},{"type":"null"}]},"hostingGraceUntil":{"type":["string","null"]}},"required":["id","cancelAtPeriodEnd"],"additionalProperties":{}},"reviews":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","message","createdAt"],"additionalProperties":{}}},"receipts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":"string"},"state":{"type":"string","enum":["active","pending_cost","settled","released","reimbursed"]},"fundingMode":{"type":"string","enum":["automatic","capped"]},"chargedMicros":{"anyOf":[{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},{"type":"null"}]},"maximumMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"createdAt":{"type":"string"}},"required":["id","label","state","chargedMicros","createdAt"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["workspaceId","billingMode","canManage","configured","catalog","wallet","entitlement","reviews","receipts"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/usage/{id}":{"get":{"operationId":"billing_receipt","summary":"Read this job’s immutable customer receipt and unresolved steps. Monetary quantities remain decimal strings.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["billing:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"label":{"type":"string"},"policyId":{"type":"string"},"state":{"type":"string","enum":["active","pending_cost","settled","released","reimbursed"]},"outcome":{"type":"string","enum":["queued","running","ready","needs_review","failed","cancelled"]},"fundingMode":{"type":"string","enum":["automatic","capped"]},"maximumMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"chargedMicros":{"anyOf":[{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},{"type":"null"}]},"reimbursedMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"state":{"type":"string","enum":["authorized","submitted","accepted","settled","not_submitted","unresolved"]},"chargedMicros":{"anyOf":[{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},{"type":"null"}]},"description":{"type":"string"}},"required":["id","label","state","chargedMicros"],"additionalProperties":{}}}},"required":["generationId","label","policyId","state","outcome","maximumMicros","chargedMicros","reimbursedMicros","steps"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/quote":{"post":{"operationId":"billing_quote","summary":"Optionally read the actual balance and usage policy before submitting work. A quote reserves nothing and may have no reliable estimate.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"action":{"type":"string","enum":["create","select_design","refine","edit","continue","review_designs","site_proposal","site_page"]},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["action"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:write"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:write","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"billingMode":{"type":"string","enum":["internal","credits"]},"policyId":{"type":["string","null"]},"estimate":{"anyOf":[{"type":"object","properties":{"lowMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"highMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["lowMicros","highMicros"],"additionalProperties":{}},{"type":"null"}]},"reason":{"type":"string"},"availableMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"maximumAllowedMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"expiresAt":{"type":"string"}},"required":["workspaceId","billingMode","policyId","estimate","availableMicros"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/release-options":{"get":{"operationId":"site_release_options","summary":"Read the approved scope binding and compatible checked page versions for the selected homepage. This read performs no generation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"homepageGenerationId","in":"query","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"binding":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false}},"required":["expectedVersion","expectedHash","sharedFactsHash","baseline"],"additionalProperties":false},"pages":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"name":{"type":"string"},"versions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"createdAt":{"type":"string"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","title","createdAt","contentHash"],"additionalProperties":false}}},"required":["pageId","path","name","versions"],"additionalProperties":false}}},"required":["siteId","binding","pages"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/releases":{"get":{"operationId":"site_releases","summary":"List immutable site releases. Use nextCursor as before to read older releases.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"version":{"type":"number","const":1},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"name":{"type":"string","minLength":1,"maxLength":120},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"provenance":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"parentGenerationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parentContentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","path","scopeVersion","scopeHash","sharedFactsHash","baseline","workHash","parentGenerationId","parentContentHash","contentHash"],"additionalProperties":false},{"type":"null"}]},"compatibility":{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"previousScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"previousScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"currentScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baselineHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentDependenciesHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","contentHash","workHash","previousScopeVersion","previousScopeHash","currentScopeVersion","currentScopeHash","sharedFactsHash","baselineHash","pageHash","sharedScopeHash","hash"],"additionalProperties":false}},"required":["pageId","generationId","path","name","sourceHash","provenance"],"additionalProperties":false}},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","id","siteId","workspaceId","scopeVersion","scopeHash","sharedFactsHash","baseline","pages","hash"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"site_release_create","summary":"Package the explicitly reviewed, complete set of checked page versions as an immutable site release. This does not publish or generate pages.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["pageId","generationId","contentHash"],"additionalProperties":false}}},"required":["expectedVersion","expectedHash","sharedFactsHash","baseline","pages"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:publish"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:publish","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"number","const":1},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"name":{"type":"string","minLength":1,"maxLength":120},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"provenance":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"parentGenerationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parentContentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","path","scopeVersion","scopeHash","sharedFactsHash","baseline","workHash","parentGenerationId","parentContentHash","contentHash"],"additionalProperties":false},{"type":"null"}]},"compatibility":{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"previousScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"previousScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"currentScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baselineHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentDependenciesHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","contentHash","workHash","previousScopeVersion","previousScopeHash","currentScopeVersion","currentScopeHash","sharedFactsHash","baselineHash","pageHash","sharedScopeHash","hash"],"additionalProperties":false}},"required":["pageId","generationId","path","name","sourceHash","provenance"],"additionalProperties":false}},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","id","siteId","workspaceId","scopeVersion","scopeHash","sharedFactsHash","baseline","pages","hash"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/releases/{releaseId}":{"get":{"operationId":"site_release_get","summary":"Read the immutable release manifest without private storage paths.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"releaseId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"version":{"type":"number","const":1},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"name":{"type":"string","minLength":1,"maxLength":120},"sourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"provenance":{"anyOf":[{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"path":{},"scopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baseline":{"type":"object","properties":{"generationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"brandHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["generationId","contentHash","imageHash","brandHash"],"additionalProperties":false},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"parentGenerationId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parentContentHash":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","path","scopeVersion","scopeHash","sharedFactsHash","baseline","workHash","parentGenerationId","parentContentHash","contentHash"],"additionalProperties":false},{"type":"null"}]},"compatibility":{"type":"object","properties":{"version":{"type":"number","const":1},"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"workHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"previousScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"previousScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"currentScopeVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"currentScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedFactsHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"baselineHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"pageHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sharedScopeHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"contentDependenciesHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","siteId","pageId","contentHash","workHash","previousScopeVersion","previousScopeHash","currentScopeVersion","currentScopeHash","sharedFactsHash","baselineHash","pageHash","sharedScopeHash","hash"],"additionalProperties":false}},"required":["pageId","generationId","path","name","sourceHash","provenance"],"additionalProperties":false}},"hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["version","id","siteId","workspaceId","scopeVersion","scopeHash","sharedFactsHash","baseline","pages","hash"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/releases/{releaseId}/download":{"get":{"operationId":"site_release_download","summary":"Download the immutable complete site ZIP with its exact validated assets and font licenses.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"releaseId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authenticated artifact bytes.","content":{"application/zip":{"schema":{"type":"string","contentEncoding":"binary"}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/{id}/publication":{"get":{"operationId":"site_publication_get","summary":"Read the current whole-site publication version and release.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"releaseId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["siteId","version","releaseId"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"site_publish","summary":"Publish or restore the explicitly reviewed immutable release, or unpublish with releaseId:null. Bind the current publication version; the complete route tree changes atomically.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","pattern":"^[\\x21-\\x7e]{8,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","minimum":0,"maximum":9007199254740991},"releaseId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["expectedVersion","releaseId"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["pages:publish"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:publish","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"siteId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","minimum":0,"maximum":9007199254740991},"releaseId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["siteId","version","releaseId"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/checkout":{"post":{"operationId":"billing_checkout","summary":"Open a checkout for the explicitly selected package. Requires a recent owner/admin browser session. No credits are granted by its redirect.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"},"skuId":{"type":"string","enum":["starter","studio","business","credits_1000","credits_2500","credits_5000","credits_10000"]}},"required":["workspaceId","idempotencyKey","skuId"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/portal":{"post":{"operationId":"billing_portal","summary":"Open the customer payment portal. Requires a recent owner/admin browser session.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}},"required":["workspaceId","idempotencyKey"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"}},"required":["id","url"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/cancel":{"post":{"operationId":"billing_cancel","summary":"Schedule cancellation of the explicitly reviewed subscription. Requires a recent owner/admin browser session.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"},"subscriptionId":{"type":"string","pattern":"^sub_[A-Za-z0-9_]{1,200}$"}},"required":["workspaceId","idempotencyKey","subscriptionId"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string"},"cancelAtPeriodEnd":{"type":"boolean","const":true}},"required":["subscriptionId","cancelAtPeriodEnd"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/change-preview":{"post":{"operationId":"billing_change_preview","summary":"Retrieve the exact current Stripe proration amount before explicit confirmation. Do not substitute an estimate.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"subscriptionId":{"type":"string","pattern":"^sub_[A-Za-z0-9_]{1,200}$"},"planId":{"type":"string","enum":["starter","studio","business"]}},"required":["workspaceId","subscriptionId","planId"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:manage","x-browser-session-required":true,"x-idempotent":false,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"subscriptionId":{"type":"string"},"planId":{"type":"string","enum":["starter","studio","business"]},"currency":{"type":"string","const":"usd"},"amountDueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditDeltaMicros":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"expiresAt":{"type":"string"},"prorationDate":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","subscriptionId","planId","currency","amountDueCents","creditDeltaMicros","expiresAt","prorationDate"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/billing/change-plan":{"post":{"operationId":"billing_change_plan","summary":"Apply the explicitly reviewed plan change. Paid upgrades require a fresh exact previewId; stale state requires a new review.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"},"subscriptionId":{"type":"string","pattern":"^sub_[A-Za-z0-9_]{1,200}$"},"planId":{"type":"string","enum":["starter","studio","business"]},"previewId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["workspaceId","idempotencyKey","subscriptionId","planId"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"billing:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"subscriptionId":{"type":"string"},"planId":{"type":"string","enum":["starter","studio","business"]},"effective":{"type":"string","enum":["after_payment","next_renewal"]},"scheduleId":{"type":"string"}},"required":["subscriptionId","planId","effective"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/integrations/webhooks":{"get":{"operationId":"webhooks_list","summary":"List this workspace’s integration endpoints. Destination paths, query strings and signing secrets are never returned.","parameters":[],"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"destination":{"type":"string"},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean","const":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","revision","destination","events","enabled","secretConfigured","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"webhook_create","summary":"Register an endpoint for future workspace events. Supply a private signing secret and an exact idempotency key; registering an enabled endpoint authorizes event delivery. This does not replay past events.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2000},"secret":{"type":"string","minLength":32,"maxLength":256},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"default":true,"type":"boolean"}},"required":["url","secret","events"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"destination":{"type":"string"},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean","const":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","revision","destination","events","enabled","secretConfigured","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/integrations/webhooks/{id}":{"get":{"operationId":"webhook_get","summary":"Read a saved endpoint revision before changing it. This read does not send an event.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"destination":{"type":"string"},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean","const":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","revision","destination","events","enabled","secretConfigured","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"webhook_update","summary":"Change subscriptions, enable or disable, replace the destination, or rotate its private signing secret using expectedRevision. Queued deliveries retain their original recipient and secret; disabling cancels queued work, while an already dispatched request may finish.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"url":{"type":"string","minLength":1,"maxLength":2000},"secret":{"type":"string","minLength":32,"maxLength":256},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"type":"boolean"}},"required":["expectedRevision","events","enabled"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"destination":{"type":"string"},"events":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]}},"enabled":{"type":"boolean"},"secretConfigured":{"type":"boolean","const":true},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["id","revision","destination","events","enabled","secretConfigured","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/integrations/webhooks/{id}/deliveries":{"get":{"operationId":"webhook_deliveries","summary":"Read saved delivery status and attempts. Pass nextCursor as before; a successful delivery is an HTTP acknowledgement, not proof of downstream processing.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}}],"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]},"endpointRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"state":{"type":"string","enum":["pending","delivering","delivered","failed","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"cycleAttempts":{"type":"integer","minimum":0,"maximum":6},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastStatus":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}]},"error":{"anyOf":[{"type":"string","enum":["network","timeout","redirect","http","invalid_destination","invalid_payload","secret_unavailable","lease_expired","disabled"]},{"type":"null"}]}},"required":["id","eventId","type","endpointRevision","state","attempts","cycleAttempts","createdAt","nextAttemptAt","completedAt","lastStatus","error"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/integrations/webhooks/{id}/deliveries/{deliveryId}/retry":{"post":{"operationId":"webhook_retry","summary":"Retry an exhausted failed delivery after inspecting it. Bind expectedAttempts. Reuses the same event id, exact body, destination and signing secret; the destination must deduplicate events.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"deliveryId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedAttempts":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["expectedAttempts"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["workspace:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"type":{"type":"string","enum":["generation.completed","generation.failed","generation.cancelled","page.published","page.unpublished","site.published","site.unpublished","form.submitted"]},"endpointRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"state":{"type":"string","enum":["pending","delivering","delivered","failed","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"cycleAttempts":{"type":"integer","minimum":0,"maximum":6},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"lastStatus":{"anyOf":[{"type":"integer","minimum":100,"maximum":599},{"type":"null"}]},"error":{"anyOf":[{"type":"string","enum":["network","timeout","redirect","http","invalid_destination","invalid_payload","secret_unavailable","lease_expired","disabled"]},{"type":"null"}]}},"required":["id","eventId","type","endpointRevision","state","attempts","cycleAttempts","createdAt","nextAttemptAt","completedAt","lastStatus","error"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/domains":{"post":{"operationId":"domain_connect","summary":"Connect an explicitly requested hostname. Allocates domain capacity and may contact the hosting provider; returns DNS verification instructions.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"hostname":{"type":"string","maxLength":253}},"required":["hostname"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["domains:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"domains:manage","x-browser-session-required":false,"x-idempotent":false,"x-external-side-effect":true,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"hostname":{"type":"string"},"state":{"type":"string","enum":["pending","active","error","detaching","detached"]},"hostnameStatus":{"type":["string","null"]},"certificateStatus":{"type":["string","null"]},"dnsRecords":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["CNAME","TXT"]},"name":{"type":"string"},"value":{"type":"string"},"purpose":{"type":"string","enum":["routing","ownership","certificate"]}},"required":["type","name","value","purpose"],"additionalProperties":{}}},"routingVerified":{"type":"boolean"},"checkedAt":{"type":["string","null"]},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","pageId","hostname","state","hostnameStatus","certificateStatus","dnsRecords","routingVerified","checkedAt","error","createdAt","updatedAt","url"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/domains/{domainId}/check":{"post":{"operationId":"domain_check","summary":"Recheck DNS and certificate status for an existing domain.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["domains:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"domains:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"hostname":{"type":"string"},"state":{"type":"string","enum":["pending","active","error","detaching","detached"]},"hostnameStatus":{"type":["string","null"]},"certificateStatus":{"type":["string","null"]},"dnsRecords":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["CNAME","TXT"]},"name":{"type":"string"},"value":{"type":"string"},"purpose":{"type":"string","enum":["routing","ownership","certificate"]}},"required":["type","name","value","purpose"],"additionalProperties":{}}},"routingVerified":{"type":"boolean"},"checkedAt":{"type":["string","null"]},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","pageId","hostname","state","hostnameStatus","certificateStatus","dnsRecords","routingVerified","checkedAt","error","createdAt","updatedAt","url"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/domains/{domainId}":{"delete":{"operationId":"domain_disconnect","summary":"Disconnect this custom hostname. Existing page source and managed hosting remain saved.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"domainId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["domains:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"domains:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"hostname":{"type":"string"},"state":{"type":"string","enum":["pending","active","error","detaching","detached"]},"hostnameStatus":{"type":["string","null"]},"certificateStatus":{"type":["string","null"]},"dnsRecords":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["CNAME","TXT"]},"name":{"type":"string"},"value":{"type":"string"},"purpose":{"type":"string","enum":["routing","ownership","certificate"]}},"required":["type","name","value","purpose"],"additionalProperties":{}}},"routingVerified":{"type":"boolean"},"checkedAt":{"type":["string","null"]},"error":{"type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":["string","null"]}},"required":["id","pageId","hostname","state","hostnameStatus","certificateStatus","dnsRecords","routingVerified","checkedAt","error","createdAt","updatedAt","url"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms":{"get":{"operationId":"forms_list","summary":"Read form configuration with masked destination credentials.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["forms:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"forms:manage","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type","required","placeholder","options","maxLength"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"destination":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"fieldMapping":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"secretConfigured":{"type":"boolean"}},"required":["url","fieldMapping","secretConfigured"],"additionalProperties":{}},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","enabled","nativeFormId","nativeSourceHash","fields","submitLabel","successMessage","id","pageId","revision","destination","createdAt","updatedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"form_create","summary":"Create the explicitly reviewed form configuration. Not idempotent: read forms before retrying an uncertain result.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"webhook":{"default":null,"anyOf":[{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2000},"fieldMapping":{"default":{}},"secret":{"type":"string","minLength":32,"maxLength":256}},"required":["url"],"additionalProperties":false},{"type":"null"}]}},"required":["name","fields"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["forms:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"forms:manage","x-browser-session-required":false,"x-idempotent":false,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type","required","placeholder","options","maxLength"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"destination":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"fieldMapping":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"secretConfigured":{"type":"boolean"}},"required":["url","fieldMapping","secretConfigured"],"additionalProperties":{}},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","enabled","nativeFormId","nativeSourceHash","fields","submitLabel","successMessage","id","pageId","revision","destination","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms/{formId}":{"put":{"operationId":"form_update","summary":"Update or disable a form, bound to expectedRevision. Existing accepted leads are retained.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"formId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"form":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"webhook":{"default":null,"anyOf":[{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2000},"fieldMapping":{"default":{}},"secret":{"type":"string","minLength":32,"maxLength":256}},"required":["url"],"additionalProperties":false},{"type":"null"}]}},"required":["name","fields"],"additionalProperties":false}},"required":["expectedRevision","form"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["forms:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"forms:manage","x-browser-session-required":false,"x-idempotent":false,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type","required","placeholder","options","maxLength"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"destination":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"fieldMapping":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"secretConfigured":{"type":"boolean"}},"required":["url","fieldMapping","secretConfigured"],"additionalProperties":{}},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","enabled","nativeFormId","nativeSourceHash","fields","submitLabel","successMessage","id","pageId","revision","destination","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms/{formId}/copy":{"post":{"operationId":"form_copy","summary":"Copy a form to the exact reviewed native source hash and fields. Not idempotent; reconcile uncertain results by reading forms.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"formId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"nativeSourceHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"nativeFormId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type"],"additionalProperties":false}}},"required":["expectedRevision","nativeSourceHash","nativeFormId","fields"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["forms:manage"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"forms:manage","x-browser-session-required":false,"x-idempotent":false,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"enabled":{"default":true,"type":"boolean"},"nativeFormId":{"default":null,"anyOf":[{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_:-]{0,99}$"},{"type":"null"}]},"nativeSourceHash":{"default":null,"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"fields":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","minLength":1,"maxLength":120},"type":{"type":"string","enum":["text","email","tel","textarea","select","checkbox","number","url","date"]},"required":{"default":false,"type":"boolean"},"placeholder":{"default":"","type":"string","maxLength":200},"options":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"maxLength":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},"required":["name","label","type","required","placeholder","options","maxLength"],"additionalProperties":false}},"submitLabel":{"default":"Send message","type":"string","minLength":1,"maxLength":80},"successMessage":{"default":"Thanks. Your message has been received.","type":"string","minLength":1,"maxLength":500},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"destination":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"fieldMapping":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"secretConfigured":{"type":"boolean"}},"required":["url","fieldMapping","secretConfigured"],"additionalProperties":{}},{"type":"null"}]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","enabled","nativeFormId","nativeSourceHash","fields","submitLabel","successMessage","id","pageId","revision","destination","createdAt","updatedAt"],"additionalProperties":false}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms/{formId}/leads":{"get":{"operationId":"leads_list","summary":"Read at most 50 saved leads. Pass the last lead id as before to page backward.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"formId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["leads:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"leads:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"receivedAt":{"type":"string"},"test":{"type":"boolean"},"pageId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"formId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"formRevision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"values":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","boolean"]}},"delivery":{"anyOf":[{"type":"object","properties":{"state":{"type":"string","enum":["pending","delivering","delivered","failed"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextAttemptAt":{"type":["string","null"]},"error":{"type":["string","null"]},"history":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"type":"string"},"finishedAt":{"type":["string","null"]},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":["string","null"]}},"required":["number","startedAt","finishedAt","status","error"],"additionalProperties":{}}}},"required":["state","attempts","nextAttemptAt","error","history"],"additionalProperties":{}},{"type":"null"}]}},"required":["id","receivedAt","test","pageId","formId","formRevision","values","delivery"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms/{formId}/test":{"post":{"operationId":"form_test","summary":"Create a test lead. deliverToDestination=false is inbox-only; true explicitly sends it to the configured external webhook.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"formId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":8,"maxLength":160,"pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deliverToDestination":{"type":"boolean"}},"required":["deliverToDestination"],"additionalProperties":false}}}},"security":[{"bearerAuth":[]},{"oauth":["leads:deliver"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"leads:deliver","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":true,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"receivedAt":{"type":"string"},"test":{"type":"boolean"}},"required":["id","receivedAt","test"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pages/{pageId}/forms/{formId}/leads/{leadId}/retry":{"post":{"operationId":"lead_retry","summary":"Request delivery retry of an existing saved lead to its configured external destination.","parameters":[{"name":"pageId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"formId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"leadId","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["leads:deliver"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"leads:deliver","x-browser-session-required":false,"x-idempotent":false,"x-external-side-effect":true,"responses":{"204":{"description":"Authoritative saved result; availability is not a quality pass."},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/reference":{"get":{"operationId":"reference_read","summary":"Read the original reference PNG, with an optional immutable live snapshot hash.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"live","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-f0-9]{64}$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authenticated artifact bytes.","content":{"image/png":{"schema":{"type":"string","contentEncoding":"binary"}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/designs/{candidateId}/image":{"get":{"operationId":"design_image_read","summary":"Read an authenticated design PNG. Optional v binds the exact current or retained prior image hash.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"candidateId","in":"path","required":true,"schema":{"type":"string","enum":["astra-a","astra-b","astra-c","astra-d","openai","xai","google"]}},{"name":"v","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-f0-9]{64}$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authenticated artifact bytes.","content":{"image/png":{"schema":{"type":"string","contentEncoding":"binary"}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/brand/logo":{"get":{"operationId":"brand_logo_read","summary":"Read the authenticated brand logo after verifying its saved hash.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authenticated artifact bytes.","content":{"image/png":{"schema":{"type":"string","contentEncoding":"binary"}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/download":{"get":{"operationId":"download_read","summary":"Download the terminal portable source ZIP and exact validated assets with font licenses. A live draft cannot be downloaded.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"pages:read","x-browser-session-required":false,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authenticated artifact bytes.","content":{"application/zip":{"schema":{"type":"string","contentEncoding":"binary"}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/keys":{"get":{"operationId":"keys_list","summary":"List your own workspace API keys without secret material.","parameters":[],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":null,"x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"prefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string"},"expires_at":{"type":"string"},"last_used_at":{"type":["string","null"]},"revoked_at":{"type":["string","null"]}},"required":["id","name","prefix","scopes","created_at","expires_at","last_used_at","revoked_at"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"key_create","summary":"Create a scoped API key in a recent verified browser session. The secret is returned once; do not put it in shared conversation output.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"scopes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","enum":["pages:read","pages:write","pages:publish","domains:manage","forms:manage","leads:read","leads:deliver","billing:read","billing:manage","workspace:manage"]}},"expiresDays":{"default":90,"type":"integer","minimum":1,"maximum":365}},"required":["name","scopes"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":null,"x-browser-session-required":true,"x-idempotent":false,"x-external-side-effect":false,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"token":{"type":"string"}},"required":["id","token"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/keys/{id}":{"delete":{"operationId":"key_revoke","summary":"Revoke your own workspace API key.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":null,"x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":false,"responses":{"204":{"description":"Authoritative saved result; availability is not a quality pass."},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/members":{"get":{"operationId":"members_list","summary":"Read current workspace members. Owner/admin browser session required.","parameters":[],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string"},"name":{"type":"string"},"role":{"type":"string","enum":["owner","admin","editor","viewer"]},"created_at":{"type":"string"}},"required":["id","email","name","role","created_at"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/members/{id}":{"put":{"operationId":"member_update","summary":"Change this member’s workspace role after explicit review. Recent owner/admin session required.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"role":{"type":"string","enum":["owner","admin","editor","viewer"]}},"required":["role"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":false,"x-external-side-effect":false,"responses":{"204":{"description":"Authoritative saved result; availability is not a quality pass."},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"member_remove","summary":"Remove this member’s workspace access after explicit review. Recent owner/admin session required.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":false,"x-external-side-effect":false,"responses":{"204":{"description":"Authoritative saved result; availability is not a quality pass."},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/invites":{"get":{"operationId":"invites_list","summary":"Read workspace invitations. Owner/admin browser session required.","parameters":[],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":false,"responses":{"200":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string"},"role":{"type":"string","enum":["owner","admin","editor","viewer"]},"expires_at":{"type":"string"},"accepted_at":{"type":["string","null"]},"revoked_at":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","email","role","expires_at","accepted_at","revoked_at","created_at"],"additionalProperties":{}}}},"required":["items"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"invite_create","summary":"Send an explicitly requested workspace invitation email. Recent owner/admin browser session and seat capacity required.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["admin","editor","viewer"]}},"required":["email","role"],"additionalProperties":false}}}},"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":false,"x-external-side-effect":true,"responses":{"201":{"description":"Authoritative saved result; availability is not a quality pass.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":{}}}}},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account/invites/{id}":{"delete":{"operationId":"invite_revoke","summary":"Revoke this workspace invitation.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}],"security":[{"sessionCookie":[],"csrfToken":[]}],"x-waveform-scope":"workspace:manage","x-browser-session-required":true,"x-idempotent":true,"x-external-side-effect":false,"responses":{"204":{"description":"Authoritative saved result; availability is not a quality pass."},"default":{"description":"Stable error code and message. Reconcile uncertain mutations before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/generations/{id}/events":{"get":{"operationId":"generation_events","summary":"Stream authoritative saved generation snapshots. Reconnect by reading current state; bounded to five minutes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[]}],"x-waveform-scope":"pages:read","responses":{"200":{"description":"Saved snapshots with generation event names; periodic heartbeats. Access is revalidated during the stream.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"default":{"description":"Stable authorization or availability error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/site-jobs/{id}/events":{"get":{"operationId":"site_job_events","summary":"Stream authoritative saved site-job snapshots. Reconnect by reading current state; bounded to five minutes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"security":[{"bearerAuth":[]},{"oauth":["pages:read"]},{"sessionCookie":[]}],"x-waveform-scope":"pages:read","responses":{"200":{"description":"Saved snapshots with site-job event names; periodic heartbeats. Access is revalidated during the stream.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"default":{"description":"Stable authorization or availability error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Workspace-scoped API key or audience-bound OAuth access token."},"oauth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://getwaveform.com/oauth/authorize","tokenUrl":"https://getwaveform.com/oauth/token","refreshUrl":"https://getwaveform.com/oauth/token","scopes":{"pages:read":"pages:read","pages:write":"pages:write","pages:publish":"pages:publish","billing:read":"billing:read","workspace:manage":"workspace:manage","domains:manage":"domains:manage","forms:manage":"forms:manage","leads:read":"leads:read","leads:deliver":"leads:deliver"}}},"x-resource":"https://getwaveform.com/mcp"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"__Host-waveform_account"},"csrfToken":{"type":"apiKey","in":"header","name":"X-CSRF-Token"}},"schemas":{"Error":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}