@talonic/docs 0.20.18 → 0.20.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/content.js +1529 -9
- package/dist/index.js +180 -0
- package/dist/index.js.map +1 -1
- package/dist/seo.js +23 -0
- package/package.json +1 -1
- package/dist/tailwind-preset.d.cts +0 -45
- package/dist/tailwind-preset.d.ts +0 -45
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/CodeBlock.tsx","../src/components/DownloadMarkdown.tsx","../src/components/Sidebar.tsx","../src/components/DocPrimitives.tsx","../src/pages/ApiReference.tsx","../src/pages/PlatformGuide.tsx","../src/seo.ts"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\n\n/** Regex-based JSON syntax highlighter. */\nexport function highlightJson(raw: string): React.ReactNode[] {\n const lines = raw.split('\\n');\n return lines.map((line, i) => {\n const parts: React.ReactNode[] = [];\n let rest = line;\n let key = 0;\n\n const regex =\n /(\"(?:\\\\.|[^\"\\\\])*\")\\s*(:)?|(\\b\\d+(?:\\.\\d+)?\\b)|\\b(true|false)\\b|\\b(null)\\b/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(rest)) !== null) {\n if (match.index > lastIndex) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {rest.slice(lastIndex, match.index)}\n </span>,\n );\n }\n\n if (match[1] && match[2]) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {match[1]}\n </span>,\n );\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {match[2]}\n </span>,\n );\n } else if (match[1]) {\n parts.push(\n <span key={key++} className=\"text-[#86EFAC]\">\n {match[1]}\n </span>,\n );\n } else if (match[3]) {\n parts.push(\n <span key={key++} className=\"text-[#93C5FD]\">\n {match[3]}\n </span>,\n );\n } else if (match[4]) {\n parts.push(\n <span key={key++} className=\"text-[#93C5FD]\">\n {match[4]}\n </span>,\n );\n } else if (match[5]) {\n parts.push(\n <span key={key++} className=\"text-[#94A3B8]\">\n {match[5]}\n </span>,\n );\n }\n\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < rest.length) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {rest.slice(lastIndex)}\n </span>,\n );\n }\n\n return (\n <div key={i} className=\"leading-relaxed\">\n {parts.length > 0 ? parts : '\\u00A0'}\n </div>\n );\n });\n}\n\n/** Copyable code block with optional JSON syntax highlighting. */\nexport function CodeBlock({\n children,\n language = 'json',\n title,\n}: {\n children: string;\n language?: string;\n title?: string;\n}) {\n const [copied, setCopied] = useState(false);\n const code = children.trim();\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [code]);\n\n const isJson = language === 'json';\n\n return (\n <div className=\"relative group rounded-lg overflow-hidden border border-[#2A2A3E] my-4\">\n {title && (\n <div className=\"px-4 py-2 bg-[#12121E] border-b border-[#2A2A3E] flex items-center justify-between\">\n <span className=\"text-[11px] font-medium text-[#94A3B8] tracking-wider uppercase font-mono\">\n {title}\n </span>\n </div>\n )}\n <div className=\"relative\">\n <pre className=\"bg-[#0F0F1A] px-4 py-3.5 overflow-x-auto text-[13px] leading-relaxed font-mono\">\n <code>{isJson ? highlightJson(code) : <span className=\"text-[#CBD5E1]\">{code}</span>}</code>\n </pre>\n <button\n onClick={handleCopy}\n className=\"absolute top-2.5 right-2.5 p-1.5 rounded-md bg-[#1A1A2E] border border-[#2A2A3E] text-[#94A3B8] opacity-0 group-hover:opacity-100 hover:text-white hover:border-[#4A4A6E] transition-all duration-150\"\n aria-label=\"Copy code\"\n >\n {copied ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n ) : (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n/**\n * Converts the rendered documentation DOM content to Markdown and triggers a download.\n * Reads the live DOM so the MD file always matches the displayed content.\n */\nfunction domToMarkdown(container: HTMLElement): string {\n const lines: string[] = [];\n\n function processNode(node: Node) {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || '';\n if (text.trim()) lines.push(text);\n return;\n }\n\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n const el = node as HTMLElement;\n const tag = el.tagName.toLowerCase();\n\n // Skip navigation, buttons, SVGs\n if (tag === 'nav' || tag === 'button' || tag === 'svg' || tag === 'style') return;\n if (el.getAttribute('role') === 'navigation') return;\n if (el.classList.contains('lg:hidden')) return;\n\n switch (tag) {\n case 'h1':\n lines.push(`\\n# ${el.textContent?.trim()}\\n`);\n return;\n case 'h2':\n lines.push(`\\n## ${el.textContent?.trim()}\\n`);\n return;\n case 'h3':\n lines.push(`\\n### ${el.textContent?.trim()}\\n`);\n return;\n case 'h4':\n lines.push(`\\n#### ${el.textContent?.trim()}\\n`);\n return;\n case 'pre': {\n const code = el.querySelector('code');\n const lang = code?.className?.match(/language-(\\w+)/)?.[1] || '';\n const text = el.textContent?.trim() || '';\n lines.push(`\\n\\`\\`\\`${lang}\\n${text}\\n\\`\\`\\`\\n`);\n return;\n }\n case 'code': {\n if (el.parentElement?.tagName.toLowerCase() !== 'pre') {\n lines.push(`\\`${el.textContent?.trim()}\\``);\n return;\n }\n break;\n }\n case 'table': {\n const rows = el.querySelectorAll('tr');\n rows.forEach((row, i) => {\n const cells = row.querySelectorAll('th, td');\n const cellTexts = Array.from(cells).map(c => c.textContent?.trim() || '');\n lines.push(`| ${cellTexts.join(' | ')} |`);\n if (i === 0) {\n lines.push(`| ${cellTexts.map(() => '---').join(' | ')} |`);\n }\n });\n lines.push('');\n return;\n }\n case 'ul': {\n el.querySelectorAll(':scope > li').forEach(li => {\n lines.push(`- ${li.textContent?.trim()}`);\n });\n lines.push('');\n return;\n }\n case 'ol': {\n el.querySelectorAll(':scope > li').forEach((li, i) => {\n lines.push(`${i + 1}. ${li.textContent?.trim()}`);\n });\n lines.push('');\n return;\n }\n case 'blockquote': {\n const text = el.textContent?.trim() || '';\n text.split('\\n').forEach(line => lines.push(`> ${line.trim()}`));\n lines.push('');\n return;\n }\n case 'p': {\n const text = el.textContent?.trim();\n if (text) lines.push(`\\n${text}\\n`);\n return;\n }\n case 'hr':\n lines.push('\\n---\\n');\n return;\n case 'a': {\n const href = el.getAttribute('href') || '';\n const text = el.textContent?.trim() || '';\n if (href && text) {\n lines.push(`[${text}](${href})`);\n return;\n }\n break;\n }\n case 'strong':\n case 'b':\n lines.push(`**${el.textContent?.trim()}**`);\n return;\n case 'em':\n case 'i':\n lines.push(`*${el.textContent?.trim()}*`);\n return;\n }\n\n el.childNodes.forEach(processNode);\n }\n\n container.childNodes.forEach(processNode);\n\n return lines.join('\\n').replace(/\\n{4,}/g, '\\n\\n\\n').trim() + '\\n';\n}\n\nfunction downloadBlob(content: string, filename: string) {\n const blob = new Blob([content], { type: 'text/markdown' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\ninterface DownloadMarkdownProps {\n contentRef: React.RefObject<HTMLElement | null>;\n filename: string;\n}\n\nexport default function DownloadMarkdown({ contentRef, filename }: DownloadMarkdownProps) {\n const handleDownload = () => {\n if (!contentRef.current) return;\n const md = domToMarkdown(contentRef.current);\n downloadBlob(md, filename);\n };\n\n return (\n <button\n onClick={handleDownload}\n className=\"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium border border-void-border text-void-text-secondary rounded-lg hover:border-void-accent/30 hover:text-void-accent transition-colors\"\n title={`Download as ${filename}`}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\" />\n <path d=\"M14 2v6h6\" />\n <path d=\"M12 18v-6\" />\n <path d=\"M9 15l3 3 3-3\" />\n </svg>\n <span className=\"font-mono\">.md</span>\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { NavSection } from './DocPrimitives';\n\n/**\n * Link component type — allows consumers to inject their\n * framework's link component (e.g. Next.js Link).\n */\nexport type LinkComponent = (props: { href: string; className?: string; children: ReactNode }) => ReactNode;\n\n/** Fallback <a> tag when no framework Link is provided. */\nconst DefaultLink: LinkComponent = ({ href, className, children }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Sidebar({\n title,\n sections,\n activeId,\n onNavigate,\n mobileOpen,\n onMobileClose,\n footerLinks,\n LinkComponent: Link = DefaultLink,\n}: {\n title: string;\n sections: NavSection[];\n activeId: string;\n onNavigate: (id: string) => void;\n mobileOpen: boolean;\n onMobileClose: () => void;\n footerLinks?: { label: string; href: string }[];\n LinkComponent?: LinkComponent;\n}) {\n return (\n <>\n {mobileOpen && (\n <div className=\"fixed inset-0 bg-black/30 z-40 lg:hidden\" onClick={onMobileClose} />\n )}\n\n <nav\n className={`\n fixed lg:sticky top-0 left-0 z-50 lg:z-auto\n h-full lg:h-screen w-[260px] flex-shrink-0\n bg-white lg:bg-transparent border-r border-void-border\n overflow-y-auto overscroll-contain\n transition-transform duration-200\n ${mobileOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'}\n `}\n style={{ scrollbarWidth: 'thin' }}\n >\n <div className=\"px-5 pt-6 pb-4\">\n <div className=\"flex items-center justify-between mb-6\">\n <span\n className=\"text-[13px] font-semibold text-void-text-muted uppercase tracking-widest\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {title}\n </span>\n <button\n onClick={onMobileClose}\n className=\"lg:hidden p-1 rounded hover:bg-void-surface-2 text-void-text-muted\"\n aria-label=\"Close navigation\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n\n {sections.map((section) => (\n <div key={section.id} className=\"mb-4\">\n <button\n onClick={() => {\n onNavigate(section.children?.[0]?.id ?? section.id);\n onMobileClose();\n }}\n className={`\n block w-full text-left text-[13px] font-semibold mb-1.5 px-2 py-1 rounded transition-colors\n ${activeId === section.id || section.children?.some((c) => c.id === activeId)\n ? 'text-void-accent'\n : 'text-void-text-primary hover:text-void-accent'}\n `}\n >\n {section.label}\n </button>\n {section.children && (\n <div className=\"ml-2 border-l border-void-border pl-2.5 space-y-0.5\">\n {section.children.map((child) => (\n <button\n key={child.id}\n onClick={() => {\n onNavigate(child.id);\n onMobileClose();\n }}\n className={`\n block w-full text-left text-[12.5px] px-2 py-1 rounded transition-colors\n ${activeId === child.id\n ? 'text-void-accent bg-void-accent/5 font-medium'\n : 'text-void-text-muted hover:text-void-text-primary hover:bg-void-surface-2'}\n `}\n >\n {child.label}\n </button>\n ))}\n </div>\n )}\n </div>\n ))}\n\n {footerLinks && footerLinks.length > 0 && (\n <div className=\"mt-4 pt-4 border-t border-void-border\">\n {footerLinks.map((link) => (\n <Link key={link.href} href={link.href} className=\"block text-[12.5px] text-void-accent hover:underline px-2 py-1\">\n {link.label} →\n </Link>\n ))}\n </div>\n )}\n </div>\n </nav>\n </>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport interface Param {\n name: string;\n type: string;\n required?: boolean;\n description: string;\n default?: string;\n}\n\nexport interface NavSection {\n id: string;\n label: string;\n children?: { id: string; label: string }[];\n}\n\n// ---------------------------------------------------------------------------\n// Components\n// ---------------------------------------------------------------------------\n\nconst METHOD_COLORS: Record<HttpMethod, string> = {\n GET: 'bg-emerald-50 text-emerald-700 border-emerald-200',\n POST: 'bg-blue-50 text-blue-700 border-blue-200',\n PUT: 'bg-amber-50 text-amber-700 border-amber-200',\n PATCH: 'bg-purple-50 text-purple-700 border-purple-200',\n DELETE: 'bg-red-50 text-red-700 border-red-200',\n};\n\nexport function MethodBadge({ method }: { method: HttpMethod }) {\n return (\n <span\n className={`inline-flex items-center px-2 py-0.5 text-[11px] font-semibold tracking-wide border rounded-full font-mono ${METHOD_COLORS[method]}`}\n >\n {method}\n </span>\n );\n}\n\nexport function InlineCode({ children }: { children: ReactNode }) {\n return (\n <code className=\"px-1.5 py-0.5 text-[13px] font-mono bg-void-surface-2 border border-void-border rounded text-void-accent\">\n {children}\n </code>\n );\n}\n\nexport function SectionHeading({ id, children }: { id: string; children: ReactNode }) {\n return (\n <h2\n id={id}\n className=\"text-[22px] font-semibold text-void-text-primary mt-16 mb-6 pb-3 border-b border-void-border scroll-mt-6\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {children}\n </h2>\n );\n}\n\nexport function SubHeading({ id, children }: { id: string; children: ReactNode }) {\n return (\n <h3\n id={id}\n className=\"text-[17px] font-semibold text-void-text-primary mt-10 mb-4 scroll-mt-6\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {children}\n </h3>\n );\n}\n\nexport function Callout({ type = 'info', children }: { type?: 'info' | 'warning'; children: ReactNode }) {\n const styles = type === 'warning'\n ? 'bg-amber-50 border-amber-200 text-amber-800'\n : 'bg-void-accent/5 border-void-accent/20 text-void-text-secondary';\n return (\n <div className={`px-4 py-3 rounded-lg border text-[13.5px] leading-relaxed my-4 ${styles}`}>\n {children}\n </div>\n );\n}\n\nexport function P({ children }: { children: ReactNode }) {\n return <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">{children}</p>;\n}\n\nexport function ParamTable({\n params,\n title,\n}: {\n params: Param[];\n title?: string;\n}) {\n return (\n <div className=\"my-5\">\n {title && (\n <h4 className=\"text-[13px] font-semibold text-void-text-secondary uppercase tracking-wider mb-3\">\n {title}\n </h4>\n )}\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Parameter</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Type</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n {params.map((p, i) => (\n <tr key={p.name} className={i > 0 ? 'border-t border-void-border' : ''}>\n <td className=\"px-4 py-3 align-top\">\n <span className=\"font-mono text-[13px] text-void-text-primary font-medium\">{p.name}</span>\n {p.required && (\n <span className=\"ml-1.5 text-[10px] font-semibold text-red-500 uppercase\">required</span>\n )}\n </td>\n <td className=\"px-4 py-3 align-top\">\n <span className=\"font-mono text-[12px] text-void-text-muted\">{p.type}</span>\n </td>\n <td className=\"px-4 py-3 align-top text-void-text-secondary text-[13px] leading-relaxed\">\n {p.description}\n {p.default && (\n <span className=\"ml-1 text-void-text-muted\">\n Default: <InlineCode>{p.default}</InlineCode>\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function EndpointBlock({\n method,\n path,\n summary,\n description,\n children,\n}: {\n method: HttpMethod;\n path: string;\n summary: string;\n description?: string;\n children?: ReactNode;\n}) {\n return (\n <div className=\"mb-10\">\n <div className=\"flex items-center gap-3 mb-2\">\n <MethodBadge method={method} />\n <code className=\"text-[15px] font-mono font-medium text-void-text-primary\">{path}</code>\n </div>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-1\">{summary}</p>\n {description && (\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-3\">{description}</p>\n )}\n {children}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Platform-specific helpers\n// ---------------------------------------------------------------------------\n\nexport function UiExcerpt({ title, caption, children }: { title: string; caption?: string; children: ReactNode }) {\n return (\n <div className=\"my-6\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-2\" style={{ fontFamily: 'Space Grotesk, sans-serif' }}>\n {title}\n </div>\n <div className=\"border border-void-border rounded-lg overflow-hidden bg-white\">\n <div className=\"p-4 sm:p-5 overflow-x-auto\">\n {children}\n </div>\n </div>\n {caption && <p className=\"text-[12px] text-void-text-muted mt-1.5 italic\">{caption}</p>}\n </div>\n );\n}\n\nexport function TierBadge({ tier }: { tier: 1 | 2 | 3 }) {\n const s = tier === 1 ? 'bg-emerald-50 text-emerald-700 border-emerald-200' : tier === 2 ? 'bg-amber-50 text-amber-700 border-amber-200' : 'bg-gray-50 text-gray-500 border-gray-200';\n const l = tier === 1 ? 'Tier 1' : tier === 2 ? 'Tier 2' : 'Tier 3';\n return <span className={`inline-flex px-1.5 py-0.5 text-[10px] font-semibold border rounded ${s}`}>{l}</span>;\n}\n\nexport function CellDot({ color, label }: { color: string; label: string }) {\n return (\n <span className=\"inline-flex items-center gap-1.5 mr-3 mb-1\">\n <span className={`w-2 h-2 rounded-full ${color}`} />\n <span className=\"text-[11px] text-void-text-muted\">{label}</span>\n </span>\n );\n}\n\nexport function MockNavItem({ label, active, indent }: { label: string; active?: boolean; indent?: boolean }) {\n return (\n <div className={`flex items-center gap-2 px-2 py-1.5 rounded text-[13px] ${indent ? 'ml-4 text-[12px]' : ''} ${active ? 'text-void-accent bg-void-accent/5 font-medium border-l-2 border-void-accent' : 'text-void-text-secondary'}`}>\n <span className=\"w-4 h-4 rounded bg-void-surface-2 flex-shrink-0\" />\n {label}\n </div>\n );\n}\n\nexport function PipelineStage({ label, state }: { label: string; state: 'done' | 'active' | 'pending' }) {\n return (\n <div className=\"flex flex-col items-center gap-1\">\n <div className={`w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold ${\n state === 'done' ? 'bg-void-accent text-white' :\n state === 'active' ? 'border-2 border-void-accent text-void-accent' :\n 'border-[1.5px] border-void-border text-void-text-muted'\n }`}>\n {state === 'done' ? (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M2 6L5 9L10 3\" /></svg>\n ) : null}\n </div>\n <span className={`text-[10px] whitespace-nowrap ${state === 'active' ? 'text-void-accent font-medium' : 'text-void-text-muted'}`}>{label}</span>\n </div>\n );\n}\n\nexport function PipelineConnector({ done }: { done?: boolean }) {\n return <div className={`w-8 h-px mt-[-14px] ${done ? 'bg-void-accent' : 'bg-void-border'}`} />;\n}\n","'use client';\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { CodeBlock } from '../components/CodeBlock';\nimport DownloadMarkdown from '../components/DownloadMarkdown';\nimport { Sidebar } from '../components/Sidebar';\nimport type { LinkComponent } from '../components/Sidebar';\nimport {\n SectionHeading,\n SubHeading,\n InlineCode,\n Callout,\n ParamTable,\n EndpointBlock,\n MethodBadge,\n} from '../components/DocPrimitives';\nimport type { NavSection, HttpMethod, Param } from '../components/DocPrimitives';\n\n/* ═══════════════════════════════════════════════════════════════════════════\n TALONIC API DOCUMENTATION\n A single-file, self-contained API reference page.\n ═══════════════════════════════════════════════════════════════════════════ */\n\n// ---------------------------------------------------------------------------\n// Navigation structure\n// ---------------------------------------------------------------------------\n\nconst NAV_SECTIONS: NavSection[] = [\n {\n id: 'overview',\n label: 'Overview',\n children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'authentication', label: 'Authentication' },\n { id: 'base-url', label: 'Base URL' },\n { id: 'quick-start', label: 'Quick Start' },\n ],\n },\n {\n id: 'extract',\n label: 'Extract',\n children: [\n { id: 'post-extract', label: 'POST /v1/extract' },\n { id: 'extract-schemas', label: 'Schema Formats' },\n { id: 'schema-reference', label: 'Full Schema Reference' },\n { id: 'extract-options', label: 'Options' },\n { id: 'extract-responses', label: 'Responses' },\n ],\n },\n {\n id: 'documents',\n label: 'Documents',\n children: [\n { id: 'list-documents', label: 'List Documents' },\n { id: 'get-document', label: 'Get Document' },\n { id: 're-extract-document', label: 'Re-extract' },\n { id: 'get-document-markdown', label: 'Get Markdown' },\n { id: 'delete-document', label: 'Delete Document' },\n ],\n },\n {\n id: 'extractions',\n label: 'Extractions',\n children: [\n { id: 'list-extractions', label: 'List Extractions' },\n { id: 'get-extraction', label: 'Get Extraction' },\n { id: 'get-extraction-data', label: 'Get Extraction Data' },\n { id: 'patch-extraction-data', label: 'Correct Fields' },\n ],\n },\n {\n id: 'schemas',\n label: 'Schemas',\n children: [\n { id: 'list-schemas', label: 'List Schemas' },\n { id: 'create-schema', label: 'Create Schema' },\n { id: 'get-schema', label: 'Get Schema' },\n { id: 'update-schema', label: 'Update Schema' },\n { id: 'delete-schema', label: 'Delete Schema' },\n ],\n },\n {\n id: 'jobs',\n label: 'Jobs',\n children: [\n { id: 'create-job', label: 'Create Job' },\n { id: 'list-jobs', label: 'List Jobs' },\n { id: 'get-job', label: 'Get Job' },\n { id: 'get-job-results', label: 'Get Results' },\n { id: 'cancel-job', label: 'Cancel Job' },\n ],\n },\n {\n id: 'sources',\n label: 'Sources',\n children: [\n { id: 'list-sources', label: 'List Inputs' },\n { id: 'create-source', label: 'Create Input' },\n { id: 'manage-source', label: 'Get / Update / Delete' },\n { id: 'source-documents', label: 'Source Documents' },\n ],\n },\n {\n id: 'filter-search',\n label: 'Filter & Search',\n children: [\n { id: 'field-autocomplete', label: 'Field Autocomplete' },\n { id: 'field-values', label: 'Field Values' },\n { id: 'filter-documents', label: 'Filter Documents' },\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'list-saved-filters', label: 'List Saved Filters' },\n { id: 'create-saved-filter', label: 'Create Saved Filter' },\n { id: 'delete-saved-filter', label: 'Delete Saved Filter' },\n { id: 'materialize', label: 'Materialize' },\n ],\n },\n {\n id: 'document-types',\n label: 'Document Types',\n children: [\n { id: 'list-document-types', label: 'List Types' },\n { id: 'get-ontology', label: 'Document Ontology' },\n ],\n },\n {\n id: 'cases',\n label: 'Cases',\n children: [\n { id: 'list-cases', label: 'List Cases' },\n { id: 'get-case', label: 'Get Case' },\n { id: 'update-case-status', label: 'Update Status' },\n { id: 'case-edges', label: 'Edges' },\n { id: 'confirm-case-edge', label: 'Confirm Edge' },\n { id: 'reject-case-edge', label: 'Reject Edge' },\n { id: 'split-case', label: 'Split Case' },\n { id: 'merge-cases', label: 'Merge Cases' },\n { id: 'case-completeness', label: 'Completeness' },\n { id: 'pin-case-document', label: 'Pin Documents' },\n { id: 'unpin-case-document', label: 'Remove Documents' },\n ],\n },\n {\n id: 'fields',\n label: 'Fields',\n children: [\n { id: 'list-fields', label: 'List Fields' },\n { id: 'get-field', label: 'Get Field' },\n { id: 'similar-fields', label: 'Similar Fields' },\n { id: 'field-harmonization', label: 'Harmonization' },\n ],\n },\n {\n id: 'routing',\n label: 'Routing Rules',\n children: [\n { id: 'list-routing-rules', label: 'List Rules' },\n { id: 'create-routing-rule', label: 'Create Rule' },\n { id: 'manage-routing-rule', label: 'Get / Update / Delete' },\n ],\n },\n {\n id: 'delivery',\n label: 'Delivery',\n children: [\n { id: 'delivery-overview', label: 'Overview' },\n { id: 'list-destinations', label: 'List Destinations' },\n { id: 'create-destination', label: 'Create Destination' },\n { id: 'manage-destination', label: 'Get / Update / Delete' },\n { id: 'test-destination', label: 'Test Destination' },\n { id: 'list-bindings', label: 'List Bindings' },\n { id: 'create-binding', label: 'Create Binding' },\n { id: 'manage-binding', label: 'Get / Update / Delete' },\n { id: 'delivery-items', label: 'Items (History)' },\n { id: 'delivery-dlq', label: 'Dead-Letter Queue' },\n { id: 'delivery-events', label: 'Outbox Events' },\n { id: 'delivery-catalog', label: 'Catalog' },\n ],\n },\n {\n id: 'review',\n label: 'Review',\n children: [\n { id: 'list-review', label: 'List Queue' },\n { id: 'review-action', label: 'Take Action' },\n { id: 'review-batch', label: 'Batch Action' },\n { id: 'review-stats', label: 'Stats' },\n { id: 'review-assign', label: 'Assign' },\n ],\n },\n {\n id: 'quality',\n label: 'Quality',\n children: [\n { id: 'list-quality-ground-truth', label: 'Ground Truth' },\n { id: 'list-benchmarks', label: 'Benchmarks' },\n { id: 'add-ground-truth-entry', label: 'Add Ground-Truth Entry' },\n { id: 'delete-ground-truth-entry', label: 'Delete Ground-Truth Entry' },\n { id: 'benchmark-results', label: 'Benchmark Results' },\n ],\n },\n {\n id: 'matching',\n label: 'Matching',\n children: [\n { id: 'list-matching-configs', label: 'List Configs' },\n { id: 'create-matching-config', label: 'Create Config' },\n { id: 'update-matching-config', label: 'Update Config' },\n { id: 'delete-matching-config', label: 'Delete Config' },\n { id: 'run-matching', label: 'Run Matching' },\n { id: 'list-matching-runs', label: 'List Runs' },\n { id: 'cancel-matching-run', label: 'Cancel Run' },\n { id: 'smart-run', label: 'Smart Run' },\n { id: 'ai-resolve', label: 'AI Resolve' },\n { id: 'generate-strategy', label: 'Create Strategy' },\n { id: 'get-strategy', label: 'Get Strategy' },\n { id: 'update-strategy', label: 'Update Strategy' },\n { id: 'match-results', label: 'Run Results' },\n { id: 'match-progress', label: 'Run Progress' },\n { id: 'review-match', label: 'Submit Review' },\n ],\n },\n {\n id: 'batches',\n label: 'Batches',\n children: [\n { id: 'list-batches', label: 'List Batches' },\n { id: 'get-batch', label: 'Get Batch' },\n { id: 'batch-sync', label: 'Sync Status' },\n { id: 'batch-cancel', label: 'Cancel Batch' },\n ],\n },\n {\n id: 'usage',\n label: 'Usage',\n children: [\n { id: 'get-usage', label: 'Get Usage' },\n { id: 'document-usage', label: 'Document Usage' },\n ],\n },\n {\n id: 'dialects',\n label: 'Dialects',\n children: [\n { id: 'list-dialects', label: 'List Dialects' },\n { id: 'create-dialect', label: 'Create Dialect' },\n { id: 'get-dialect', label: 'Get Dialect' },\n { id: 'update-dialect', label: 'Update Dialect' },\n { id: 'delete-dialect', label: 'Delete Dialect' },\n ],\n },\n {\n id: 'reference-data',\n label: 'Reference Data',\n children: [\n { id: 'list-reference-data', label: 'List Reference Data' },\n { id: 'get-reference-data', label: 'Get Reference Data' },\n { id: 'get-reference-rows', label: 'Get Rows' },\n { id: 'delete-reference-data', label: 'Delete Reference Data' },\n ],\n },\n {\n id: 'webhooks',\n label: 'Webhooks',\n children: [\n { id: 'webhook-management', label: 'Management' },\n { id: 'webhook-events', label: 'Events' },\n { id: 'webhook-delivery', label: 'Delivery Format' },\n { id: 'webhook-verification', label: 'Signature Verification' },\n { id: 'webhook-retries', label: 'Retry Policy' },\n ],\n },\n {\n id: 'resolutions',\n label: 'Resolutions',\n children: [\n { id: 'list-resolutions', label: 'List Resolutions' },\n { id: 'create-resolution', label: 'Create Resolution' },\n { id: 'get-resolution', label: 'Get Resolution' },\n { id: 'get-resolution-results', label: 'Get Results' },\n { id: 'execute-resolution', label: 'Execute Resolution' },\n { id: 'delete-resolution', label: 'Delete Resolution' },\n ],\n },\n {\n id: 'linking',\n label: 'Linking',\n children: [\n { id: 'list-link-keys', label: 'Link Keys' },\n { id: 'get-document-links', label: 'Document Links' },\n { id: 'get-linking-graph', label: 'Full Graph' },\n { id: 'get-document-graph', label: 'Document Graph' },\n { id: 'classify-link-keys', label: 'Classify' },\n { id: 'backfill-linking', label: 'Backfill' },\n { id: 'backfill-progress', label: 'Backfill Progress' },\n { id: 'document-case-map', label: 'Document-Case Map' },\n ],\n },\n {\n id: 'nshot',\n label: 'N-Shot',\n children: [\n { id: 'nshot-summary', label: 'Summary' },\n { id: 'nshot-comparisons', label: 'Comparisons' },\n { id: 'nshot-comparison', label: 'Single Comparison' },\n { id: 'nshot-override', label: 'Override' },\n { id: 'nshot-judge-decision', label: 'Judge Decision' },\n ],\n },\n {\n id: 'schema-graph',\n label: 'Schema Graph',\n children: [\n { id: 'list-schema-graph-classes', label: 'List Classes' },\n { id: 'get-schema-graph-class', label: 'Get Class' },\n { id: 'list-class-versions', label: 'List Versions' },\n { id: 'get-class-version', label: 'Get Version' },\n { id: 'list-schema-graph-diffs', label: 'List Diffs' },\n { id: 'approve-diff', label: 'Approve Diff' },\n { id: 'reject-diff', label: 'Reject Diff' },\n { id: 'list-schema-graph-edges', label: 'Edges' },\n { id: 'list-schema-graph-aliases', label: 'Aliases' },\n { id: 'visualize-schema-graph', label: 'Visualize' },\n ],\n },\n {\n id: 'structuring',\n label: 'Structuring',\n children: [\n { id: 'list-structuring-checks', label: 'List Checks' },\n { id: 'create-structuring-check', label: 'Create Check' },\n { id: 'get-structuring-check', label: 'Get / Update / Delete Check' },\n { id: 'list-structuring-gates', label: 'List Gates' },\n { id: 'create-structuring-gate', label: 'Create Gate' },\n { id: 'get-structuring-gate', label: 'Get / Update / Delete Gate' },\n { id: 'gate-rules', label: 'Gate Rules' },\n { id: 'result-checks', label: 'Result Checks' },\n { id: 'pending-approvals', label: 'Pending Approvals' },\n { id: 'approve-reject-result', label: 'Approve / Reject Result' },\n { id: 'trigger-delivery', label: 'Trigger Delivery' },\n ],\n },\n {\n id: 'telemetry',\n label: 'Telemetry',\n children: [\n { id: 'schema-telemetry-summary', label: 'Schema Summary' },\n { id: 'schema-telemetry-trend', label: 'Schema Trend' },\n { id: 'schema-telemetry-fields', label: 'Schema Fields' },\n { id: 'run-telemetry-summary', label: 'Run Summary' },\n ],\n },\n {\n id: 'validation',\n label: 'Validation',\n children: [\n { id: 'list-ground-truth', label: 'List Ground-Truth Datasets' },\n { id: 'get-ground-truth', label: 'Get / Delete Ground-Truth Dataset' },\n { id: 'list-validation-runs', label: 'List Validation Runs' },\n { id: 'create-validation-run', label: 'Create Validation Run' },\n { id: 'get-validation-run', label: 'Get / Delete Validation Run' },\n { id: 'get-validation-results', label: 'Validation Results' },\n ],\n },\n {\n id: 'credits',\n label: 'Credits',\n children: [\n { id: 'credits-balance', label: 'Balance' },\n { id: 'credits-history', label: 'History' },\n { id: 'credits-usage', label: 'Usage Summary' },\n { id: 'credits-usage-daily', label: 'Daily Usage' },\n { id: 'credits-usage-log', label: 'Usage Log' },\n ],\n },\n {\n id: 'billing',\n label: 'Billing',\n children: [\n { id: 'billing-settings', label: 'Settings' },\n ],\n },\n {\n id: 'agent',\n label: 'Agent',\n children: [\n { id: 'agent-context', label: 'Get Workspace Context' },\n { id: 'agent-tools', label: 'List Agent Tools' },\n ],\n },\n {\n id: 'errors-rate-limits',\n label: 'Errors & Rate Limits',\n children: [\n { id: 'error-format', label: 'Error Format' },\n { id: 'error-codes', label: 'Error Codes' },\n { id: 'rate-limits', label: 'Rate Limits' },\n ],\n },\n];\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\n/** Comprehensive API reference documentation for the Talonic platform. */\nexport function ApiReference({ LinkComponent }: { LinkComponent?: LinkComponent }) {\n const LinkComp = LinkComponent || ((props: any) => <a {...props} />);\n\n const [activeId, setActiveId] = useState('introduction');\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const mainRef = useRef<HTMLDivElement>(null);\n\n // Intersection Observer to track active section\n useEffect(() => {\n const allIds = NAV_SECTIONS.flatMap((s) =>\n s.children ? s.children.map((c) => c.id) : [s.id],\n );\n\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries\n .filter((e) => e.isIntersecting)\n .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n\n if (visible.length > 0) {\n setActiveId(visible[0].target.id);\n }\n },\n { rootMargin: '-80px 0px -60% 0px', threshold: 0 },\n );\n\n allIds.forEach((id) => {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n });\n\n return () => observer.disconnect();\n }, []);\n\n const handleNavigate = useCallback((id: string) => {\n const el = document.getElementById(id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, []);\n\n return (\n <div className=\"flex min-h-full\">\n <Sidebar\n title=\"API Documentation\"\n sections={NAV_SECTIONS}\n activeId={activeId}\n onNavigate={handleNavigate}\n mobileOpen={mobileNavOpen}\n onMobileClose={() => setMobileNavOpen(false)}\n footerLinks={[{ label: 'Platform Guide', href: '/docs/platform' }]}\n LinkComponent={LinkComp}\n />\n\n {/* Mobile toggle */}\n <button\n onClick={() => setMobileNavOpen(true)}\n className=\"fixed bottom-5 right-5 z-30 lg:hidden p-3 rounded-full bg-void-accent text-white shadow-lg hover:shadow-xl transition-shadow\"\n aria-label=\"Open docs navigation\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n\n {/* Main content */}\n <div ref={mainRef} className=\"flex-1 min-w-0 px-6 sm:px-10 lg:px-16 py-6 max-w-[860px]\">\n\n {/* ─── INTRODUCTION ─────────────────────────────────────────── */}\n <div id=\"introduction\" className=\"scroll-mt-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <h1\n className=\"text-[32px] font-bold text-void-text-primary leading-tight mb-3\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n Talonic API\n </h1>\n <DownloadMarkdown contentRef={mainRef} filename=\"talonic-api-reference.md\" />\n </div>\n <p className=\"text-[17px] text-void-text-secondary leading-relaxed max-w-[600px]\">\n Extract any document into schema-validated data with a single API call.\n </p>\n\n <div className=\"mt-8 flex flex-col sm:flex-row gap-4\">\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Base URL</div>\n <code className=\"text-[15px] font-mono text-void-text-primary font-medium\">https://api.talonic.com</code>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Protocol</div>\n <span className=\"text-[15px] text-void-text-primary\">HTTPS + JSON</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Auth</div>\n <code className=\"text-[14px] font-mono text-void-text-primary\">Bearer tlnc_...</code>\n </div>\n </div>\n </div>\n\n {/* ─── AUTHENTICATION ───────────────────────────────────────── */}\n <SectionHeading id=\"authentication\">Authentication</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All API requests require a Bearer token in the <InlineCode>Authorization</InlineCode> header.\n API keys are scoped to a source and carry the <InlineCode>tlnc_</InlineCode> prefix. You can\n create and manage keys from{' '}\n <span className=\"text-void-accent font-medium\">Settings → API Keys</span> in the dashboard.\n </p>\n\n <CodeBlock language=\"bash\" title=\"Authorization header\">\n{`curl https://api.talonic.com/v1/documents \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\"`}\n </CodeBlock>\n\n <Callout>\n Keep your API key secret. Do not expose it in client-side code or version control.\n If a key is compromised, revoke it immediately from the dashboard.\n </Callout>\n\n {/* ─── BASE URL ─────────────────────────────────────────────── */}\n <SubHeading id=\"base-url\">Base URL</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All endpoints are relative to the base URL below. All requests must use HTTPS.\n </p>\n\n <CodeBlock language=\"bash\">\n{`https://api.talonic.com/v1`}\n </CodeBlock>\n\n {/* ─── QUICK START ──────────────────────────────────────────── */}\n <SectionHeading id=\"quick-start\">Quick Start</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Extract structured data from a document in three steps.\n </p>\n\n {/* Step 1 */}\n <div className=\"flex gap-4 mb-6\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">1</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Extract a document with an inline schema</h4>\n <CodeBlock language=\"bash\" title=\"Step 1 — Extract\">\n{`curl -X POST https://api.talonic.com/v1/extract \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\" \\\\\n -F \"file=@invoice.pdf\" \\\\\n -F 'schema={\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"line_items\": [{\n \"description\": \"string\",\n \"quantity\": \"number\",\n \"unit_price\": \"number\"\n }]\n }'`}\n </CodeBlock>\n </div>\n </div>\n\n {/* Step 2 */}\n <div className=\"flex gap-4 mb-6\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">2</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Save the schema for reuse</h4>\n <CodeBlock language=\"bash\" title=\"Step 2 — Save schema\">\n{`curl -X POST https://api.talonic.com/v1/schemas \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\n \"name\": \"Invoice\",\n \"definition\": {\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"line_items\": [{\n \"description\": \"string\",\n \"quantity\": \"number\",\n \"unit_price\": \"number\"\n }]\n }\n }'`}\n </CodeBlock>\n </div>\n </div>\n\n {/* Step 3 */}\n <div className=\"flex gap-4 mb-8\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">3</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Query your extraction results</h4>\n <CodeBlock language=\"bash\" title=\"Step 3 — Retrieve\">\n{`curl https://api.talonic.com/v1/extractions?schema_id=sch_abc123 \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\"`}\n </CodeBlock>\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACT (HERO SECTION)\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extract\">Extract</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The core of the Talonic API. Send a document and a schema, receive structured,\n validated data back. Supports PDFs, images, Word documents, spreadsheets, and plain text.\n </p>\n\n <div id=\"post-extract\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/extract\"\n summary=\"Extract structured data from a document.\"\n description=\"Accepts the document as a file upload or URL, along with a schema definition. Returns structured data matching your schema with per-field confidence scores.\"\n >\n <ParamTable\n title=\"Form data parameters\"\n params={[\n { name: 'file', type: 'binary', description: 'The document file. Supports PDF, DOCX, PNG, JPG, XLSX, CSV, TXT, MD.' },\n { name: 'file_url', type: 'string', description: 'URL to fetch the document from. Use this instead of file for remote documents.' },\n { name: 'document_id', type: 'string', description: 'Re-extract an existing document by ID instead of uploading a new file.' },\n { name: 'schema', type: 'object | string', required: true, description: 'The target schema definition. Accepts JSON Schema, simplified fields, or a flat key-type map. See Schema Formats below.' },\n { name: 'schema_id', type: 'string', description: 'Use a previously saved schema by ID. Mutually exclusive with schema.' },\n { name: 'instructions', type: 'string', description: 'Natural language instructions to guide extraction. E.g. \"Focus on the billing section. Amounts are in EUR.\"' },\n { name: 'options', type: 'object', description: 'Additional extraction options. See Options below.' },\n { name: 'include_markdown', type: 'string', description: 'Set to \"true\" to include the OCR-converted markdown of the document in the response. Useful for PDF-to-markdown conversion.' },\n { name: 'include_provenance', type: 'string', description: 'Set to \"true\" to include per-field provenance in the response. Each field gets source_text (the text the value was extracted from), section (document section), and page (page number).' },\n ]}\n />\n\n <Callout>\n You must provide exactly one of <InlineCode>file</InlineCode>, <InlineCode>file_url</InlineCode>,\n or <InlineCode>document_id</InlineCode>. Schema is optional — when omitted, auto-discovery extracts all fields. Add <InlineCode>include_markdown=true</InlineCode> to also get the raw markdown output.\n </Callout>\n </EndpointBlock>\n </div>\n\n {/* Schema Formats */}\n <SubHeading id=\"extract-schemas\">Schema Formats</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n The <InlineCode>schema</InlineCode> parameter accepts three formats. Use whichever is most natural for your use case. (Note: the API parameter is still called <InlineCode>schema</InlineCode>.)\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">1. JSON Schema (full control)</h4>\n <CodeBlock title=\"JSON Schema format\">\n{`{\n \"type\": \"object\",\n \"properties\": {\n \"vendor_name\": {\n \"type\": \"string\",\n \"description\": \"Legal name of the vendor\"\n },\n \"total_amount\": {\n \"type\": \"number\",\n \"description\": \"Invoice total including tax\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"description\": { \"type\": \"string\" },\n \"quantity\": { \"type\": \"integer\" },\n \"unit_price\": { \"type\": \"number\" }\n }\n }\n }\n },\n \"required\": [\"vendor_name\", \"total_amount\"]\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">2. Simplified fields (recommended)</h4>\n <CodeBlock title=\"Simplified fields\">\n{`{\n \"fields\": [\n { \"name\": \"vendor_name\", \"type\": \"string\", \"description\": \"Legal name of the vendor\" },\n { \"name\": \"total_amount\", \"type\": \"number\", \"required\": true },\n { \"name\": \"due_date\", \"type\": \"date\" },\n {\n \"name\": \"line_items\",\n \"type\": \"array\",\n \"children\": [\n { \"name\": \"description\", \"type\": \"string\" },\n { \"name\": \"quantity\", \"type\": \"number\" },\n { \"name\": \"unit_price\", \"type\": \"number\" }\n ]\n }\n ]\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">3. Flat key-type map (quick prototyping)</h4>\n <CodeBlock title=\"Flat map\">\n{`{\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"is_paid\": \"boolean\"\n}`}\n </CodeBlock>\n\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mt-3\">\n Supported types: <InlineCode>string</InlineCode>, <InlineCode>number</InlineCode>,{' '}\n <InlineCode>integer</InlineCode>, <InlineCode>boolean</InlineCode>,{' '}\n <InlineCode>date</InlineCode>, <InlineCode>array</InlineCode>,{' '}\n <InlineCode>object</InlineCode>, <InlineCode>enum</InlineCode>.\n </p>\n\n {/* Full Schema Reference */}\n <SubHeading id=\"schema-reference\">Full Schema Reference</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Beyond basic field types, Talonic schemas support advanced features: format constraints, value modifiers,\n bypass strategies, reference lookups, cross-field validation, and delivery configuration. Use the{' '}\n <InlineCode>x-talonic</InlineCode> extension on individual fields and{' '}\n <InlineCode>x-talonic-schema</InlineCode> at the root level.\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Supported data types</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-4\">\n <InlineCode>string</InlineCode>, <InlineCode>number</InlineCode>,{' '}\n <InlineCode>integer</InlineCode>, <InlineCode>boolean</InlineCode>,{' '}\n <InlineCode>date</InlineCode>, <InlineCode>array</InlineCode>,{' '}\n <InlineCode>object</InlineCode>, <InlineCode>enum</InlineCode>\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Format constraints</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Validate extracted values with regex patterns. When a value fails validation, the <InlineCode>on_format_mismatch</InlineCode> action determines the fallback.\n </p>\n <CodeBlock title=\"Format constraint\">\n{`\"invoice_number\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"format\": { \"type\": \"regex\", \"pattern\": \"^INV-\\\\\\\\d{4,}$\" },\n \"on_format_mismatch\": { \"action\": \"flag\" }\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Actions: <InlineCode>empty</InlineCode> (clear value), <InlineCode>flag</InlineCode> (keep + flag), <InlineCode>constant</InlineCode> (replace with fixed value).\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Modifiers (post-processing transforms)</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Applied in order after extraction. Three types: <strong>format</strong> (date/number formatting), <strong>alias</strong> (value mapping), <strong>max_length</strong> (truncation).\n </p>\n <CodeBlock title=\"Modifiers\">\n{`\"invoice_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"x-talonic\": {\n \"modifiers\": [\n { \"type\": \"format\", \"config\": { \"pattern\": \"YYYY-MM-DD\" } }\n ]\n }\n},\n\"status\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"modifiers\": [\n { \"type\": \"alias\", \"config\": {\n \"mappings\": { \"paid\": \"SETTLED\", \"open\": \"PENDING\", \"overdue\": \"PAST_DUE\" }\n }},\n { \"type\": \"max_length\", \"config\": { \"limit\": 20, \"on_overflow\": \"truncate\" } }\n ]\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Constraints (validation rules)</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Evaluated after modifiers. Failures flag the value but don't erase it.\n </p>\n <CodeBlock title=\"Constraints\">\n{`\"currency\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"constraints\": [\n { \"type\": \"enum\", \"config\": { \"values\": [\"EUR\", \"USD\", \"GBP\", \"CHF\"] } },\n { \"type\": \"length\", \"config\": { \"min\": 3, \"max\": 3 } }\n ]\n }\n},\n\"due_date\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"constraints\": [\n { \"type\": \"cross-field\", \"config\": {\n \"expression\": \"due_date >= invoice_date\",\n \"fields\": [\"due_date\", \"invoice_date\"]\n }}\n ]\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Types: <InlineCode>required</InlineCode>, <InlineCode>enum</InlineCode>, <InlineCode>date-format</InlineCode>, <InlineCode>length</InlineCode>, <InlineCode>cross-field</InlineCode>.\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Bypass strategies</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Fields that don't need LLM extraction. Set a fixed value, generate an ID, or look up from reference data.\n </p>\n <CodeBlock title=\"Bypass strategies\">\n{`\"document_category\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"constant\",\n \"constant_value\": \"financial/invoice\"\n }\n},\n\"processing_id\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"generator\",\n \"generator_type\": \"deterministic-id\",\n \"generator_config\": { \"prefix\": \"EXT\", \"pad\": 6 }\n }\n},\n\"country_code\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"reference\",\n \"reference_name\": \"country_codes\",\n \"key_expression\": \"{field.vendor_country}\",\n \"reference_table\": [\n { \"key\": \"DE\", \"value\": \"Germany\" },\n { \"key\": \"US\", \"value\": \"United States\" }\n ]\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Strategies: <InlineCode>constant</InlineCode>, <InlineCode>generator</InlineCode> (deterministic-id, context-fallback), <InlineCode>reference</InlineCode> (single or multi-hop via <InlineCode>resolution_chain</InlineCode>).\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Extraction instructions</h4>\n <CodeBlock title=\"Manual instruction\">\n{`\"tax_amount\": {\n \"type\": \"number\",\n \"x-talonic\": {\n \"manual_instruction\": \"Calculate as subtotal * tax_rate / 100. If stated explicitly, use the stated value.\",\n \"uses_manual_instruction\": true,\n \"capture_submoves\": [\"compute\", \"reason\"]\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Schema-level configuration</h4>\n <CodeBlock title=\"x-talonic-schema (root level)\">\n{`{\n \"type\": \"object\",\n \"properties\": { \"...\" : {} },\n \"x-talonic-schema\": {\n \"extraction_type\": \"pipeline\",\n \"extraction_model\": \"claude-sonnet\",\n \"validation_mode\": \"sample\",\n \"validation_sample_rate\": 10,\n \"approval_action\": \"stage\",\n \"delivery_config\": {\n \"dialect\": {\n \"inline\": {\n \"date_format\": \"YYYY-MM-DD\",\n \"number_locale\": \"en-US\",\n \"null_representation\": \"\",\n \"boolean_format\": [\"Yes\", \"No\"],\n \"delimiter\": \",\",\n \"encoding\": \"UTF-8\"\n }\n },\n \"output_files\": [\n { \"name\": \"invoices.csv\", \"fields\": [\"invoice_number\", \"vendor_name\", \"total_amount\"] },\n { \"name\": \"line_items.csv\", \"fields\": [\"invoice_number\", \"line_items\"] }\n ],\n \"cross_file_constraints\": [\n { \"type\": \"uniqueness\", \"config\": { \"fields\": [\"invoice_number\"] } }\n ],\n \"escalation_threshold\": 0.9\n }\n }\n}`}\n </CodeBlock>\n\n <Callout>\n The full reference schema template (invoice example with all features) is available as a downloadable JSON file\n in the <LinkComp href=\"https://github.com/talonicdev/platform/blob/main/packages/docs/src/schema-template.json\">repository</LinkComp>.\n </Callout>\n\n {/* Options */}\n <SubHeading id=\"extract-options\">Options</SubHeading>\n\n <ParamTable\n params={[\n { name: 'format', type: 'string', description: 'Output format for the extracted data.', default: '\"json\"' },\n { name: 'strict', type: 'boolean', description: 'When true, fields not in the schema are omitted from the response. When false, additional discovered fields may be included.', default: 'true' },\n { name: 'async', type: 'boolean', description: 'When true, returns a 202 with a job ID instead of blocking. Poll the job endpoint for results.', default: 'false' },\n { name: 'webhook_url', type: 'string', description: 'URL to POST results to when extraction completes. Implies async behavior.' },\n { name: 'include_raw_text', type: 'boolean', description: 'Include the raw extracted text alongside structured data.', default: 'false' },\n { name: 'page_range', type: 'string', description: 'Pages to extract from. E.g. \"1-5\", \"1,3,7-10\". PDF only.' },\n { name: 'language_hint', type: 'string', description: 'ISO 639-1 language code hint. Improves extraction for non-English documents.' },\n ]}\n />\n\n {/* Responses */}\n <SubHeading id=\"extract-responses\">Responses</SubHeading>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-4 mb-2\">Synchronous (200 OK)</h4>\n <p className=\"text-[14px] text-void-text-muted mb-3\">\n Returned when <InlineCode>async</InlineCode> is false (default). The response blocks until extraction is complete.\n </p>\n\n <CodeBlock title=\"200 — Synchronous response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"data\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_number\": \"INV-2024-0847\",\n \"total_amount\": 14250.00,\n \"due_date\": \"2024-03-15\",\n \"line_items\": [\n {\n \"description\": \"Enterprise license (annual)\",\n \"quantity\": 1,\n \"unit_price\": 12000.00\n },\n {\n \"description\": \"Implementation services\",\n \"quantity\": 15,\n \"unit_price\": 150.00\n }\n ]\n },\n \"confidence\": {\n \"overall\": 0.94,\n \"fields\": {\n \"vendor_name\": 0.99,\n \"invoice_number\": 0.98,\n \"total_amount\": 0.96,\n \"due_date\": 0.91,\n \"line_items\": 0.87\n }\n },\n \"provenance\": {\n \"vendor_name\": { \"source_text\": \"Acme Corp Ltd.\", \"section\": \"Header\", \"page\": 1 },\n \"invoice_total\": { \"source_text\": \"$14,250.00\", \"section\": \"Summary\", \"page\": 2 }\n },\n \"metadata\": {\n \"pages\": 2,\n \"language\": \"en\",\n \"document_type\": \"invoice\",\n \"processing_time_ms\": 3420\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-8 mb-2\">Asynchronous (202 Accepted)</h4>\n <p className=\"text-[14px] text-void-text-muted mb-3\">\n Returned when <InlineCode>async: true</InlineCode> or <InlineCode>webhook_url</InlineCode> is set. Poll <InlineCode>/v1/jobs/:id</InlineCode> for progress.\n </p>\n\n <CodeBlock title=\"202 — Asynchronous response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"job_id\": \"job_v4w2x8y1\",\n \"status\": \"processing\",\n \"estimated_time_ms\": 5000,\n \"poll_url\": \"/v1/jobs/job_v4w2x8y1\"\n}`}\n </CodeBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n DOCUMENTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"documents\">Documents</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Documents represent files that have been uploaded and processed. Each document\n retains its original file, extracted text, and metadata.\n </p>\n\n <div id=\"list-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents\"\n summary=\"List all documents with filtering and pagination.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'source_id', type: 'string', description: 'Filter by source.' },\n { name: 'status', type: 'string', description: 'Filter by status: pending, processing, completed, error.' },\n { name: 'after', type: 'string', description: 'ISO 8601 datetime. Only documents created after this timestamp.' },\n { name: 'before', type: 'string', description: 'ISO 8601 datetime. Only documents created before this timestamp.' },\n { name: 'search', type: 'string', description: 'Full-text search across filename and extracted content.' },\n { name: 'page', type: 'integer', description: 'Page number for pagination.', default: '1' },\n { name: 'per_page', type: 'integer', description: 'Results per page.', default: '50' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"doc_3j7x9p2q\",\n \"filename\": \"invoice-0847.pdf\",\n \"status\": \"completed\",\n \"document_type\": \"invoice\",\n \"pages\": 2,\n \"source_id\": \"src_m1n2o3p4\",\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 234,\n \"total_pages\": 5\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents/:id\"\n summary=\"Retrieve a single document with full metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"doc_3j7x9p2q\",\n \"filename\": \"invoice-0847.pdf\",\n \"status\": \"completed\",\n \"document_type\": \"invoice\",\n \"pages\": 2,\n \"language\": \"en\",\n \"source_id\": \"src_m1n2o3p4\",\n \"file_size_bytes\": 184320,\n \"extracted_text_length\": 4280,\n \"extraction_count\": 2,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"updated_at\": \"2024-09-14T10:32:45Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"re-extract-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/documents/:id/re-extract\"\n summary=\"Re-run extraction on an existing document.\"\n description=\"Clears previous extraction data and re-processes the document. Returns immediately with a new processing status.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"doc_3j7x9p2q\",\n \"status\": \"extracting\",\n \"message\": \"Re-extraction started. Poll GET /v1/documents/:id for progress.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/documents/:id\"\n summary=\"Delete a document and all associated extractions.\"\n description=\"This action is irreversible. The original file and all extraction results will be permanently removed.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"deleted\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-markdown\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents/:id/markdown\"\n summary=\"Get the OCR-converted markdown of a document.\"\n description=\"Returns the OCR-converted markdown output (via Document AI or Talonic). Available for PDF, DOCX, XLSX, PPTX, and image files. Useful for PDF-to-markdown conversion pipelines.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"document_id\": \"d9f44f95-...\",\n \"markdown\": \"# Invoice\\\\n\\\\n| Item | Amount |\\\\n| ... | ... |\\\\n...\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACTIONS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extractions\">Extractions</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n An extraction is the result of applying a schema to a document. A single document\n can have multiple extractions if different schemas are applied to it.\n </p>\n\n <div id=\"list-extractions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions\"\n summary=\"List extractions with optional filters.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'document_id', type: 'string', description: 'Filter by document.' },\n { name: 'schema_id', type: 'string', description: 'Filter by schema.' },\n { name: 'status', type: 'string', description: 'Filter by status: complete, processing, failed.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"confidence\": 0.94,\n \"created_at\": \"2024-09-14T10:33:12Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 89,\n \"total_pages\": 2\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-extraction\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions/:id\"\n summary=\"Get the full extraction result including data, confidence scores, and metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"data\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_number\": \"INV-2024-0847\",\n \"total_amount\": 14250.00,\n \"due_date\": \"2024-03-15\"\n },\n \"confidence\": {\n \"overall\": 0.94,\n \"fields\": {\n \"vendor_name\": 0.99,\n \"invoice_number\": 0.98,\n \"total_amount\": 0.96,\n \"due_date\": 0.91\n }\n },\n \"metadata\": {\n \"pages\": 2,\n \"language\": \"en\",\n \"document_type\": \"invoice\",\n \"processing_time_ms\": 3420\n },\n \"created_at\": \"2024-09-14T10:33:12Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-extraction-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions/:id/data\"\n summary=\"Get just the extracted data, without metadata. Supports CSV export.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'format', type: 'string', description: 'Response format.', default: '\"json\"' },\n ]}\n />\n <Callout>\n Set <InlineCode>?format=csv</InlineCode> to receive the data as a downloadable CSV file.\n The response Content-Type will be <InlineCode>text/csv</InlineCode>.\n </Callout>\n </EndpointBlock>\n </div>\n\n <div id=\"patch-extraction-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/extractions/:id/data\"\n summary=\"Correct individual fields in an extraction result.\"\n description=\"Submit corrections for specific fields. Corrections are logged and can be propagated to similar extractions.\"\n >\n <CodeBlock title=\"Request body\">\n{`{\n \"corrections\": [\n {\n \"field\": \"total_amount\",\n \"value\": 14500.00,\n \"reason\": \"Tax was miscalculated\"\n }\n ],\n \"propagate\": \"this_document_only\"\n}`}\n </CodeBlock>\n\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'corrections', type: 'array', required: true, description: 'Array of field corrections. Each must include field name and new value.' },\n { name: 'corrections[].field', type: 'string', required: true, description: 'The field name to correct.' },\n { name: 'corrections[].value', type: 'any', required: true, description: 'The corrected value.' },\n { name: 'corrections[].reason', type: 'string', description: 'Optional reason for the correction.' },\n { name: 'propagate', type: 'string', description: 'Propagation scope: this_document_only or all_similar.', default: '\"this_document_only\"' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMAS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schemas\">Schemas</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Schemas define the structure you want to extract from documents. Save schemas to\n reuse them across extractions and maintain consistency.\n </p>\n\n <div id=\"list-schemas\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schemas\"\n summary=\"List all saved schemas.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"sch_abc123\",\n \"name\": \"Invoice\",\n \"field_count\": 8,\n \"extraction_count\": 142,\n \"created_at\": \"2024-08-20T14:00:00Z\",\n \"updated_at\": \"2024-09-10T09:15:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schemas\"\n summary=\"Create a new schema.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name for the schema.' },\n { name: 'definition', type: 'object', required: true, description: 'Schema definition in any of the three supported formats.' },\n { name: 'description', type: 'string', description: 'Optional description of what this schema extracts.' },\n ]}\n />\n <CodeBlock title=\"Response (201 Created)\">\n{`{\n \"id\": \"sch_def456\",\n \"name\": \"Purchase Order\",\n \"field_count\": 12,\n \"definition\": {\n \"po_number\": \"string\",\n \"vendor\": \"string\",\n \"total\": \"number\",\n \"delivery_date\": \"date\"\n },\n \"created_at\": \"2024-09-14T12:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schemas/:id\"\n summary=\"Get a schema by ID, including its full definition.\"\n />\n </div>\n\n <div id=\"update-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/schemas/:id\"\n summary=\"Replace a schema definition. Creates a new version internally.\"\n description=\"Existing extractions retain their original schema version. New extractions will use the updated definition.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated name.' },\n { name: 'definition', type: 'object', description: 'Updated schema definition.' },\n { name: 'description', type: 'string', description: 'Updated description.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"delete-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/schemas/:id\"\n summary=\"Delete a schema. Does not delete associated extractions.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"deleted\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n JOBS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"jobs\">Jobs</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Jobs track asynchronous extraction work. Create a job with a schema and document set,\n then poll for progress. Each job runs the full 4-phase extraction pipeline.\n </p>\n\n <div id=\"create-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs\"\n summary=\"Create and run an extraction job.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'schema_id', type: 'string', required: true, description: 'Schema to extract against.' },\n { name: 'document_ids', type: 'string[]', description: 'Specific documents. Omit to use all unprocessed documents.' },\n { name: 'name', type: 'string', description: 'Optional human-readable job name.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"pending\",\n \"message\": \"Job created. Processing will begin shortly.\",\n \"links\": {\n \"self\": \"/v1/jobs/job_v4w2x8y1\",\n \"results\": \"/v1/jobs/job_v4w2x8y1/results\"\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-jobs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs\"\n summary=\"List all jobs with status and progress.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter by status: queued, processing, completed, failed, cancelled.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"completed\",\n \"extraction_id\": \"ext_8f2k4n1m\",\n \"progress\": 100,\n \"total_documents\": 1,\n \"completed_documents\": 1,\n \"failed_documents\": 0,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"completed_at\": \"2024-09-14T10:32:45Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 67,\n \"total_pages\": 2\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/:id\"\n summary=\"Get job status, progress, and result summary.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"processing\",\n \"progress\": 65,\n \"current_phase\": \"phase_2_execute\",\n \"total_documents\": 48,\n \"completed_documents\": 31,\n \"failed_documents\": 0,\n \"grid_stats\": {\n \"total_cells\": 2016,\n \"filled\": 1310,\n \"empty\": 706,\n \"fill_rate\": 0.65\n },\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"estimated_completion\": \"2024-09-14T10:35:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-job-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/:id/results\"\n summary=\"Get the structured extraction results from a completed job.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"document_id\": \"doc_3j7x9p2q\",\n \"document_filename\": \"invoice-0847.pdf\",\n \"values\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_total\": \"1,250.00\",\n \"currency\": \"USD\"\n }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"cancel-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/:id/cancel\"\n summary=\"Cancel a running job. Partial results are retained.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"cancelled\",\n \"progress\": 65,\n \"completed_documents\": 31,\n \"cancelled_at\": \"2024-09-14T10:33:20Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SOURCES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"sources\">Inputs</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Inputs group documents by origin. Each input source has its own API key for\n programmatic document ingestion.\n </p>\n\n <div id=\"list-sources\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources\"\n summary=\"List all sources.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"src_m1n2o3p4\",\n \"name\": \"Invoice Pipeline\",\n \"type\": \"api\",\n \"document_count\": 234,\n \"created_at\": \"2024-08-01T09:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-source\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/sources\"\n summary=\"Create a new source. Returns a source-scoped API key.\"\n description=\"The API key is only shown once in the response. Store it securely.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name for the source.' },\n { name: 'type', type: 'string', description: 'Source type: api, upload, connector.', default: '\"api\"' },\n ]}\n />\n <CodeBlock title=\"Response (201 Created)\">\n{`{\n \"id\": \"src_q5r6s7t8\",\n \"name\": \"Contract Pipeline\",\n \"type\": \"api\",\n \"api_key\": \"tlnc_sk_live_9a8b7c6d5e4f3g2h1i0j\",\n \"created_at\": \"2024-09-14T12:30:00Z\"\n}`}\n </CodeBlock>\n <Callout type=\"warning\">\n The <InlineCode>api_key</InlineCode> field is only included in the creation response.\n Store it immediately -- it cannot be retrieved later.\n </Callout>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-source\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources/:id\"\n summary=\"Get source details.\"\n />\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/sources/:id\"\n summary=\"Update a source name or configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated source name.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/sources/:id\"\n summary=\"Delete a source. Documents are retained but unlinked.\"\n />\n </div>\n\n <div id=\"source-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/sources/:id/documents\"\n summary=\"Ingest a document into a specific source.\"\n description=\"Accepts the same file/file_url parameters as /v1/extract, but does not require a schema. The document is processed and stored for later extraction.\"\n >\n <ParamTable\n title=\"Form data parameters\"\n params={[\n { name: 'file', type: 'binary', description: 'The document file.' },\n { name: 'file_url', type: 'string', description: 'URL to fetch the document from.' },\n { name: 'processing_mode', type: 'string', description: '\"realtime\" (default) or \"batch\". Batch processing has a 50% cost discount with results delivered within 48 hours.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources/:id/documents\"\n summary=\"List documents belonging to a source.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter by document status.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n FILTER & SEARCH\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"filter-search\">Filter & Search</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Search and filter documents by their extracted field values. Includes field autocomplete,\n document filtering with composable conditions, global omnisearch, and saved filter management.\n </p>\n\n <div id=\"field-autocomplete\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/fields/autocomplete\"\n summary=\"Autocomplete field names from the registry.\"\n description=\"Returns matching fields ranked by relevance and occurrence count. Use this to power field picker UIs.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'q', type: 'string', required: true, description: 'Search query to match against field names.' },\n { name: 'sourceId', type: 'string', description: 'Scope results to fields seen in a specific source.' },\n { name: 'limit', type: 'integer', default: '10', description: 'Maximum number of results to return.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"fields\": [\n {\n \"fieldId\": \"fld_a1b2c3d4\",\n \"canonicalName\": \"supplier_name\",\n \"displayName\": \"Supplier Name\",\n \"dataType\": \"string\",\n \"tier\": 1,\n \"occurrenceCount\": 1842,\n \"matchSource\": \"canonical\",\n \"sampleValues\": [\"Acme Corp\", \"Globex Inc\", \"Initech\"]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"field-values\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/fields/:fieldId/values\"\n summary=\"List distinct values for a field across documents.\"\n description=\"Returns value distribution with counts. Useful for building filter dropdowns and faceted search.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'sourceId', type: 'string', description: 'Scope to a specific source connection.' },\n { name: 'q', type: 'string', description: 'Filter values by substring match.' },\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of values to return.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"values\": [\n { \"value\": \"Acme Corp\", \"count\": 47 },\n { \"value\": \"Globex Inc\", \"count\": 23 }\n ],\n \"totalDistinct\": 156\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"filter-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/filter/documents\"\n summary=\"Filter documents by field value conditions.\"\n description=\"Apply composable conditions on extracted field values. Supports equality, comparison, range, containment, and emptiness operators.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'sourceConnectionId', type: 'string', description: 'Scope to a specific source connection.' },\n { name: 'conditions', type: 'array', required: true, description: 'Array of filter conditions. Each has fieldId, operator, and optional value / valueTo.' },\n { name: 'search', type: 'string', description: 'Free-text search across document content.' },\n { name: 'sort', type: 'object', description: 'Sort by a field: { fieldId, direction: \"asc\" | \"desc\" }.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'limit', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <p className=\"text-[13px] text-void-text-muted mb-3\">\n <strong className=\"text-void-text-secondary\">Operators:</strong>{' '}\n <InlineCode>eq</InlineCode>, <InlineCode>neq</InlineCode>, <InlineCode>gt</InlineCode>,{' '}\n <InlineCode>gte</InlineCode>, <InlineCode>lt</InlineCode>, <InlineCode>lte</InlineCode>,{' '}\n <InlineCode>between</InlineCode>, <InlineCode>contains</InlineCode>,{' '}\n <InlineCode>is_empty</InlineCode>, <InlineCode>is_not_empty</InlineCode>\n </p>\n <CodeBlock title=\"Request body\">\n{`{\n \"conditions\": [\n { \"fieldId\": \"fld_a1b2c3d4\", \"operator\": \"eq\", \"value\": \"Acme Corp\" },\n { \"fieldId\": \"fld_e5f6g7h8\", \"operator\": \"between\", \"value\": \"2024-01-01\", \"valueTo\": \"2024-12-31\" }\n ],\n \"sort\": { \"fieldId\": \"fld_e5f6g7h8\", \"direction\": \"desc\" },\n \"page\": 1,\n \"limit\": 25\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response\">\n{`{\n \"documents\": [\n {\n \"id\": \"doc_x9y8z7w6\",\n \"name\": \"Invoice-2024-001.pdf\",\n \"sourceId\": \"src_m1n2o3p4\",\n \"uploadedAt\": \"2024-09-14T10:32:00Z\",\n \"fieldValues\": {\n \"supplier_name\": \"Acme Corp\",\n \"invoice_date\": \"2024-06-15\"\n }\n }\n ],\n \"total\": 47,\n \"page\": 1,\n \"limit\": 25\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"omnisearch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/search\"\n summary=\"Global omnisearch across documents, fields, sources, and schemas.\"\n description=\"Unified search endpoint that returns results across all entity types. Powers the Cmd+K search experience.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'q', type: 'string', required: true, description: 'Search query.' },\n { name: 'limit', type: 'integer', default: '5', description: 'Maximum results per entity type.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"documents\": [\n { \"id\": \"doc_x9y8z7w6\", \"name\": \"Invoice-2024-001.pdf\", \"sourceId\": \"src_m1n2o3p4\", \"sourceName\": \"Invoice Pipeline\" }\n ],\n \"fieldMatches\": [\n {\n \"resolvedFieldId\": \"fld_a1b2c3d4\",\n \"displayName\": \"Supplier Name\",\n \"matchedValue\": \"Acme Corp\",\n \"documentCount\": 47\n }\n ],\n \"sources\": [\n { \"id\": \"src_m1n2o3p4\", \"name\": \"Invoice Pipeline\" }\n ],\n \"schemas\": [\n { \"id\": \"sch_k1l2m3n4\", \"name\": \"Invoice Schema\" }\n ],\n \"fields\": [\n { \"id\": \"fld_a1b2c3d4\", \"canonicalName\": \"supplier_name\", \"displayName\": \"Supplier Name\", \"documentCount\": 1842 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-saved-filters\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/saved-filters\"\n summary=\"List saved filters.\"\n description=\"Returns all saved filter configurations, optionally scoped to a source.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'sourceId', type: 'string', description: 'Filter saved filters by source connection.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"create-saved-filter\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/saved-filters\"\n summary=\"Create a saved filter.\"\n description=\"Persist a filter configuration for reuse.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Display name for the saved filter.' },\n { name: 'conditions', type: 'array', required: true, description: 'Array of filter conditions (same format as /filter/documents).' },\n { name: 'search', type: 'string', description: 'Optional free-text search to save with the filter.' },\n { name: 'sort', type: 'object', description: 'Optional sort configuration: { fieldId, direction }.' },\n { name: 'source_connection_id', type: 'string', description: 'Scope the filter to a specific source.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"delete-saved-filter\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/saved-filters/:id\"\n summary=\"Delete a saved filter.\"\n />\n </div>\n\n <div id=\"materialize\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/filter/materialize\"\n summary=\"Trigger materialization backfill for filter indexes.\"\n description=\"Rebuilds the materialized field value index used by filter queries. Run after bulk document ingestion.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"processed\": 1842\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DOCUMENT TYPES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"document-types\">Document Types</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Browse and discover document types. The ontology contains 529 types organized\n into categories and subcategories.\n </p>\n\n <div id=\"list-document-types\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/document-types\"\n summary=\"List document types discovered in your workspace.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"dtype_a1b2c3\",\n \"name\": \"Invoice\",\n \"ontology_type_id\": \"ont_inv_001\",\n \"category_id\": \"cat_financial\",\n \"document_count\": 342\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-ontology\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/document-types/ontology\"\n summary=\"Browse the full 529-type document ontology.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"cat_financial\",\n \"name\": \"Financial\",\n \"description\": \"Financial and accounting documents\",\n \"typeCount\": 47,\n \"subcategories\": [\n { \"id\": \"sub_invoices\", \"name\": \"Invoices\", \"typeCount\": 8 }\n ]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n CASES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"cases\">Cases</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Cases are automatically created when documents are linked together through shared\n field values. A case groups 2+ related documents with a narrative summary.\n </p>\n\n <div id=\"list-cases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases\"\n summary=\"List all cases with search and filtering.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'search', type: 'string', description: 'Search case labels and keys.' },\n { name: 'min_documents', type: 'integer', description: 'Minimum document count filter.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"case_key\": \"case_x7k9m2\",\n \"label\": \"Acme Corp — Q3 Audit\",\n \"document_count\": 12,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 18 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-case\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/:key\"\n summary=\"Get case detail including linked documents and anomalies.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"case_key\": \"case_x7k9m2\",\n \"label\": \"Acme Corp — Q3 Audit\",\n \"narrative\": \"12 documents linked through vendor_name and invoice references...\",\n \"documents\": [\n { \"id\": \"doc_3j7x9p2q\", \"filename\": \"invoice-0847.pdf\" }\n ],\n \"anomaly_count\": 2\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-case-status\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/cases/{key}/status\"\n summary=\"Update case status.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'status', type: 'string', required: true, description: 'New status (e.g. open, in_review, resolved, archived).' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"case-edges\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/{key}/edges\"\n summary=\"Get case edges.\"\n description=\"Returns the entity edges (evidence chain) connecting documents within the case.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"source_document_id\": \"uuid\",\n \"target_document_id\": \"uuid\",\n \"entity_value\": \"string\",\n \"entity_type\": \"string\",\n \"confidence\": 0.92\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"confirm-case-edge\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/edges/{edgeId}/confirm\"\n summary=\"Confirm a case edge.\"\n description=\"Confirm a proposed entity edge between documents in this case. No request body — both identifiers come from the path.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'edgeId', type: 'uuid', required: true, description: 'Edge identifier from the case edges list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"reject-case-edge\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/edges/{edgeId}/reject\"\n summary=\"Reject a case edge.\"\n description=\"Reject a proposed entity edge between documents in this case. No request body — both identifiers come from the path.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'edgeId', type: 'uuid', required: true, description: 'Edge identifier from the case edges list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"split-case\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/split\"\n summary=\"Split a case into two separate cases by partitioning its documents into two groups.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'partition_a', type: 'uuid[]', required: true, description: 'Document IDs that stay in the original case.' },\n { name: 'partition_b', type: 'uuid[]', required: true, description: 'Document IDs that move to the newly-created case.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"merge-cases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/merge\"\n summary=\"Merge two cases by passing both case keys in the request body.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'case_key_a', type: 'string', required: true, description: 'First case key — receives the merged documents.' },\n { name: 'case_key_b', type: 'string', required: true, description: 'Second case key — its documents are folded into case A.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"case-completeness\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/{key}/completeness\"\n summary=\"Get case completeness.\"\n description=\"Returns a completeness assessment for the case (expected vs. present document types, missing fields).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"completeness_score\": 0.83,\n \"expected_document_types\": [\"invoice\", \"purchase_order\", \"receipt\"],\n \"present_document_types\": [\"invoice\", \"purchase_order\"],\n \"missing_document_types\": [\"receipt\"]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"pin-case-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/documents/{docId}/pin\"\n summary=\"Manually pin a document to a case so it persists across re-clustering.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'docId', type: 'uuid', required: true, description: 'Document identifier to pin.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"unpin-case-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/cases/{key}/documents/{docId}\"\n summary=\"Remove a manually-pinned document from a case.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'docId', type: 'uuid', required: true, description: 'Document identifier to remove.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n FIELDS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"fields\">Fields</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The field registry is the knowledge graph of all discovered fields. Fields are\n semantically clustered and promoted through tiers as they appear across documents.\n </p>\n\n <div id=\"list-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields\"\n summary=\"List fields with search, tier, and cluster filtering.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'search', type: 'string', description: 'Search by canonical or display name.' },\n { name: 'tier', type: 'string', description: 'Filter by tier: discovered, confirmed, promoted.' },\n { name: 'cluster_id', type: 'string', description: 'Filter by semantic cluster.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"fld_8n2k4m\",\n \"canonical_name\": \"vendor_name\",\n \"display_name\": \"Vendor Name\",\n \"data_type\": \"string\",\n \"tier\": \"promoted\",\n \"occurrence_count\": 847\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 312 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-field\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/:id\"\n summary=\"Get field detail with occurrence history and metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"fld_8n2k4m\",\n \"canonical_name\": \"vendor_name\",\n \"display_name\": \"Vendor Name\",\n \"data_type\": \"string\",\n \"tier\": \"promoted\",\n \"occurrence_count\": 847,\n \"cluster_id\": \"cls_v3n9\",\n \"first_seen\": \"2024-06-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"similar-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/:id/similar\"\n summary=\"Find semantically similar fields using embedding distance.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"id\": \"fld_9p3l5n\", \"canonical_name\": \"supplier_name\", \"similarity\": 0.94 },\n { \"id\": \"fld_2r7t8w\", \"canonical_name\": \"company_name\", \"similarity\": 0.87 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"field-harmonization\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/harmonization\"\n summary=\"Detect cross-schema field overlap and naming conflicts.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"overlaps\": [\n {\n \"field_a\": \"vendor_name\",\n \"field_b\": \"supplier_name\",\n \"similarity\": 0.94,\n \"schemas_affected\": 3\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n ROUTING RULES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"routing\">Routing Rules</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Routing rules automatically direct documents to schemas, reviewers, or delivery\n destinations based on configurable conditions.\n </p>\n\n <div id=\"list-routing-rules\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/routing-rules\"\n summary=\"List all routing rules.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"rule_4k8m2n\",\n \"name\": \"Invoices to Finance\",\n \"conditions\": { \"document_type\": \"invoice\" },\n \"actions\": { \"assign_schema\": \"schema_fin_001\" },\n \"priority\": 10,\n \"enabled\": true\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-routing-rule\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/routing-rules\"\n summary=\"Create a new routing rule.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Rule name.' },\n { name: 'conditions', type: 'object', required: true, description: 'Match conditions (document_type, source_id, etc.).' },\n { name: 'actions', type: 'object', required: true, description: 'Actions to execute (assign_schema, route_to, etc.).' },\n { name: 'priority', type: 'integer', default: '0', description: 'Higher priority rules execute first.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"rule_4k8m2n\",\n \"name\": \"Invoices to Finance\",\n \"conditions\": { \"document_type\": \"invoice\" },\n \"actions\": { \"assign_schema\": \"schema_fin_001\" },\n \"priority\": 10,\n \"enabled\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-routing-rule\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-routing-rule\">Get / Update / Delete Rule</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/routing-rules/:id\" summary=\"Get a routing rule by ID.\" />\n <EndpointBlock method=\"PATCH\" path=\"/v1/routing-rules/:id\" summary=\"Update rule name, conditions, actions, or priority.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/routing-rules/:id\" summary=\"Delete a routing rule.\" />\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DELIVERY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"delivery\">Delivery</SectionHeading>\n\n <div id=\"delivery-overview\" className=\"scroll-mt-6\">\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Configure outbound delivery. Emit signals (<InlineCode>document.extracted</InlineCode>,{' '}\n <InlineCode>run.dataspace.completed</InlineCode>, <InlineCode>result.approved</InlineCode>, …) are\n routed through <strong>bindings</strong> that join a signal filter to a{' '}\n <strong>deliverable resolver</strong>, a <strong>serializer</strong>, and a{' '}\n <strong>destination</strong>. Slice-1 ships the <InlineCode>webhook</InlineCode>{' '}\n connector with HMAC-signed payloads, idempotency keys, SSRF guard, payload caps, and a fixed\n retry ladder; S3, SFTP, Sheets, Drive, and Email arrive in later slices.\n </p>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Every attempt is recorded in the history log (<InlineCode>/v1/delivery/items</InlineCode>).\n Terminal failures land in the dead-letter queue (<InlineCode>/v1/delivery/dlq</InlineCode>)\n and are replayable. The raw outbox is inspectable at{' '}\n <InlineCode>/v1/delivery/events</InlineCode>. Use{' '}\n <InlineCode>/v1/delivery/catalog/*</InlineCode> to discover available signals,\n deliverables, serializers, and connectors — the catalog drives the compatibility-triangle\n validator that runs on every binding create/update.\n </p>\n </div>\n\n <div id=\"list-destinations\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/delivery/destinations\"\n summary=\"List delivery destinations.\"\n >\n <CodeBlock title=\"Response\">\n{`[\n {\n \"id\": \"7f8a2b44-...\",\n \"name\": \"Analytics webhook\",\n \"type\": \"webhook\",\n \"config\": { \"url\": \"https://example.com/hook\", \"headers\": {} },\n \"signing_secret\": \"***\",\n \"payload_cap_bytes\": null,\n \"is_active\": true,\n \"last_delivery_at\": \"2026-04-23T10:21:00Z\",\n \"last_delivery_status\": \"succeeded\",\n \"created_at\": \"2026-04-15T00:00:00Z\",\n \"updated_at\": \"2026-04-23T10:21:00Z\"\n }\n]`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-destination\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/destinations\"\n summary=\"Create a delivery destination.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name.' },\n { name: 'type', type: 'string', required: true, description: 'Connector type. Slice-1 ships `webhook`.' },\n { name: 'config', type: 'object', description: 'Connector-specific configuration (e.g. `{ url, headers }`).' },\n { name: 'auth_config', type: 'object', description: 'Connector-specific credentials. Never echoed back in full.' },\n { name: 'signing_secret', type: 'string', description: 'HMAC secret for connectors that sign outbound bodies.' },\n { name: 'payload_cap_bytes', type: 'integer', description: 'Per-destination TransportWrapper cap override.' },\n { name: 'is_active', type: 'boolean', description: 'Defaults to true.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"7f8a2b44-...\",\n \"name\": \"Analytics webhook\",\n \"type\": \"webhook\",\n \"config\": { \"url\": \"https://example.com/hook\" },\n \"signing_secret\": \"***\",\n \"is_active\": true,\n \"created_at\": \"2026-04-23T10:21:00Z\",\n \"updated_at\": \"2026-04-23T10:21:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-destination\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-destination\">Get / Update / Delete Destination</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/destinations/:id\" summary=\"Get destination detail.\" />\n <EndpointBlock method=\"PUT\" path=\"/v1/delivery/destinations/:id\" summary=\"Partial update — only supplied fields are written.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/destinations/:id\" summary=\"Delete a destination. Cascading bindings are removed.\" />\n </div>\n </div>\n\n <div id=\"test-destination\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/destinations/:id/test\"\n summary=\"Live-ping a destination through the full transport envelope.\"\n >\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Exercises the complete delivery envelope (SSRF guard, payload cap, rate limit — retry\n ladder is disabled, <InlineCode>max_attempts: 1</InlineCode>) with a tiny test payload.\n </p>\n <CodeBlock title=\"Response\">\n{`{\n \"success\": true,\n \"httpStatus\": 200,\n \"durationMs\": 284,\n \"message\": null\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-bindings\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/delivery/bindings\"\n summary=\"List delivery bindings.\"\n >\n <CodeBlock title=\"Response\">\n{`[\n {\n \"id\": \"4c2e1a39-...\",\n \"name\": \"Extracted docs -> analytics\",\n \"signal_filter\": { \"event_type\": \"document.extracted\" },\n \"deliverable_type\": \"document_meta\",\n \"destination_id\": \"7f8a2b44-...\",\n \"serializer_format\": \"json\",\n \"is_active\": true\n }\n]`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-binding\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/bindings\"\n summary=\"Create a delivery binding.\"\n >\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Runs the compatibility-triangle validator: the <InlineCode>signal_filter</InlineCode> must be\n well-formed, the <InlineCode>deliverable_type</InlineCode> must resolve to a registered\n resolver, the <InlineCode>serializer_format</InlineCode> must resolve to a registered\n serializer, and the serializer must support the resolver's shape.\n </p>\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name.' },\n { name: 'signal_filter', type: 'object', required: true, description: 'Shape: `{ event_type, match? }`. Match is an equality filter on payload keys.' },\n { name: 'deliverable_type', type: 'string', required: true, description: 'Registered resolver (`/v1/delivery/catalog/deliverables`).' },\n { name: 'destination_id', type: 'uuid', required: true, description: 'Destination to deliver to.' },\n { name: 'serializer_format', type: 'string', required: true, description: 'One of `json`, `ndjson`, `csv`, `csv_file`, `xlsx`, `rows`, `graph`, `raw`, `md`, `txt`.' },\n { name: 'serializer_config', type: 'object', description: 'Format-specific options (delimiter, include_header, etc.).' },\n { name: 'field_map', type: 'object', description: 'Declarative projection: `{ rules, static, drop }`. Drop → rename → static in fixed order.' },\n { name: 'delivery_policy', type: 'object', description: 'Retry/timeout overrides. Defaults to 6 attempts, `[5s, 30s, 2min, 10min, 1h]`.' },\n { name: 'is_active', type: 'boolean', description: 'Defaults to true.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"manage-binding\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-binding\">Get / Update / Delete Binding</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/bindings/:id\" summary=\"Get binding detail.\" />\n <EndpointBlock method=\"PUT\" path=\"/v1/delivery/bindings/:id\" summary=\"Partial update. Re-runs the compatibility-triangle validator on changed fields.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/bindings/:id\" summary=\"Delete a binding.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/bindings/:id/preview\" summary=\"Synthetic-signal dry run. Stubbed in slice 1.\" />\n </div>\n </div>\n\n <div id=\"delivery-items\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-items\">Items (History)</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n One row per delivery attempt. The processor writes <InlineCode>in_flight</InlineCode> at\n start, then updates to <InlineCode>succeeded</InlineCode> or <InlineCode>failed</InlineCode>.\n Replay generates a new attempt with a new idempotency key — history is append-only.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/items\" summary=\"List attempts. Filter by binding_id, destination_id, status. Paginated.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/items/:id\" summary=\"Attempt detail with request/response bodies.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/items/:id/replay\" summary=\"Re-enqueue. Returns `{ enqueued, idempotency_key }`.\" />\n </div>\n </div>\n\n <div id=\"delivery-dlq\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-dlq\">Dead-Letter Queue</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Terminal failures after retry exhaustion (or permanent 4xx errors) land here. Replay\n enqueues a fresh attempt; dismiss removes the row from the queue without replaying.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/dlq\" summary=\"List dead-letter rows. Filter by binding_id, error_code.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/dlq/:id\" summary=\"Dead-letter detail.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/dlq/:id/replay\" summary=\"Re-enqueue a dead-letter row. Row remains in queue for audit.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/dlq/:id\" summary=\"Dismiss the row.\" />\n </div>\n </div>\n\n <div id=\"delivery-events\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-events\">Outbox Events</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Raw outbox rows with their processing status (<InlineCode>enqueued</InlineCode>,{' '}\n <InlineCode>no-subscribers</InlineCode>, <InlineCode>failed</InlineCode>). Useful for\n debugging binding matchers. Event IDs are BIGSERIAL (strings).\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/events\" summary=\"List outbox rows. Filter by event_type. Paginated.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/events/:id/replay\" summary=\"Clear processed_at/processing_status so the poller re-picks the row.\" />\n </div>\n </div>\n\n <div id=\"delivery-catalog\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-catalog\">Catalog</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Introspect the four registries that drive the binding compatibility-triangle. Populate\n your binding-editor dropdowns from these endpoints rather than hardcoding lists.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/signals\" summary=\"All DeliveryEventType discriminants.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/deliverables\" summary=\"Registered resolvers with compatible_signals and shape.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/serializers\" summary=\"Registered serializers with supports_kinds (probed).\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/connectors\" summary=\"Registered connectors with capabilities().\" />\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n REVIEW\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"review\">Review</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The review queue surfaces extraction results that need human validation.\n Approve, reject, or batch-process items programmatically.\n </p>\n\n <div id=\"list-review\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/review\"\n summary=\"List items in the review queue.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter: pending, approved, rejected.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"rev_8k2n4m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"status\": \"pending\",\n \"flags\": [\"low_confidence\", \"missing_fields\"],\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 23 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-action\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/:id/action\"\n summary=\"Take action on a review item.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'action', type: 'string', required: true, description: '\"approve\" or \"reject\".' },\n { name: 'reason', type: 'string', description: 'Optional reason for the action.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"rev_8k2n4m\",\n \"status\": \"approved\",\n \"actioned_at\": \"2024-09-14T10:35:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-batch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/batch\"\n summary=\"Batch approve or reject multiple review items.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'ids', type: 'string[]', required: true, description: 'Array of review item IDs.' },\n { name: 'action', type: 'string', required: true, description: '\"approve\" or \"reject\".' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"processed\": 5,\n \"failed\": 0\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-stats\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/review/stats\"\n summary=\"Get review queue statistics.\"\n description=\"Returns aggregate statistics about the review queue (pending, approved, rejected counts).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"pending\": 23,\n \"approved\": 142,\n \"rejected\": 8,\n \"total\": 173\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-assign\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/{id}/assign\"\n summary=\"Assign a review record to a user (or unassign with null).\"\n description=\"Set the assignee on a single review record. Pass user_id: null to unassign.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Review record identifier.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'user_id', type: 'uuid | null', required: true, description: 'User ID of the assignee, or null to unassign.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n QUALITY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"quality\">Quality</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Manage ground truth datasets and benchmark extraction quality over time.\n </p>\n\n <div id=\"list-quality-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/ground-truth\"\n summary=\"List ground truth datasets.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"gt_4k8m2n\",\n \"name\": \"Invoice Validation Set\",\n \"description\": \"50 manually verified invoices\",\n \"document_count\": 50,\n \"created_at\": \"2024-08-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-benchmarks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/benchmarks\"\n summary=\"List benchmark runs and accuracy scores.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"bench_9x2k4m\",\n \"ground_truth_id\": \"gt_4k8m2n\",\n \"schema_id\": \"schema_fin_001\",\n \"accuracy\": 0.94,\n \"precision\": 0.96,\n \"recall\": 0.92,\n \"run_at\": \"2024-09-10T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"add-ground-truth-entry\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/quality/ground-truth/{datasetId}/entries\"\n summary=\"Add an entry to a ground truth dataset.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', description: 'Optional document associated with the entry.' },\n { name: 'expected_data', type: 'object', required: true, description: 'The known-correct field values for this document.' },\n { name: 'notes', type: 'string', description: 'Optional reviewer notes.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"document_id\": \"uuid\",\n \"expected_data\": { \"vendor_name\": \"Acme Corp\", \"total\": 1234.56 },\n \"notes\": null,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-ground-truth-entry\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/quality/ground-truth/{datasetId}/entries/{entryId}\"\n summary=\"Delete a ground truth entry.\"\n />\n </div>\n\n <div id=\"benchmark-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/benchmarks/{id}/results\"\n summary=\"Get benchmark results.\"\n description=\"Returns per-document accuracy results for a benchmark run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"document_id\": \"uuid\",\n \"ground_truth_entry_id\": \"uuid\",\n \"accuracy\": 0.94,\n \"field_results\": { \"vendor_name\": \"pass\", \"total\": \"fail\" },\n \"created_at\": \"2024-09-10T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n MATCHING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"matching\">Matching</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Match extracted data against reference datasets using configurable field-level\n matching strategies (exact, fuzzy, date range, numeric range).\n </p>\n\n <div id=\"list-matching-configs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/configs\"\n summary=\"List matching configurations.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [\n { \"source\": \"vendor_name\", \"target\": \"name\", \"strategy\": \"fuzzy\", \"weight\": 0.7 }\n ],\n \"created_at\": \"2024-09-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs\"\n summary=\"Create a matching configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Configuration name.' },\n { name: 'reference_table', type: 'string', required: true, description: 'Reference data table ID.' },\n { name: 'field_mappings', type: 'array', required: true, description: 'Array of { source, target, strategy, weight } mappings.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/matching/configs/:id\"\n summary=\"Update an existing matching configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated configuration name.' },\n { name: 'reference_table', type: 'string', description: 'Updated reference data table ID.' },\n { name: 'field_mappings', type: 'array', description: 'Updated array of { source, target, strategy, weight } mappings.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching v2\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [\n { \"source\": \"vendor_name\", \"target\": \"name\", \"strategy\": \"fuzzy\", \"weight\": 0.8 },\n { \"source\": \"tax_id\", \"target\": \"tax_number\", \"strategy\": \"exact\", \"weight\": 1.0 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/matching/configs/:id\"\n summary=\"Delete a matching configuration and all associated runs.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"run-matching\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs/:id/run\"\n summary=\"Trigger a matching run against the reference dataset.\"\n >\n <CodeBlock title=\"Response (202)\">\n{`{\n \"run_id\": \"run_8k2n4m\",\n \"status\": \"processing\",\n \"message\": \"Matching run started. Poll for results.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-matching-runs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs\"\n summary=\"List matching runs, optionally filtered by config.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'config_id', type: 'uuid', description: 'Filter runs by matching config ID.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"run_8k2n4m\",\n \"config_id\": \"match_3n7k9m\",\n \"status\": \"completed\",\n \"matched_count\": 142,\n \"unmatched_count\": 8,\n \"started_at\": \"2024-09-15T10:00:00Z\",\n \"completed_at\": \"2024-09-15T10:02:34Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"cancel-matching-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/:id/cancel\"\n summary=\"Cancel a matching run that is currently processing.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"run_8k2n4m\",\n \"status\": \"cancelled\",\n \"message\": \"Matching run cancelled.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"smart-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs/{id}/smart-run\"\n summary=\"Run a generated AI strategy against a matching config.\"\n description=\"Execute a previously-generated strategy on the documents scoped by the matching config. The strategy is generated separately via /v1/matching/strategies/generate.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Matching configuration identifier.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'strategy_id', type: 'uuid', required: true, description: 'Generated strategy to execute against this config.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"ai-resolve\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/{id}/ai-resolve\"\n summary=\"AI-resolve a matching run's review band.\"\n description=\"Triggers AI-driven resolution on a completed run's review-band candidates. The run must already have an associated strategy; no request body.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Matching run identifier.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"uuid\",\n \"status\": \"ai_resolving\",\n \"message\": \"AI resolution started.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"generate-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/strategies/generate\"\n summary=\"Generate a matching strategy from reference data and a target descriptor.\"\n description=\"Synthesize a draft matching strategy by analysing the reference dataset shape and the supplied target descriptor. The returned strategy is then executed against a config via /v1/matching/configs/{id}/smart-run.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'reference_data_id', type: 'uuid', required: true, description: 'Reference dataset to use as the source of truth.' },\n { name: 'target_type', type: 'string', required: true, description: 'Target scope type — typically \"run\", \"schema\", or \"document_filter\".' },\n { name: 'target_value', type: 'object', description: 'Target descriptor payload — shape depends on target_type.' },\n { name: 'user_prompt', type: 'string', description: 'Optional natural-language guidance to steer strategy synthesis.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"get-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/strategies/{id}\"\n summary=\"Get a matching strategy.\"\n />\n </div>\n\n <div id=\"update-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/matching/strategies/{id}\"\n summary=\"Update a matching strategy.\"\n description=\"Patch an existing strategy. Every property is optional; only the keys present on the body are merged into the strategy.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'reasoning_summary', type: 'string', description: 'Updated synthesis rationale.' },\n { name: 'cardinality', type: 'object', description: 'Updated cardinality descriptor.' },\n { name: 'data_quality_notes', type: 'string[]', description: 'Updated note list.' },\n { name: 'blocking_keys', type: 'object[]', description: 'Updated blocking-key set.' },\n { name: 'blocking_strategy', type: 'string', description: 'Either \"parallel\" or \"ordered_fallback\".' },\n { name: 'hard_filters', type: 'object[]', description: 'Updated hard-filter list.' },\n { name: 'field_rules', type: 'object[]', description: 'Updated field-rule list.' },\n { name: 'thresholds', type: 'object', description: 'Updated confidence thresholds.' },\n { name: 'edge_cases', type: 'object[]', description: 'Updated edge-case list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"match-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs/{id}/results\"\n summary=\"Get matching run results.\"\n description=\"Returns per-document match results with top candidates and field-level evidence.\"\n />\n </div>\n\n <div id=\"match-progress\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs/{id}/progress\"\n summary=\"Get matching run progress.\"\n description=\"Returns the processing progress for an in-flight matching run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"status\": \"running\",\n \"processed\": 87,\n \"total\": 150,\n \"percentage\": 58.0\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-match\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/{runId}/results/{resultId}/review\"\n summary=\"Review a single match result.\"\n description=\"Apply an approve/reject decision (or attach reviewer notes) to a single match result within a matching run.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'runId', type: 'uuid', required: true, description: 'Matching run identifier.' },\n { name: 'resultId', type: 'uuid', required: true, description: 'Match result identifier within the run.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'status', type: 'string', required: true, description: 'Reviewer decision — typically \"approved\" or \"rejected\".' },\n { name: 'notes', type: 'string', description: 'Optional reviewer note attached to the decision.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n BATCHES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"batches\">Batches</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Batch inference processes documents at 50% cost with up to 48-hour delivery.\n Upload documents with <InlineCode>processing_mode=batch</InlineCode> to use batch extraction.\n </p>\n\n <div id=\"list-batches\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/batches\"\n summary=\"List extraction batches.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter: accumulating, submitted, processing, completed, failed.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"batch_7n3k9m\",\n \"status\": \"processing\",\n \"item_count\": 150,\n \"completed_count\": 87,\n \"submitted_at\": \"2024-09-14T08:00:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 5 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-batch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/batches/:id\"\n summary=\"Get batch detail with item-level status.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"batch_7n3k9m\",\n \"status\": \"processing\",\n \"item_count\": 150,\n \"completed_count\": 87,\n \"items\": [\n { \"document_id\": \"doc_3j7x9p2q\", \"status\": \"completed\" },\n { \"document_id\": \"doc_5m8p2r4t\", \"status\": \"pending\" }\n ],\n \"submitted_at\": \"2024-09-14T08:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"batch-sync\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/batches/{id}/sync\"\n summary=\"Sync batch status with provider.\"\n description=\"Force a status sync with the batch inference provider (Anthropic or Bedrock).\"\n />\n </div>\n\n <div id=\"batch-cancel\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/batches/{id}/cancel\"\n summary=\"Cancel a batch inference run.\"\n description=\"Cancel an in-flight batch. Only batches in accumulating or submitted status can be cancelled.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n USAGE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"usage\">Usage</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Track API usage, document processing costs, and token consumption.\n </p>\n\n <div id=\"get-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/usage\"\n summary=\"Get aggregate usage statistics for a date range.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', required: true, description: 'ISO 8601 start date.' },\n { name: 'to', type: 'string', required: true, description: 'ISO 8601 end date.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"documents_processed\": 1842,\n \"pages_processed\": 5210,\n \"extractions_run\": 2104,\n \"total_cost_usd\": 15.63,\n \"period\": { \"from\": \"2024-09-01\", \"to\": \"2024-09-30\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"document-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/usage/documents/:id\"\n summary=\"Get usage breakdown for a specific document.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"document_id\": \"doc_3j7x9p2q\",\n \"ocr_cost_usd\": 0.006,\n \"extraction_cost_usd\": 0.012,\n \"total_cost_usd\": 0.018,\n \"operations\": [\n { \"type\": \"document_ai_ocr\", \"model\": \"mistral-ocr\", \"pages\": 2, \"cost_usd\": 0.006 },\n { \"type\": \"extraction\", \"model\": \"claude-sonnet\", \"tokens\": 4280, \"cost_usd\": 0.012 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DIALECTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"dialects\">Dialects</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Dialects define shared output formatting rules (date formats, number locales,\n delimiters, encoding, etc.) that can be applied across schemas and exports.\n </p>\n\n <div id=\"list-dialects\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/dialects\"\n summary=\"List all shared dialects.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/dialects\"\n summary=\"Create a new dialect.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Dialect name.' },\n { name: 'date_format', type: 'string', description: 'Date format string (e.g. DD/MM/YYYY).' },\n { name: 'number_locale', type: 'string', description: 'BCP 47 locale for number formatting (e.g. de-DE).' },\n { name: 'delimiter', type: 'string', description: 'CSV field delimiter (e.g. ; or ,).' },\n { name: 'null_representation', type: 'string', description: 'String used for null values.' },\n { name: 'encoding', type: 'string', description: 'Output encoding (e.g. utf-8, iso-8859-1).' },\n { name: 'boolean_format', type: 'string', description: 'Boolean representation (e.g. true/false, ja/nein).' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/dialects/:id\"\n summary=\"Get a dialect by ID.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/dialects/:id\"\n summary=\"Update a dialect. Partial update; increments the version number.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated dialect name.' },\n { name: 'date_format', type: 'string', description: 'Updated date format string.' },\n { name: 'number_locale', type: 'string', description: 'Updated number locale.' },\n { name: 'delimiter', type: 'string', description: 'Updated delimiter.' },\n { name: 'null_representation', type: 'string', description: 'Updated null representation.' },\n { name: 'encoding', type: 'string', description: 'Updated encoding.' },\n { name: 'boolean_format', type: 'string', description: 'Updated boolean format.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 2,\n \"config\": {\n \"date_format\": \"DD.MM.YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/dialects/:id\"\n summary=\"Delete a dialect.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n REFERENCE DATA\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"reference-data\">Reference Data</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Manage reference datasets used for matching and lookup operations.\n Reference data is uploaded as CSV or XLSX and stored as versioned tables.\n </p>\n\n <div id=\"list-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data\"\n summary=\"List reference datasets.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"ref_4k8m2n\",\n \"name\": \"Vendor Master\",\n \"source_type\": \"csv\",\n \"row_count\": 1250,\n \"columns\": [\"vendor_id\", \"name\", \"tax_number\", \"country\"],\n \"created_at\": \"2024-10-05T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data/:id\"\n summary=\"Get reference data metadata by ID.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"ref_4k8m2n\",\n \"name\": \"Vendor Master\",\n \"source_type\": \"csv\",\n \"row_count\": 1250,\n \"columns\": [\"vendor_id\", \"name\", \"tax_number\", \"country\"],\n \"created_at\": \"2024-10-05T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-reference-rows\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data/:id/rows\"\n summary=\"Get paginated rows from a reference dataset.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'limit', type: 'integer', default: '100', description: 'Rows per page (max 500).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"vendor_id\": \"V001\", \"name\": \"Acme Corp\", \"tax_number\": \"DE123456789\", \"country\": \"DE\" },\n { \"vendor_id\": \"V002\", \"name\": \"Globex Inc\", \"tax_number\": \"US987654321\", \"country\": \"US\" }\n ],\n \"pagination\": { \"page\": 1, \"limit\": 100, \"total\": 1250 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/reference-data/:id\"\n summary=\"Delete a reference dataset and all its rows.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n WEBHOOKS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"webhooks\">Webhooks</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Receive real-time notifications when extraction events occur. Configure webhook\n URLs per-source or per-extraction via the <InlineCode>webhook_url</InlineCode> option.\n </p>\n\n <SubHeading id=\"webhook-management\">Management</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Programmatically create, update, and delete webhook configurations. Each webhook can be scoped to specific event types and optionally to a single source connection.\n </p>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/webhooks\"\n summary=\"List webhook configurations.\"\n description=\"Returns all webhook configurations for your organization.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{\n \"data\": [\n {\n \"id\": \"whk_a1b2c3d4\",\n \"url\": \"https://example.com/webhook\",\n \"events\": [\"extraction.complete\", \"extraction.failed\"],\n \"is_active\": true,\n \"source_connection_id\": null,\n \"created_at\": \"2026-05-01T10:00:00.000Z\",\n \"updated_at\": \"2026-05-01T10:00:00.000Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/webhooks\"\n summary=\"Create a webhook configuration.\"\n description=\"Creates a new webhook endpoint for your organization.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'url', type: 'string', required: true, description: 'The HTTPS URL to deliver events to.' },\n { name: 'secret', type: 'string', description: 'Shared secret for HMAC-SHA256 signature verification. Auto-generated if omitted.' },\n { name: 'events', type: 'string[]', description: 'Event types to subscribe to. Defaults to [\"extraction.complete\", \"extraction.failed\"].' },\n { name: 'source_connection_id', type: 'string', description: 'Scope deliveries to a specific source connection.' },\n { name: 'is_active', type: 'boolean', description: 'Whether the webhook is active. Defaults to true.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/webhooks/:id\"\n summary=\"Update a webhook configuration.\"\n description=\"Partially update an existing webhook configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'url', type: 'string', description: 'Updated delivery URL.' },\n { name: 'secret', type: 'string', description: 'Updated signing secret.' },\n { name: 'events', type: 'string[]', description: 'Updated event filter.' },\n { name: 'is_active', type: 'boolean', description: 'Enable or disable the webhook.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/webhooks/:id\"\n summary=\"Delete a webhook configuration.\"\n description=\"Permanently removes a webhook configuration. Pending deliveries are cancelled.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{ \"deleted\": true, \"id\": \"whk_a1b2c3d4\" }`}\n </CodeBlock>\n </EndpointBlock>\n\n <SubHeading id=\"webhook-events\">Events</SubHeading>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Event</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">extraction.complete</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Extraction finished successfully. Payload includes the full extraction result.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">extraction.failed</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Extraction failed. Payload includes the error details.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">document.ingested</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">A new document has been processed and is ready for extraction.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <SubHeading id=\"webhook-delivery\">Delivery Format</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-3\">\n Webhooks are delivered as <InlineCode>POST</InlineCode> requests with a JSON body.\n Each delivery includes these headers:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Header</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Event</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">The event type (e.g. extraction.complete).</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Signature</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">HMAC-SHA256 signature of the request body.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Delivery-Id</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unique delivery ID for idempotency.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Timestamp</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unix timestamp of when the event was sent.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <CodeBlock title=\"Webhook payload example\">\n{`{\n \"event\": \"extraction.complete\",\n \"delivery_id\": \"dlv_a1b2c3d4\",\n \"timestamp\": \"2024-09-14T10:33:12Z\",\n \"data\": {\n \"extraction_id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"confidence\": 0.94\n }\n}`}\n </CodeBlock>\n\n <SubHeading id=\"webhook-verification\">Signature Verification</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Verify webhook authenticity by computing an HMAC-SHA256 signature of the raw request body\n using your webhook secret, then comparing it with the <InlineCode>X-Talonic-Signature</InlineCode> header.\n </p>\n\n <CodeBlock language=\"bash\" title=\"Python\">\n{`import hmac\nimport hashlib\n\ndef verify_webhook(payload: bytes, signature: str, secret: str) -> bool:\n expected = hmac.new(\n secret.encode(),\n payload,\n hashlib.sha256\n ).hexdigest()\n return hmac.compare_digest(f\"sha256={expected}\", signature)`}\n </CodeBlock>\n\n <CodeBlock language=\"bash\" title=\"Node.js\">\n{`const crypto = require('crypto');\n\nfunction verifyWebhook(payload, signature, secret) {\n const expected = crypto\n .createHmac('sha256', secret)\n .update(payload)\n .digest('hex');\n return crypto.timingSafeEqual(\n Buffer.from(\\`sha256=\\${expected}\\`),\n Buffer.from(signature)\n );\n}`}\n </CodeBlock>\n\n <SubHeading id=\"webhook-retries\">Retry Policy</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-2\">\n If your endpoint returns a non-2xx status code or times out (30s), Talonic retries\n with exponential backoff:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Attempt</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Delay</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 text-[13px]\">1st retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">1 minute</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">2nd retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">5 minutes</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">3rd retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">30 minutes</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">4th retry (final)</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">4 hours</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">\n After 4 failed attempts, the delivery is marked as failed. You can check delivery\n status and replay events from the dashboard.\n </p>\n\n {/* ═══════════════════════════════════════════════════════════════\n RESOLUTIONS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"resolutions\">Resolutions</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Resolution runs apply field normalization, lookup cascades, and value transforms\n to extracted data. Create a resolution from a completed job run to standardise\n field values against reference data.\n </p>\n\n <div id=\"list-resolutions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions\"\n summary=\"List resolution runs, optionally filtered by status or source run.\"\n description=\"Requires read scope.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of items to return (1–100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order by creation date (asc | desc).' },\n { name: 'status', type: 'string', required: false, description: 'Filter by run status.' },\n { name: 'source_run_id', type: 'uuid', required: false, description: 'Filter by originating job run.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"source_run_id\": \"uuid\",\n \"status\": \"completed\",\n \"documents_processed\": 142,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"completed_at\": \"2024-09-14T10:35:42Z\",\n \"links\": { \"self\": \"/v1/resolutions/uuid\", \"results\": \"/v1/resolutions/uuid/results\" }\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/resolutions\"\n summary=\"Create a resolution run from a completed job.\"\n description=\"Requires write scope. Start a new resolution run targeting documents from a specific source run.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'source_run_id', type: 'uuid', required: true, description: 'ID of the source run to resolve against.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"source_run_id\": \"run_abc123\"\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"source_run_id\": \"uuid\",\n \"status\": \"pending\",\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"links\": { \"self\": \"/v1/resolutions/uuid\", \"results\": \"/v1/resolutions/uuid/results\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions/{id}\"\n summary=\"Get a resolution run with status and summary.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"get-resolution-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions/{id}/results\"\n summary=\"Get per-field resolution results showing original and resolved values.\"\n description=\"Requires read scope. Returns the resolved data for all documents in the resolution run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"document_id\": \"doc_abc123\",\n \"field_name\": \"country\",\n \"original_value\": \"Deutschland\",\n \"resolved_value\": \"DE\",\n \"resolution_step\": \"lookup\",\n \"confidence\": 0.98\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"execute-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/resolutions/{id}/execute\"\n summary=\"Execute the resolution pipeline on all pending fields.\"\n description=\"Requires write scope. Returns immediately — poll the run for progress.\"\n />\n </div>\n\n <div id=\"delete-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/resolutions/{id}\"\n summary=\"Delete a resolution run and its results.\"\n description=\"Requires write scope.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n LINKING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"linking\">Linking</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The linking graph connects documents through shared entity values — an invoice\n and a contract sharing the same customer ID are linked. The API exposes the\n bipartite document-entity graph: link keys (field-level entity identifiers),\n document-level links, the full graph, document-centric subgraphs, classification\n (identity, transaction, reference), backfill, and document-to-case mapping.\n </p>\n\n <div id=\"list-link-keys\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/link-keys\"\n summary=\"List all discovered link keys with their classification category and frequency.\"\n description=\"Requires read scope. Returns all configured link keys (field-level entity identifiers used for document linking).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"field_name\": \"customer_id\",\n \"category\": \"identity\",\n \"auto_classified\": true,\n \"frequency\": 0.85\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-links\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/documents/{id}/links\"\n summary=\"Get all links for a specific document.\"\n description=\"Requires read scope. Returns all entity links discovered for a specific document.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"entity_value\": \"Acme Corp\",\n \"entity_type\": \"vendor\",\n \"link_key\": \"vendor_name\",\n \"linked_document_ids\": [\"uuid\", \"uuid\"]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-linking-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/graph\"\n summary=\"Get the full document linking graph as nodes and edges.\"\n description=\"Requires read scope. Returns the bipartite document-entity graph for the customer. Can be large for workspaces with many documents.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"nodes\": [...],\n \"edges\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/graph/documents/{id}\"\n summary=\"Get the graph neighbourhood for a single document.\"\n description=\"Requires read scope. Returns the subgraph of entities and linked documents for a specific document.\"\n >\n <ParamTable params={[\n { name: 'depth', type: 'integer', required: false, description: 'Graph traversal depth (default 2).' },\n ]} />\n </EndpointBlock>\n </div>\n\n <div id=\"classify-link-keys\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/linking/classify\"\n summary=\"Classify link keys into categories using AI.\"\n description=\"Requires write scope. Runs AI classification on ambiguous fields to determine their link key category (identity, transaction, reference). Runs asynchronously.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"classified\": 12,\n \"results\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"backfill-linking\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/linking/backfill\"\n summary=\"Backfill link values across all documents.\"\n description=\"Requires write scope. Triggers a backfill of the linking graph for all documents — useful after link key configuration changes. Returns 202; poll progress via the backfill progress endpoint.\"\n >\n <CodeBlock title=\"Response (202)\">\n{`{\n \"status\": \"started\",\n \"message\": \"Backfill queued.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"backfill-progress\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/backfill/progress\"\n summary=\"Get backfill progress.\"\n description=\"Requires read scope. Returns the current progress of an in-flight backfill operation.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"status\": \"running\",\n \"processed\": 187,\n \"total\": 540,\n \"started_at\": \"2024-09-14T10:32:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"document-case-map\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/document-case-map\"\n summary=\"Get the mapping of documents to their resolved cases.\"\n description=\"Requires read scope. Returns a mapping of document IDs to their assigned case keys.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": {\n \"doc_uuid_1\": \"case_x7k9m2\",\n \"doc_uuid_2\": \"case_x7k9m2\"\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n N-SHOT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"nshot\">N-Shot</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n N-Shot endpoints provide field-level comparisons between job runs — useful for\n evaluating extraction quality across schema versions. Submit judge decisions\n (human or AI) to record which run produced the better result. All routes are\n nested under <InlineCode>/v1/jobs/runs/{'{runId}'}/nshot/...</InlineCode>.\n </p>\n\n <div id=\"nshot-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/summary\"\n summary=\"Get an aggregate N-Shot summary for a run.\"\n description=\"Requires read scope. Returns an aggregate summary of N-Shot comparisons for a job run.\"\n />\n </div>\n\n <div id=\"nshot-comparisons\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/comparisons\"\n summary=\"List per-document field comparisons.\"\n description=\"Requires read scope. Returns all N-Shot comparisons for a job run.\"\n />\n </div>\n\n <div id=\"nshot-comparison\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/comparison\"\n summary=\"Get a specific field comparison.\"\n description=\"Requires read scope. Returns a single N-Shot comparison filtered by document and field.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID to compare.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name to compare.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"nshot-override\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/runs/{runId}/nshot/override\"\n summary=\"Override an N-Shot value for a specific field.\"\n description=\"Requires write scope. Manually override the N-Shot selected value for a document-field pair.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name.' },\n { name: 'value', type: 'any', required: true, description: 'The override value to apply.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"nshot-judge-decision\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/runs/{runId}/nshot/judge-decision\"\n summary=\"Submit a judge decision (human or AI) for an N-Shot comparison.\"\n description=\"Requires write scope. Records which N-Shot candidate is correct.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name.' },\n { name: 'decision', type: 'string', required: true, description: \"The judge's selected value or verdict.\" },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMA GRAPH\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schema-graph\">Schema Graph</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The schema graph is a versioned ontology of document classes discovered across\n your workspace. Each class captures a document type's canonical fields.\n The API exposes versioned classes, diffs proposed between versions (with\n approve/reject workflow), inter-class edges, aliases, and a D3-compatible\n visualization payload.\n </p>\n\n <div id=\"list-schema-graph-classes\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes\"\n summary=\"List all schema graph classes.\"\n description=\"Requires read scope. Returns all classes in the schema graph ontology.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"name\": \"Invoice\",\n \"description\": \"Standard invoice schema\",\n \"version\": 3,\n \"field_count\": 12,\n \"created_at\": \"2024-08-01T00:00:00Z\",\n \"updated_at\": \"2024-09-14T00:00:00Z\",\n \"links\": { \"self\": \"/v1/schema-graph/classes/uuid\", \"versions\": \"/v1/schema-graph/classes/uuid/versions\" }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-schema-graph-class\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}\"\n summary=\"Get a schema graph class with its current field definitions.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"list-class-versions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}/versions\"\n summary=\"List all versions of a schema graph class.\"\n description=\"Requires read scope. Returns all published versions of a class, ordered by version number descending.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"version\": 3,\n \"fields\": [...],\n \"created_at\": \"2024-09-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-class-version\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}/versions/{version}\"\n summary=\"Get a specific version of a schema graph class.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"list-schema-graph-diffs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/diffs\"\n summary=\"List pending, approved, and rejected diffs.\"\n description=\"Requires read scope. Returns pending and processed diffs between class versions.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"class_id\": \"uuid\",\n \"from_version\": 2,\n \"to_version\": 3,\n \"status\": \"pending\",\n \"changes\": [...],\n \"created_at\": \"2024-09-14T10:00:00Z\",\n \"decided_at\": null\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"approve-diff\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schema-graph/diffs/{id}/approve\"\n summary=\"Approve a pending diff, promoting it to the next class version.\"\n description=\"Requires write scope. Promotes the changes to the live class version.\"\n />\n </div>\n\n <div id=\"reject-diff\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schema-graph/diffs/{id}/reject\"\n summary=\"Reject a pending diff.\"\n description=\"Requires write scope. Discards the proposed changes.\"\n />\n </div>\n\n <div id=\"list-schema-graph-edges\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/edges\"\n summary=\"List inter-class edges in the schema graph.\"\n description=\"Requires read scope. Returns all edges (relationships) between schema graph classes.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"source_class_id\": \"uuid\",\n \"target_class_id\": \"uuid\",\n \"relationship\": \"references\",\n \"weight\": 0.87\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-schema-graph-aliases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/aliases\"\n summary=\"List schema graph class aliases.\"\n description=\"Requires read scope. Returns all class aliases (alternative names mapping to canonical class IDs).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"alias\": \"Bill\", \"class_id\": \"uuid\", \"class_name\": \"Invoice\" }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"visualize-schema-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/visualize\"\n summary=\"Get D3-compatible visualization data for the schema graph.\"\n description=\"Requires read scope. Returns nodes and edges formatted for graph visualization.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n STRUCTURING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"structuring\">Structuring</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The structuring pipeline validates extracted data through configurable checks\n and approval gates. Checks define validation rules; gates aggregate checks and\n determine whether records require manual approval before delivery. Also exposes\n per-result check outcomes, the pending-approvals queue, approve/reject actions,\n and the manual delivery trigger for an approved run.\n </p>\n\n <SubHeading id=\"structuring-checks\">Checks</SubHeading>\n\n\n <div id=\"list-structuring-checks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/checks\"\n summary=\"List validation checks.\"\n description=\"Requires read scope. Returns all configured validation checks for the customer.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of items to return (1–100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order by creation date (asc | desc).' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"create-structuring-check\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/checks\"\n summary=\"Create a validation check.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Check name.' },\n { name: 'description', type: 'string', description: 'Optional description.' },\n { name: 'type', type: 'string', required: true, description: 'Check type: field_format, value_range, cross_field, ai_coherence.' },\n { name: 'config', type: 'object', description: 'Type-specific configuration.' },\n { name: 'enabled', type: 'boolean', default: 'true', description: 'Whether the check runs against new results.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"name\": \"Amount range check\",\n \"type\": \"value_range\",\n \"config\": {\n \"field\": \"total_amount\",\n \"min\": 0,\n \"max\": 1000000\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-structuring-check\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/checks/{id}\"\n summary=\"Get / update / delete a structuring check.\"\n description=\"Same path supports GET (detail, requires read scope), PUT (update — same body shape as create, requires write scope), and DELETE (requires write scope).\"\n />\n </div>\n\n <SubHeading id=\"structuring-gates\">Approval Gates</SubHeading>\n\n\n <div id=\"list-structuring-gates\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/gates\"\n summary=\"List approval gates.\"\n description=\"Requires read scope. Returns all configured approval gates for the customer.\"\n />\n </div>\n\n <div id=\"create-structuring-gate\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/gates\"\n summary=\"Create an approval gate.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Gate name.' },\n { name: 'description', type: 'string', description: 'Optional description.' },\n { name: 'schema_id', type: 'uuid', description: 'Optional schema scope for the gate.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"get-structuring-gate\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/gates/{id}\"\n summary=\"Get / update / delete an approval gate.\"\n description=\"Same path supports GET (detail with rules, requires read scope), PUT (update, requires write scope), and DELETE (requires write scope).\"\n />\n </div>\n\n <div id=\"gate-rules\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/gates/{id}/rules\"\n summary=\"Add a rule to an approval gate.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'type', type: 'string', required: true, description: 'Rule type (e.g. min_confidence, validation_pass_rate, field_coverage).' },\n { name: 'threshold', type: 'number', required: true, description: 'Numeric threshold value.' },\n ]}\n />\n </EndpointBlock>\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/structuring/gates/{gateId}/rules/{ruleId}\"\n summary=\"Remove a rule from an approval gate.\"\n description=\"Requires write scope. Soft-deletes a rule. Both identifiers come from the path; no request body.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'gateId', type: 'uuid', required: true, description: 'Parent approval gate identifier.' },\n { name: 'ruleId', type: 'uuid', required: true, description: 'Rule identifier to remove.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"result-checks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/results/{id}/checks\"\n summary=\"Get check results for a structuring result.\"\n description=\"Requires read scope. Returns the validation check outcomes for a specific structuring result.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"check_id\": \"uuid\",\n \"check_name\": \"vendor_present\",\n \"passed\": true,\n \"message\": null\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"pending-approvals\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/approvals/pending\"\n summary=\"List pending approvals.\"\n description=\"Requires read scope. Returns structuring results awaiting manual approval.\"\n />\n </div>\n\n <div id=\"approve-reject-result\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/approvals/{id}/approve\"\n summary=\"Approve / reject a structuring result.\"\n description=\"Requires write scope. POST /approve approves the result; POST /reject rejects it. Both return { id, status }.\"\n />\n </div>\n\n <div id=\"trigger-delivery\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/delivery/{runId}\"\n summary=\"Trigger delivery for a structuring run.\"\n description=\"Requires write scope. Emit delivery signals for all approved results in the run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"delivered\": 142,\n \"skipped\": 8\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n TELEMETRY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"telemetry\">Telemetry</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Telemetry endpoints aggregate structuring metrics (capture hit rate, synthesize\n rate, strategy distribution, tier funnel) per schema or per run.\n </p>\n\n <div id=\"schema-telemetry-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/summary\"\n summary=\"Get aggregate metrics for a schema across all runs.\"\n description=\"Requires read scope. Aggregate structuring metrics for a schema — capture hit rate, synthesize rate, strategy distribution, tier funnel.\"\n />\n </div>\n\n <div id=\"schema-telemetry-trend\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/trend\"\n summary=\"Get metric trends over time for a schema.\"\n description=\"Requires read scope. Time-series telemetry data for a schema over recent runs.\"\n />\n </div>\n\n <div id=\"schema-telemetry-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/fields\"\n summary=\"Get per-field structuring metrics for a schema.\"\n description=\"Requires read scope. Field-level structuring metrics — per-field state distribution, capture rates, and strategy breakdown.\"\n />\n </div>\n\n <div id=\"run-telemetry-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/runs/{id}/summary\"\n summary=\"Get structuring metrics for a single run.\"\n description=\"Requires read scope. Aggregate structuring metrics for a specific job run.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n VALIDATION\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"validation\">Validation</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Validation runs measure extraction accuracy against ground-truth datasets.\n Manage datasets and runs, and retrieve per-document and per-field accuracy\n results. Create a ground-truth set, then run validations to compare extracted\n values against expected values.\n </p>\n\n <SubHeading id=\"ground-truth-datasets\">Ground-Truth Datasets</SubHeading>\n\n <div id=\"list-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/ground-truth\"\n summary=\"List ground-truth datasets.\"\n description=\"Requires read scope. Returns all ground-truth datasets for the customer.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"name\": \"Invoice Validation Set\",\n \"description\": \"50 manually verified invoices\",\n \"sample_count\": 50,\n \"created_at\": \"2024-08-01T00:00:00Z\",\n \"links\": { \"self\": \"/v1/validation/ground-truth/uuid\" }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/ground-truth/{id}\"\n summary=\"Get / delete a ground-truth dataset.\"\n description=\"Same path supports GET (detail with expected values, requires read scope) and DELETE (requires write scope).\"\n />\n </div>\n\n <SubHeading id=\"validation-runs\">Validation Runs</SubHeading>\n\n\n <div id=\"list-validation-runs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs\"\n summary=\"List validation runs.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"create-validation-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/validation/runs\"\n summary=\"Create a validation run comparing a job against a ground-truth dataset.\"\n description=\"Requires write scope. Starts a new validation run against a ground-truth dataset.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'golden_sample_id', type: 'uuid', required: true, description: 'Ground-truth dataset to validate against (column name retained for backwards compatibility).' },\n { name: 'dataspace_run_id', type: 'uuid', description: 'Optional job run to validate.' },\n { name: 'schema_id', type: 'uuid', description: 'Optional schema to scope the validation.' },\n { name: 'name', type: 'string', description: 'Optional human-readable name.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"dataspace_run_id\": \"run_abc123\",\n \"golden_sample_id\": \"gs_xyz789\",\n \"name\": \"Q1 Invoice accuracy check\"\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"golden_sample_id\": \"uuid\",\n \"schema_id\": \"uuid\",\n \"status\": \"pending\",\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"links\": { \"self\": \"/v1/validation/runs/uuid\", \"results\": \"/v1/validation/runs/uuid/results\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-validation-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs/{id}\"\n summary=\"Get / delete a validation run.\"\n description=\"Same path supports GET (detail with accuracy summary, requires read scope) and DELETE (requires write scope).\"\n />\n </div>\n\n <div id=\"get-validation-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs/{id}/results\"\n summary=\"Get per-field validation results.\"\n description=\"Requires read scope. Returns per-document and per-field accuracy results for the validation run.\"\n >\n <ParamTable params={[\n { name: 'judged_only', type: 'string', required: false, description: 'Set to \"true\" to return only judged results.' },\n ]} />\n <CodeBlock title=\"Response\">\n{`{\n \"accuracy_overall\": 0.94,\n \"accuracy_by_field\": { \"vendor_name\": 0.98, \"total\": 0.91 },\n \"results\": [\n {\n \"document_id\": \"doc_abc123\",\n \"field_name\": \"invoice_number\",\n \"expected_value\": \"INV-2024-0042\",\n \"actual_value\": \"INV-2024-0042\",\n \"match_type\": \"exact\",\n \"similarity_score\": 1.0,\n \"judge_verdict\": \"correct\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n CREDITS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"credits\">Credits</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Credit endpoints expose the current balance, transaction history, aggregate\n usage summaries, daily usage, and a per-request usage log with model and token\n counts. Track credit balance and usage breakdowns by operation type and time\n period.\n </p>\n\n <div id=\"credits-balance\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/balance\"\n summary=\"Get current credit balance.\"\n description=\"Requires read scope. Returns the current credit balance for the authenticated customer.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"balance\": 4250.00,\n \"currency\": \"USD\",\n \"as_of\": \"2026-04-27T12:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-history\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/history\"\n summary=\"Get credit transaction history.\"\n description=\"Requires read scope. Returns credit transaction history (purchases, deductions, adjustments).\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', required: false, description: 'Max items to return (default 20).' },\n { name: 'cursor', type: 'string', required: false, description: 'Pagination cursor.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"type\": \"deduction\",\n \"amount\": -0.18,\n \"description\": \"Extraction: doc_3j7x9p2q\",\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage\"\n summary=\"Get aggregate credit usage summary by feature.\"\n description=\"Requires read scope. Returns aggregate credit usage broken down by feature.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', description: 'Start of the period (ISO 8601, default 30 days ago).' },\n { name: 'to', type: 'string', description: 'End of the period (ISO 8601, default now).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"total_used\": 18.42,\n \"breakdown\": [\n { \"feature\": \"extraction\", \"credits_used\": 12.30, \"call_count\": 1842 },\n { \"feature\": \"matching\", \"credits_used\": 6.12, \"call_count\": 920 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage-daily\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage/daily\"\n summary=\"Get daily credit usage breakdown.\"\n description=\"Requires read scope. Returns per-day credit usage for the specified period (default last 30 days).\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', description: 'Start of the period (ISO 8601).' },\n { name: 'to', type: 'string', description: 'End of the period (ISO 8601).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"date\": \"2024-09-14\", \"credits_used\": 0.62, \"call_count\": 87 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage-log\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage/log\"\n summary=\"Get per-request usage log with token counts and cost estimates.\"\n description=\"Requires read scope. Returns a detailed per-request usage log with model, tokens, and cost.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', required: false, description: 'Max items to return (default 50).' },\n { name: 'cursor', type: 'string', required: false, description: 'Pagination cursor.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"operation_type\": \"extraction\",\n \"model\": \"claude-sonnet\",\n \"input_tokens\": 4280,\n \"output_tokens\": 612,\n \"cost_credits\": 0.012,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n BILLING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"billing\">Billing</SectionHeading>\n\n <SubHeading id=\"billing-settings\">Settings</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Manage auto top-up configuration. When enabled, your credit balance is automatically replenished when it falls below the threshold.\n </p>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/billing/settings\"\n summary=\"Get billing settings.\"\n description=\"Returns the current auto top-up configuration for your organization.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{\n \"auto_topup_enabled\": true,\n \"auto_topup_threshold\": 1000,\n \"auto_topup_amount\": 5000\n}`}\n </CodeBlock>\n </EndpointBlock>\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/billing/settings\"\n summary=\"Update billing settings.\"\n description=\"Update auto top-up configuration. All fields are optional.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'auto_topup_enabled', type: 'boolean', description: 'Enable or disable automatic top-up.' },\n { name: 'auto_topup_threshold', type: 'number', description: 'Credit balance threshold that triggers a top-up. Minimum: 1000.' },\n { name: 'auto_topup_amount', type: 'number', description: 'Number of credits to add on each top-up. Minimum: 1000.' },\n ]}\n />\n </EndpointBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n AGENT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"agent\">Agent</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The Agent API provides programmatic access to the same AI assistant capabilities\n available in the Talonic platform UI. Use the context endpoint to retrieve a\n comprehensive workspace snapshot, and the tools endpoint to discover all available\n agent capabilities.\n </p>\n\n <div id=\"agent-context\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/agent/context\"\n summary=\"Returns a comprehensive workspace overview including document stats, schemas, active runs, field registry summary, and recent activity.\"\n description=\"Requires read scope. Use this endpoint to build dashboards or provide context to external AI integrations.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"organizationName\": \"Phoenix\",\n \"documents\": {\n \"total\": 810,\n \"completedThisWeek\": 155,\n \"completedLast24h\": 42,\n \"processing\": 3\n },\n \"documentTypes\": [\n { \"id\": \"uuid\", \"name\": \"Invoice\", \"documentCount\": 320 }\n ],\n \"schemas\": [\n { \"id\": \"uuid\", \"name\": \"Invoice Header\", \"fieldCount\": 12, \"version\": 3 }\n ],\n \"activeRuns\": [\n { \"id\": \"uuid\", \"name\": \"Schema_V13\", \"status\": \"extraction\", \"documentCount\": 142 }\n ],\n \"fieldRegistry\": {\n \"totalFields\": 245,\n \"tier1\": 80,\n \"tier2\": 120,\n \"tier3\": 45\n },\n \"recentActivity\": [\n {\n \"type\": \"user_uploaded\",\n \"message\": \"42 documents uploaded\",\n \"timestamp\": \"2026-04-25T09:30:00Z\",\n \"actor\": \"Avi\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"agent-tools\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/agent/tools\"\n summary=\"Lists all tools available to the embedded agent, including their impact level and description.\"\n description=\"Requires read scope. Each tool declares whether it performs a read or write operation.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"tools\": [\n {\n \"name\": \"list_schemas\",\n \"impact\": \"read\",\n \"description\": \"Lists all user-defined schemas.\"\n }\n ],\n \"totalCount\": 35\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n ERRORS & RATE LIMITS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"errors-rate-limits\">Errors & Rate Limits</SectionHeading>\n\n <SubHeading id=\"error-format\">Error Format</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All errors return a consistent JSON structure with a machine-readable code and a\n human-readable message.\n </p>\n\n <CodeBlock title=\"Error response shape\">\n{`{\n \"error\": {\n \"code\": \"invalid_schema\",\n \"message\": \"Schema definition is missing required 'type' field at path 'line_items.items'.\",\n \"status\": 400,\n \"retryable\": false,\n \"request_id\": \"req_x7y8z9a0\"\n }\n}`}\n </CodeBlock>\n\n <SubHeading id=\"error-codes\">Error Codes</SubHeading>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider w-[80px]\">Status</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Code</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n {[\n { status: '400', code: 'bad_request', desc: 'The request body is malformed or missing required fields.' },\n { status: '400', code: 'invalid_schema', desc: 'The schema definition is invalid or contains unsupported types.' },\n { status: '400', code: 'invalid_file', desc: 'The uploaded file is corrupt, empty, or in an unsupported format.' },\n { status: '401', code: 'unauthorized', desc: 'Missing or invalid API key.' },\n { status: '403', code: 'forbidden', desc: 'The API key does not have permission for this operation.' },\n { status: '404', code: 'not_found', desc: 'The requested resource does not exist.' },\n { status: '409', code: 'conflict', desc: 'The resource has been modified. Retry with the latest version.' },\n { status: '413', code: 'file_too_large', desc: 'The uploaded file exceeds the 50 MB per-request limit (up to 5 GB via source connectors).' },\n { status: '422', code: 'unprocessable', desc: 'The document could not be parsed. Try a different file format.' },\n { status: '429', code: 'rate_limited', desc: 'Rate limit exceeded. Check response headers for reset time.' },\n { status: '500', code: 'internal_error', desc: 'An unexpected error occurred. This is retryable.' },\n { status: '503', code: 'service_unavailable', desc: 'The service is temporarily unavailable. Retry with backoff.' },\n ].map((row, i) => (\n <tr key={i} className={i > 0 ? 'border-t border-void-border' : ''}>\n <td className=\"px-4 py-3 font-mono text-[13px] text-void-text-muted\">{row.status}</td>\n <td className=\"px-4 py-3 font-mono text-[13px]\">{row.code}</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">{row.desc}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n <SubHeading id=\"rate-limits\">Rate Limits</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n API rate limits depend on your plan tier. Limits are applied per API key on a\n rolling daily window (UTC midnight reset).\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Plan</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Extractions / day</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Burst rate</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Max file size</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 text-[13px] font-medium\">Free</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">50</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">5 / min</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">10 MB</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px] font-medium\">Pro</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">2,000</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">30 / min</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">50 MB</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px] font-medium\">Enterprise</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Unlimited</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Custom</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Custom</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-3\">\n Every API response includes rate limit headers:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Header</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Limit</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Maximum number of requests allowed in the current window.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Remaining</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Number of requests remaining in the current window.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Reset</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unix timestamp when the rate limit window resets.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <CodeBlock language=\"bash\" title=\"Rate limit headers example\">\n{`HTTP/1.1 200 OK\nX-RateLimit-Limit: 2000\nX-RateLimit-Remaining: 1847\nX-RateLimit-Reset: 1726358400`}\n </CodeBlock>\n\n <Callout>\n When you receive a <InlineCode>429</InlineCode> response, wait until\n the <InlineCode>X-RateLimit-Reset</InlineCode> timestamp before retrying.\n Implement exponential backoff for the best experience.\n </Callout>\n\n {/* Footer spacer */}\n <div className=\"h-24\" />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport DownloadMarkdown from '../components/DownloadMarkdown';\nimport { Sidebar } from '../components/Sidebar';\nimport type { LinkComponent } from '../components/Sidebar';\nimport {\n SectionHeading,\n SubHeading,\n InlineCode,\n Callout,\n P,\n ParamTable,\n UiExcerpt,\n TierBadge,\n CellDot,\n MockNavItem,\n PipelineStage,\n PipelineConnector,\n} from '../components/DocPrimitives';\nimport type { NavSection } from '../components/DocPrimitives';\n\n/* ═══════════════════════════════════════════════════════════════════════════\n TALONIC PLATFORM DOCUMENTATION\n A single-file, self-contained platform guide in the same style as the\n API reference page. Includes visual UI excerpts rendered as HTML.\n ═══════════════════════════════════════════════════════════════════════════ */\n\n// ---------------------------------------------------------------------------\n// Navigation structure\n// ---------------------------------------------------------------------------\n\nconst NAV_SECTIONS: NavSection[] = [\n {\n id: 'overview',\n label: 'Overview',\n children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'core-concepts', label: 'Core Concepts' },\n { id: 'platform-flow', label: 'Platform Flow' },\n { id: 'getting-started', label: 'Getting Started' },\n ],\n },\n {\n id: 'agent',\n label: 'AI Agent',\n children: [\n { id: 'agent-capabilities', label: 'Capabilities' },\n { id: 'agent-impact', label: 'Impact Levels' },\n { id: 'agent-dashboard', label: 'Dashboard' },\n ],\n },\n {\n id: 'sources-docs',\n label: 'Inputs & Documents',\n children: [\n { id: 'uploading', label: 'Uploading Documents' },\n { id: 'supported-formats', label: 'Supported Formats' },\n { id: 'document-processing', label: 'Document Processing' },\n { id: 'document-types', label: 'Document Types' },\n { id: 'document-detail', label: 'Document Detail' },\n { id: 'routing-rules', label: 'Routing Rules' },\n ],\n },\n {\n id: 'field-intelligence',\n label: 'Field Intelligence',\n children: [\n { id: 'field-registry', label: 'Field Registry' },\n { id: 'tier-system', label: 'Tier System' },\n { id: 'semantic-clusters', label: 'Semantic Clusters' },\n { id: 'field-resolution', label: 'Field Resolution' },\n { id: 'master-instructions', label: 'Master Instructions' },\n ],\n },\n {\n id: 'schemas-templates',\n label: 'Schemas & Templates',\n children: [\n { id: 'generated-schemas', label: 'Generated Schemas' },\n { id: 'user-templates', label: 'User Templates' },\n { id: 'schema-features', label: 'Schema Features Reference' },\n { id: 'field-matching', label: 'Field Matching' },\n { id: 'reference-tables', label: 'Reference Tables' },\n { id: 'versioning-drafts', label: 'Versioning & Drafts' },\n { id: 'test-extraction', label: 'Test Extraction' },\n { id: 'dialects', label: 'Dialects' },\n { id: 'bypass-strategies', label: 'Bypass Strategies' },\n { id: 'format-constraints', label: 'Format Constraints' },\n ],\n },\n {\n id: 'extraction-jobs',\n label: 'Extraction Jobs',\n children: [\n { id: 'creating-job', label: 'Creating a Job' },\n { id: 'pipeline-overview', label: '4-Phase Pipeline' },\n { id: 'phase-1', label: 'Phase 1: Resolve' },\n { id: 'phase-2', label: 'Phase 2: Agent' },\n { id: 'phase-3', label: 'Phase 3: Validation' },\n { id: 'phase-4', label: 'Phase 4: Re-read' },\n { id: 'reviewing-results', label: 'Reviewing Results' },\n { id: 'confidence-provenance', label: 'Confidence & Provenance' },\n { id: 'corrections', label: 'Corrections' },\n ],\n },\n {\n id: 'batch-inference',\n label: 'Batch Inference',\n children: [\n { id: 'batch-overview', label: 'Overview' },\n { id: 'batch-processing', label: 'Batch Processing Mode' },\n { id: 'batch-monitoring', label: 'Monitoring Batches' },\n ],\n },\n {\n id: 'matching',\n label: 'Smart Matching',\n children: [\n { id: 'reference-data', label: 'Reference Data' },\n { id: 'matching-configs', label: 'Matching Configurations' },\n { id: 'matching-runs', label: 'Running Matches' },\n { id: 'matching-results', label: 'Match Results' },\n ],\n },\n {\n id: 'linking-cases',\n label: 'Linking & Cases',\n children: [\n { id: 'link-keys', label: 'Link Keys' },\n { id: 'entity-linking', label: 'Entity Linking' },\n { id: 'cases', label: 'Cases' },\n { id: 'document-graph', label: 'Document Graph' },\n ],\n },\n {\n id: 'data-products',\n label: 'Data Products',\n children: [\n { id: 'dataset-templates', label: 'Dataset Templates' },\n { id: 'assemblies', label: 'Assemblies' },\n ],\n },\n {\n id: 'validation-quality',\n label: 'Validation & Quality',\n children: [\n { id: 'validation-checks', label: 'Validation Checks' },\n { id: 'ground-truth', label: 'Golden Samples' },\n { id: 'approval-gates', label: 'Approval Gates' },\n { id: 'approval-queue', label: 'Approval Queue' },\n ],\n },\n {\n id: 'delivery',\n label: 'Delivery',\n children: [\n { id: 'delivery-pipeline', label: 'How Delivery Works' },\n { id: 'destinations', label: 'Destinations' },\n { id: 'bindings', label: 'Bindings' },\n { id: 'signals-catalog', label: 'Signals & Catalog' },\n { id: 'delivery-history', label: 'History & DLQ' },\n ],\n },\n {\n id: 'search-filtering',\n label: 'Search & Filtering',\n children: [\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'document-filters', label: 'Document Filters' },\n ],\n },\n {\n id: 'api-webhooks',\n label: 'API & Webhooks',\n children: [\n { id: 'api-keys', label: 'API Keys' },\n { id: 'public-api', label: 'Public API' },\n { id: 'webhooks', label: 'Webhooks' },\n ],\n },\n {\n id: 'team-admin',\n label: 'Team & Admin',\n children: [\n { id: 'team-management', label: 'Team Management' },\n { id: 'usage-registry', label: 'Usage & Registry' },\n { id: 'admin-panel', label: 'Admin Panel' },\n { id: 'shortcuts', label: 'Keyboard Shortcuts' },\n ],\n },\n];\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\n/** Comprehensive platform guide covering every feature of the Talonic platform. */\nexport function PlatformGuide({ LinkComponent }: { LinkComponent?: LinkComponent }) {\n const LinkComp = LinkComponent || ((props: any) => <a {...props} />);\n\n const [activeId, setActiveId] = useState('introduction');\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const mainRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const allIds = NAV_SECTIONS.flatMap((s) => s.children ? s.children.map((c) => c.id) : [s.id]);\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n if (visible.length > 0) setActiveId(visible[0].target.id);\n },\n { rootMargin: '-80px 0px -60% 0px', threshold: 0 },\n );\n allIds.forEach((id) => { const el = document.getElementById(id); if (el) observer.observe(el); });\n return () => observer.disconnect();\n }, []);\n\n const handleNavigate = useCallback((id: string) => {\n const el = document.getElementById(id);\n if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, []);\n\n return (\n <div className=\"flex min-h-full\">\n <Sidebar\n title=\"Platform Guide\"\n sections={NAV_SECTIONS}\n activeId={activeId}\n onNavigate={handleNavigate}\n mobileOpen={mobileNavOpen}\n onMobileClose={() => setMobileNavOpen(false)}\n footerLinks={[{ label: 'API Documentation', href: '/docs' }]}\n LinkComponent={LinkComp}\n />\n\n {/* Mobile toggle */}\n <button onClick={() => setMobileNavOpen(true)} className=\"fixed bottom-5 right-5 z-30 lg:hidden p-3 rounded-full bg-void-accent text-white shadow-lg hover:shadow-xl transition-shadow\" aria-label=\"Open navigation\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" /><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" /></svg>\n </button>\n\n {/* Main content */}\n <div ref={mainRef} className=\"flex-1 min-w-0 px-6 sm:px-10 lg:px-16 py-6 max-w-[860px]\">\n\n {/* ═══════════════════════════════════════════════════════════════\n INTRODUCTION\n ═══════════════════════════════════════════════════════════════ */}\n <div id=\"introduction\" className=\"scroll-mt-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <h1 className=\"text-[32px] font-bold text-void-text-primary leading-tight mb-3\" style={{ fontFamily: 'Space Grotesk, sans-serif' }}>\n Platform Guide\n </h1>\n <DownloadMarkdown contentRef={mainRef} filename=\"talonic-platform-guide.md\" />\n </div>\n <p className=\"text-[17px] text-void-text-secondary leading-relaxed max-w-[600px]\">\n Transform unstructured documents into structured, validated data — with per-cell provenance and AI reasoning traces.\n </p>\n\n <div className=\"mt-8 flex flex-col sm:flex-row gap-4\">\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Supported Formats</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">25+ file types</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Resolution</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">4-phase pipeline</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Instant Matches</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">~30% of cells (free)</span>\n </div>\n </div>\n </div>\n\n {/* ─── CORE CONCEPTS ───────────────────────────────────────────── */}\n <SubHeading id=\"core-concepts\">Core Concepts</SubHeading>\n\n <P>\n The platform revolves around a small set of interconnected concepts. Understanding these\n will help you navigate every feature.\n </P>\n\n <ParamTable\n params={[\n { name: 'Source', type: 'entry point', description: 'Where documents come from — manual upload, folder, Google Drive, or API connection.' },\n { name: 'Document', type: 'unit of data', description: 'A single uploaded file. Talonic extracts text, classifies the type, and captures every data point.' },\n { name: 'Field', type: 'data point', description: 'A single piece of structured data discovered in a document: a date, a name, an amount, a clause.' },\n { name: 'Field Registry', type: 'knowledge graph', description: 'The unified graph of all canonical fields — organized by tier, clustered semantically, with master extraction instructions.' },\n { name: 'Schema', type: 'output definition', description: 'AI-generated per document type (Generated), or user-defined for specific output needs (Template).' },\n { name: 'Job', type: 'execution', description: 'A schema applied to a set of documents. Produces a structured grid: rows = documents, columns = fields.' },\n { name: 'Case', type: 'document group', description: 'Related documents connected through shared entities (names, reference numbers, project codes).' },\n { name: 'Provenance', type: 'audit trail', description: 'Per-cell metadata: which phase filled it, confidence score, reasoning trace, source references.' },\n ]}\n />\n\n {/* ─── PLATFORM FLOW ───────────────────────────────────────────── */}\n <SubHeading id=\"platform-flow\">Platform Flow</SubHeading>\n\n <P>Documents flow through the platform in a clear pipeline. Each stage produces outputs that feed the next.</P>\n\n <UiExcerpt title=\"Dashboard — Pipeline Progress\" caption=\"The Dashboard shows your pipeline progress across five stages. Completed stages show a purple checkmark.\">\n <div className=\"flex items-center justify-center gap-0 py-3\">\n <PipelineStage label=\"Documents\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Fields\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Schema\" state=\"done\" />\n <PipelineConnector />\n <PipelineStage label=\"Results\" state=\"active\" />\n <PipelineConnector />\n <PipelineStage label=\"Quality\" state=\"pending\" />\n </div>\n </UiExcerpt>\n\n <div className=\"my-6 space-y-2\">\n {[\n { n: '1', label: 'Upload', desc: 'Drag files or folders into Sources. 25+ formats supported. ZIP archives are unpacked automatically.' },\n { n: '2', label: 'Extract', desc: 'Each document is processed through Document AI (OCR + annotation), classified against the document type ontology, and sent to AI for exhaustive field extraction.' },\n { n: '3', label: 'Graph builds', desc: 'Extracted fields resolve into the Field Registry — canonical names, clusters, master instructions.' },\n { n: '4', label: 'Define schema', desc: 'Create a template with the fields you need. Map to registry, add reference tables.' },\n { n: '5', label: 'Run job', desc: '4-phase pipeline fills every cell. ~30% from graph matches (instant), ~70% from AI agents.' },\n { n: '6', label: 'Review & approve', desc: 'Review with confidence indicators, provenance, and validation flags. Correct any values.' },\n { n: '7', label: 'Deliver', desc: 'Push approved data to webhooks, REST APIs, SFTP, email, or cloud storage.' },\n ].map(({ n, label, desc }) => (\n <div key={n} className=\"flex gap-4\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">{n}</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary\">{label}</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">{desc}</p>\n </div>\n </div>\n ))}\n </div>\n\n {/* ─── GETTING STARTED ─────────────────────────────────────────── */}\n <SubHeading id=\"getting-started\">Getting Started</SubHeading>\n\n <P>\n Navigate using the sidebar. The platform is organized into three primary sections:\n <strong> Sources</strong> (ingest), <strong>Structuring</strong> (process & validate),\n and <strong>Outputs</strong> (deliver).\n </P>\n\n <UiExcerpt title=\"Sidebar Navigation\" caption=\"The sidebar provides access to all sections. Click the collapse button to save space. Press Cmd+K for global search.\">\n <div className=\"w-48 border border-void-border rounded-lg bg-void-bg p-3 space-y-0.5\">\n <MockNavItem label=\"Dashboard\" />\n <MockNavItem label=\"Sources\" active />\n <MockNavItem label=\"Documents\" indent />\n <MockNavItem label=\"Field Registry\" indent />\n <MockNavItem label=\"Structuring\" />\n <MockNavItem label=\"Schemas\" indent />\n <MockNavItem label=\"Cases\" indent />\n <MockNavItem label=\"Runs\" indent />\n <MockNavItem label=\"Validation\" indent />\n <MockNavItem label=\"Outputs\" />\n </div>\n </UiExcerpt>\n\n <Callout>\n The fastest path to results: upload documents in <strong>Sources</strong>, then go to{' '}\n <strong>Structuring → Runs → New</strong> to create your first extraction job.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n AI AGENT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"agent\">AI Agent</SectionHeading>\n\n <P>\n Talonic includes an embedded AI agent accessible from every page via{' '}\n <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">⌘I</kbd>{' '}\n (<kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">Ctrl+I</kbd> on Windows).\n The agent understands your workspace context and can inspect schemas, search documents,\n analyze extraction quality, explore cases, and build schemas — all through natural language.\n </P>\n\n <SubHeading id=\"agent-capabilities\">What the Agent Can Do</SubHeading>\n\n <P>The agent has deep access to your workspace and can help with:</P>\n\n <ParamTable\n title=\"Agent capabilities\"\n params={[\n { name: 'Workspace overview', type: 'read', description: 'Document stats, recent activity, and schema health at a glance.' },\n { name: 'Schema management', type: 'read / draft', description: 'List, inspect, create drafts, add fields, and publish schemas.' },\n { name: 'Document exploration', type: 'read', description: 'Search documents, view extracted fields, and read OCR markdown.' },\n { name: 'Extraction analysis', type: 'read', description: 'Run status, telemetry (capture/resolve/synthesize rates), and grid stats.' },\n { name: 'Field registry', type: 'read', description: 'Browse discovered fields, check promotion candidates, and view semantic clusters.' },\n { name: 'Cases & linking', type: 'read', description: 'List cases, explore document connections, and view anomalies.' },\n { name: 'Quality', type: 'read', description: 'Benchmark results and regression detection between runs.' },\n { name: 'Delivery', type: 'read', description: 'Check delivery status and preview binding output.' },\n ]}\n />\n\n <SubHeading id=\"agent-impact\">Impact Levels</SubHeading>\n\n <P>\n Every agent action is classified into an impact level that determines how it executes.\n Higher-impact operations require progressively more explicit confirmation.\n </P>\n\n <ParamTable\n title=\"Impact levels\"\n params={[\n { name: 'read', type: 'impact', description: 'Executed immediately with no side effects. Queries, searches, and inspections.' },\n { name: 'draft_mutation', type: 'impact', description: 'Creates or modifies drafts. Workshop-first — nothing is published without confirmation.' },\n { name: 'live_mutation', type: 'impact', description: 'Requires explicit user confirmation before executing. Affects live data.' },\n { name: 'irreversible', type: 'impact', description: 'Requires keyword confirmation (e.g., typing \"DELETE\"). Cannot be undone.' },\n ]}\n />\n\n <Callout>\n The agent always operates workshop-first: schema changes create drafts, not live versions.\n You review and publish when ready.\n </Callout>\n\n <SubHeading id=\"agent-dashboard\">Dashboard Integration</SubHeading>\n\n <P>\n The home page (click the Talonic logo) shows smart suggested prompts based on your\n workspace state. Prompts adapt to what is happening: active runs, schema creation\n opportunities, document types waiting for extraction. The agent input field lets you\n type any question directly from the dashboard.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SOURCES & DOCUMENTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"sources-docs\">Inputs & Documents</SectionHeading>\n\n <P>\n Sources are the entry point for all data. Every document belongs to a source — whether\n uploaded manually, synced from Google Drive, or ingested via API.\n </P>\n\n <SubHeading id=\"uploading\">Uploading Documents</SubHeading>\n\n <P>\n The Sources page provides a drag-and-drop upload interface. You can upload individual\n files, multiple files, or entire folders. ZIP archives are unpacked recursively.\n When uploading folders, the original file path is preserved as a data field\n (<code>source_file_path</code>) on each document — available for downstream processing and export.\n </P>\n\n <UiExcerpt title=\"Sources — Upload Card\" caption=\"Drag files or folders onto the upload area. The progress indicator shows processing status in real-time.\">\n <div className=\"max-w-sm\">\n <div className=\"border border-void-border rounded-lg p-4\">\n <div className=\"flex items-center gap-3 mb-3\">\n <div className=\"w-10 h-10 rounded-lg bg-void-accent/10 flex items-center justify-center\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#673AB7\" strokeWidth=\"1.5\" strokeLinecap=\"round\"><path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" /><polyline points=\"17 8 12 3 7 8\" /><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" /></svg>\n </div>\n <div>\n <div className=\"text-sm font-semibold text-void-text-primary\">Manual Uploads</div>\n <div className=\"text-xs text-void-text-muted\">47 documents · Connected today</div>\n </div>\n <div className=\"ml-auto\">\n <span className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-medium rounded-full bg-void-accent/10 text-void-accent border border-void-accent/20\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-void-accent\" />\n Active\n </span>\n </div>\n </div>\n <div className=\"border-2 border-dashed border-void-border rounded-lg p-4 text-center text-xs text-void-text-muted hover:border-void-accent/40 transition-colors cursor-pointer\">\n <div className=\"text-void-text-secondary font-medium mb-0.5\">Drop files or folders here</div>\n or click to browse\n </div>\n <div className=\"flex gap-2 mt-2.5\">\n <button className=\"inline-flex items-center gap-1 px-2.5 py-1.5 text-[11px] font-medium border border-void-border rounded-lg text-void-text-secondary hover:bg-void-surface-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z\" /></svg>\n Upload Folder\n </button>\n <button className=\"inline-flex items-center gap-1 px-2.5 py-1.5 text-[11px] font-medium border border-void-border rounded-lg text-void-text-secondary hover:bg-void-surface-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" /><polyline points=\"7 10 12 15 17 10\" /><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" /></svg>\n Upload Archive\n </button>\n </div>\n </div>\n </div>\n </UiExcerpt>\n\n <P>\n Files are deduplicated via SHA-256 hashing — uploading the same file twice won't create\n duplicates. Processing runs asynchronously so you can continue working.\n </P>\n\n <SubHeading id=\"supported-formats\">Supported Formats</SubHeading>\n\n <ParamTable\n title=\"File processing paths\"\n params={[\n { name: 'Text fast-path', type: 'direct read', description: 'TXT, MD, HTML, XML, JSON, EML, CSV — read directly, no external API.' },\n { name: 'AI Vision', type: 'multimodal', description: 'PNG, JPG, JPEG, GIF, WEBP — sent to AI for visual extraction.' },\n { name: 'OCR', type: 'Talonic API', description: 'PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, XLSM, MSG, BMP — converted to Markdown.' },\n { name: 'Archives', type: 'recursive', description: 'ZIP — unpacked and each file processed individually.' },\n ]}\n />\n\n <SubHeading id=\"document-processing\">Document Processing</SubHeading>\n\n <P>When a document is uploaded, it flows through a multi-stage pipeline:</P>\n\n <UiExcerpt title=\"Document — Processing Log\" caption=\"Every document shows a structured processing log with per-stage timing.\">\n <div className=\"space-y-2 text-[13px]\">\n {[\n { step: 'Document AI OCR', status: 'completed', duration: '8.2s', detail: '3 pages, 7,734 chars' },\n { step: 'Document Classification', status: 'completed', duration: '1.8s', detail: 'document_ai: Employment Contract' },\n { step: 'AI Data Field Capture', status: 'completed', duration: '67.1s', detail: '52 fields' },\n ].map(({ step, status, duration, detail }) => (\n <div key={step} className=\"flex items-center gap-3 px-3 py-2 rounded bg-void-surface-2/50\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#673AB7\" strokeWidth=\"2.5\" strokeLinecap=\"round\"><polyline points=\"20 6 9 17 4 12\" /></svg>\n <span className=\"font-medium text-void-text-primary\">{step}</span>\n <span className=\"text-void-text-muted ml-auto\">{duration}</span>\n <span className=\"text-void-text-muted\">·</span>\n <span className=\"text-void-text-muted\">{detail}</span>\n </div>\n ))}\n </div>\n </UiExcerpt>\n\n <P>\n <strong>Document AI OCR</strong> converts files to Markdown and produces structured annotations\n (type, sensitivity, PII categories, jurisdiction) in a single pass. <strong>Classification</strong>{' '}\n verifies the annotation against the 529-type document ontology — if the label and content\n disagree, AI resolves the correct type from the actual text. <strong>AI Data Field Capture</strong>{' '}\n extracts every data point. Large documents are automatically chunked and processed in parallel.\n </P>\n\n <P>\n After AI extraction, the platform injects synthetic metadata fields into the result\n so that file-level context is available alongside extracted content:\n </P>\n\n <ParamTable\n params={[\n { name: 'filename', type: 'string', description: 'The original uploaded filename. Always present on every document.' },\n { name: 'source_file_path', type: 'string', description: 'The original file path from the uploaded archive or folder (e.g. contracts/2026/lease.pdf). Only present when the document was uploaded inside a ZIP archive or folder — reflects the internal directory structure.' },\n ]}\n />\n\n <P>\n Both fields appear in the <strong>Raw Extraction</strong> tab with full confidence (1.0)\n and are available for schema mapping, job resolution, filtering, and export — just like\n any AI-extracted field.\n </P>\n\n <Callout>\n Documents are marked <strong>complete</strong> after AI extraction finishes. You can start\n using them in jobs immediately — no need to wait for further processing.\n </Callout>\n\n <SubHeading id=\"document-types\">Document Types</SubHeading>\n\n <P>\n Every document is automatically classified into a canonical type from a 529-type ontology\n (e.g., \"Employment Contract\", \"Invoice\", \"Bill of Lading (Ocean)\"). Types are resolved\n automatically — you never create them manually. The classifier works across all languages:\n a German <em>Arbeitsvertrag</em> and an English <em>Employment Contract</em> map to the same type.\n </P>\n\n <P>\n Documents sharing the same ontology type are automatically merged into one document type.\n When a new canonical type appears, it is auto-created with ontology metadata. Unresolvable\n documents are assigned \"Unclassified Document\".\n </P>\n\n <SubHeading id=\"document-detail\">Document Detail</SubHeading>\n\n <P>Click any document to see its detail page with four views:</P>\n\n <ParamTable\n params={[\n { name: 'Raw Extraction', type: 'tab', description: 'Every field the AI extracted, with confidence scores and source text.' },\n { name: 'Resolved Data', type: 'tab', description: 'Fields mapped to the canonical registry with tier indicators.' },\n { name: 'Processing Log', type: 'tab', description: 'Timeline of each processing stage with timing information.' },\n { name: 'Original File', type: 'tab', description: 'View or download the source document.' },\n ]}\n />\n\n <SubHeading id=\"routing-rules\">Routing Rules</SubHeading>\n\n <P>\n Routing rules automatically assign actions to documents based on their type. Configure rules\n to auto-assign schemas, trigger jobs, or route documents to specific workflows. Manage rules\n from <strong>Documents → Routing</strong>.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n FIELD INTELLIGENCE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"field-intelligence\">Field Intelligence</SectionHeading>\n\n <P>\n The Field Registry is the heart of Talonic's intelligence. As documents are processed, AI\n discovers fields and resolves them into a unified knowledge graph that grows smarter with\n every document.\n </P>\n\n <SubHeading id=\"field-registry\">Field Registry</SubHeading>\n\n <P>\n Navigate to <strong>Sources → Field Registry</strong> to explore the registry. Every\n canonical field is displayed with its tier, data type, occurrence count, and document types.\n </P>\n\n <UiExcerpt title=\"Field Registry — Registry Table\" caption=\"Fields are organized by tier with occurrence counts, data types, and master instruction status.\">\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-[12px]\">\n <thead>\n <tr className=\"bg-void-surface-2/50 border-b border-void-border\">\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Field Name</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Tier</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Type</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Occurrences</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Instruction</th>\n </tr>\n </thead>\n <tbody>\n {[\n { name: 'contract_start_date', tier: 1 as const, type: 'date', occ: 142, instr: true },\n { name: 'supplier_name', tier: 1 as const, type: 'string', occ: 138, instr: true },\n { name: 'total_contract_value', tier: 2 as const, type: 'number', occ: 87, instr: true },\n { name: 'payment_terms', tier: 2 as const, type: 'string', occ: 64, instr: false },\n { name: 'warranty_period', tier: 3 as const, type: 'string', occ: 3, instr: false },\n ].map((f, i) => (\n <tr key={f.name} className={`${i > 0 ? 'border-t border-void-border/40' : ''} hover:bg-void-accent/5`}>\n <td className=\"px-3 py-2 font-mono font-medium text-void-text-primary\">{f.name}</td>\n <td className=\"px-3 py-2\"><TierBadge tier={f.tier} /></td>\n <td className=\"px-3 py-2 text-void-text-muted\">{f.type}</td>\n <td className=\"px-3 py-2 font-mono text-void-text-secondary\">{f.occ}</td>\n <td className=\"px-3 py-2\">\n {f.instr ? (\n <span className=\"text-emerald-600 text-[10px] font-medium\">Synthesized</span>\n ) : (\n <span className=\"text-void-text-muted text-[10px]\">Pending</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </UiExcerpt>\n\n <SubHeading id=\"tier-system\">Tier System</SubHeading>\n\n <P>Fields are organized into three tiers based on how frequently they appear:</P>\n\n <ParamTable\n params={[\n { name: 'Tier 1', type: 'Core', description: 'Universal fields found across many document types. Most reliable and well-understood.' },\n { name: 'Tier 2', type: 'Established', description: 'Promoted from Tier 3 after meeting frequency thresholds. Stable and production-ready.' },\n { name: 'Tier 3', type: 'Emerging', description: 'Newly discovered fields from a few documents. May be promoted as more data arrives.' },\n ]}\n />\n\n <Callout>\n Tier badges appear throughout the platform as the primary quality signal. <TierBadge tier={1} /> = green,{' '}\n <TierBadge tier={2} /> = amber, <TierBadge tier={3} /> = gray.\n </Callout>\n\n <SubHeading id=\"semantic-clusters\">Semantic Clusters</SubHeading>\n\n <P>\n Fields with similar meanings are automatically grouped using AI embeddings. For example,\n \"Vendor Name\", \"Supplier Name\", and \"Company Name\" cluster together. You can manually merge\n or split clusters from the Field Map view.\n </P>\n\n <SubHeading id=\"field-resolution\">Field Resolution</SubHeading>\n\n <P>\n When a document is processed, each extracted field is resolved against the registry using a\n three-band matching model. The bands determine whether a match is accepted automatically,\n flagged for confirmation, or treated as a new field.\n </P>\n\n <ParamTable\n params={[\n { name: 'Auto band', type: '\\u2265 0.80 similarity', description: 'High-confidence match. The field is linked to the existing registry entry and its occurrence count is incremented.' },\n { name: 'Confirm band', type: '0.50 \\u2013 0.79', description: 'Candidate match. The field is linked but flagged for manual review in the reconciliation queue.' },\n { name: 'New band', type: '< 0.50', description: 'No match found. A new Tier 3 field and cluster are created in the registry.' },\n ]}\n />\n\n <P>\n Resolution runs concurrently across documents. Each document’s fields are resolved in\n an isolated transaction to prevent lock contention. Occurrence rates are updated after\n each transaction commits, keeping the registry eventually consistent without blocking\n concurrent ingestion.\n </P>\n\n <Callout>\n Pending confirmations from the confirm band appear in{' '}\n <strong>Resolution → Pending Confirmations</strong>. Accept to merge into an existing\n cluster, or reject to create a new field.\n </Callout>\n\n <SubHeading id=\"master-instructions\">Master Instructions</SubHeading>\n\n <P>\n As the same field is extracted from many documents, AI synthesizes a <strong>master instruction</strong> —\n a reusable directive that captures the best way to extract that field. Master instructions\n improve accuracy over time and are automatically used when running jobs.\n </P>\n\n <Callout>\n Click <strong>\"Synthesize All\"</strong> in the Field Registry to generate instructions for all qualifying\n fields. This runs the combined pipeline: embed → resolve → synthesize.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMAS & TEMPLATES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schemas-templates\">Schemas & Templates</SectionHeading>\n\n <P>\n Schemas define the structure of your output data. There are two types: AI-generated schemas\n created per document type, and user templates you define yourself.\n </P>\n\n <SubHeading id=\"generated-schemas\">Generated Schemas</SubHeading>\n\n <P>\n For each document type, Talonic generates a schema containing all Tier 1 and Tier 2 fields\n with occurrences in that type. Generated schemas are versioned — new versions are created when\n the registry changes. You can diff any two versions to see what changed.\n </P>\n\n <SubHeading id=\"user-templates\">User Templates</SubHeading>\n\n <P>\n User templates are the primary way to define your output structure. Navigate to{' '}\n <strong>Structuring → Schemas</strong> to create one.\n </P>\n\n <div className=\"my-6 space-y-2\">\n {[\n { n: '1', label: 'Create template', desc: 'Give it a name and description.' },\n { n: '2', label: 'Add fields', desc: 'Specify display name, data type, and optionally extraction instructions.' },\n { n: '3', label: 'Map to registry', desc: 'Automatic matching — exact matches auto-apply, semantic matches need confirmation.' },\n { n: '4', label: 'Add reference tables', desc: 'For code fields (e.g., country name → ISO code), upload key-value pairs.' },\n { n: '5', label: 'Publish', desc: 'Create an immutable version snapshot ready for job execution.' },\n ].map(({ n, label, desc }) => (\n <div key={n} className=\"flex gap-4\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">{n}</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary\">{label}</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">{desc}</p>\n </div>\n </div>\n ))}\n </div>\n\n <SubHeading id=\"schema-features\">Schema Features Reference</SubHeading>\n\n <P>\n Every field in a template supports advanced features beyond the basic name and type. These features\n control how values are extracted, validated, transformed, and delivered.\n </P>\n\n <ParamTable\n title=\"Field features\"\n params={[\n { name: 'Format constraint', type: 'regex', description: 'Validates extracted values against a regex pattern. Failing values can be emptied, flagged, or replaced with a constant.' },\n { name: 'Modifiers', type: 'pipeline', description: 'Post-processing transforms applied in order: format (date/number), alias (value mapping), max_length (truncation).' },\n { name: 'Constraints', type: 'validation', description: 'Rules evaluated after modifiers: required, enum, date-format, length, cross-field expressions.' },\n { name: 'Bypass strategy', type: 'skip LLM', description: 'Fields that don\\'t need extraction: constant (fixed value), generator (auto-ID), reference (lookup from reference table).' },\n { name: 'Reference table', type: 'key-value', description: 'Inline lookup table for code mapping (e.g., country name → ISO code). Also supports multi-hop resolution chains.' },\n { name: 'Manual instruction', type: 'text', description: 'User-written extraction directive. Overrides the AI-synthesized master instruction from the field registry.' },\n { name: 'Capture submoves', type: 'array', description: 'Ordered execution: match (field matching), compute (calculation), reason (LLM inference).' },\n { name: 'Output name', type: 'string', description: 'Renamed field in export output. The internal name stays the same.' },\n ]}\n />\n\n <Callout>\n For the complete JSON Schema specification with all features, see the{' '}\n <LinkComp href=\"/docs/platform/schema-features\">Full Schema Reference</LinkComp> in the Platform Guide.\n A downloadable template is available in the{' '}\n <LinkComp href=\"https://github.com/talonicdev/platform/blob/main/packages/docs/src/schema-template.json\">repository</LinkComp>.\n </Callout>\n\n <SubHeading id=\"field-matching\">Field Matching</SubHeading>\n\n <ParamTable\n title=\"Match types\"\n params={[\n { name: 'Exact', type: 'auto', description: 'Field name directly matches a canonical registry field.' },\n { name: 'Semantic', type: 'AI', description: 'AI finds an equivalent field with a different name.' },\n { name: 'Composite', type: 'AI', description: 'Multiple registry fields combine to derive this field.' },\n { name: 'Unmapped', type: 'manual', description: 'No match found — needs manual extraction instructions.' },\n ]}\n />\n\n <SubHeading id=\"reference-tables\">Reference Tables</SubHeading>\n\n <P>\n Reference tables map human-readable values to system codes. Each table is a list of\n key-value pairs where <InlineCode>key</InlineCode> = output code and <InlineCode>value</InlineCode> = label.\n During extraction, a 3-tier lookup cascade runs:\n </P>\n\n <ParamTable\n title=\"Lookup cascade\"\n params={[\n { name: 'Tier 1', type: 'normalization', description: 'Exact match after lowercasing and suffix stripping. Free, instant. Confidence: 0.95.' },\n { name: 'Tier 2', type: 'fuzzy', description: 'Token-overlap matching for name variations (e.g., \"Certas Energy UK Ltd\" vs \"Certas Energy Trading\"). Free. Confidence: ~0.70.' },\n { name: 'Tier 3', type: 'AI fallback', description: 'AI maps value to code when fuzzy matching fails. Last resort. Confidence: 0.50.' },\n ]}\n />\n\n <Callout>\n Reference table quality directly determines lookup accuracy. A properly loaded table\n produces 90-100% accurate results within a single run.\n </Callout>\n\n <SubHeading id=\"versioning-drafts\">Versioning & Drafts</SubHeading>\n\n <P>\n Templates support a workshop system: <strong>Live</strong> (current published version, read-only),\n <strong> Workshop</strong> (mutable draft for editing), and <strong>Version History</strong>{' '}\n (timeline with diff summaries). When promoting a draft, the system detects breaking changes\n (field removals, type changes) and warns you.\n </P>\n\n <SubHeading id=\"test-extraction\">Test Extraction</SubHeading>\n\n <P>\n Before publishing a draft, run a test extraction to compare draft vs. live results side-by-side.\n Select a few documents, run the test, and see exactly how your changes affect output.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACTION JOBS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extraction-jobs\">Extraction Jobs</SectionHeading>\n\n <P>\n Extraction jobs are the core of the platform — where schemas meet documents and AI agents\n produce structured data. A job produces a grid: rows = documents, columns = schema fields.\n </P>\n\n <SubHeading id=\"creating-job\">Creating a Job</SubHeading>\n\n <P>\n Navigate to <strong>Structuring → Runs → New</strong>. Select your template and\n documents, then click Start. Results appear progressively as each phase completes.\n </P>\n\n <SubHeading id=\"pipeline-overview\">The 4-Phase Pipeline</SubHeading>\n\n <P>\n Every job runs through four phases. Each fills more cells in the output grid, reducing the\n problem space for the next. Results are visible as each phase completes.\n </P>\n\n <UiExcerpt title=\"Job Detail — Phase Timeline\" caption=\"The phase timeline shows progress through the pipeline. Each dot represents a stage, highlighted when active.\">\n <div className=\"flex items-center justify-center gap-0 py-3\">\n <PipelineStage label=\"Transfer\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Lookup\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Strategy\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Execute\" state=\"active\" />\n <PipelineConnector />\n <PipelineStage label=\"Validate\" state=\"pending\" />\n <PipelineConnector />\n <PipelineStage label=\"Re-read\" state=\"pending\" />\n <PipelineConnector />\n <PipelineStage label=\"Done\" state=\"pending\" />\n </div>\n <div className=\"mt-3 flex items-center justify-center gap-4\">\n <div className=\"text-[11px] text-void-text-muted\">Fill rate:</div>\n <div className=\"w-40 h-1.5 bg-void-border rounded-full overflow-hidden\">\n <div className=\"h-full bg-void-accent rounded-full\" style={{ width: '64%' }} />\n </div>\n <div className=\"text-[11px] font-mono text-void-accent font-medium\">64%</div>\n </div>\n </UiExcerpt>\n\n <SubHeading id=\"phase-1\">Phase 1: Resolve</SubHeading>\n\n <P>\n The fastest phase (~30% of cells in seconds). For each document × each schema field,\n the system checks if the cell can be filled from existing extracted data. <strong>No AI calls</strong>{' '}\n (except rare Haiku fallback for ambiguous lookups).\n </P>\n\n <ParamTable\n title=\"Resolution methods\"\n params={[\n { name: 'Direct transfer', type: 'graph match', description: 'Field registry match found in extracted data. Confidence: extraction × match score.' },\n { name: 'Fuzzy name match', type: 'string', description: 'Handles naming variations — signature.date matches signature_date.' },\n { name: 'Concept-synonym', type: 'expansion', description: 'Maps generic field concepts to common variations (supplier → vendor.company_name).' },\n { name: 'Reference lookup', type: '3-tier cascade', description: 'For fields with reference tables: normalize → fuzzy → AI. See Reference Tables.' },\n { name: 'Description scan', type: 'keyword', description: 'Matches by meaning using field descriptions. No AI calls.' },\n ]}\n />\n\n <P>\n Values are normalized during transfer: dates → <InlineCode>YYYY/MM/DD</InlineCode>, numbers →\n 2 decimal places, strings → trim + collapse spaces.\n </P>\n\n <SubHeading id=\"phase-2\">Phase 2: Agent</SubHeading>\n\n <P>\n An AI agent reviews the grid's gap patterns and produces a typed strategy:\n </P>\n\n <UiExcerpt title=\"Job Detail — Agent Strategy Panel\" caption=\"The strategy panel shows the agent's typed action plan — visible on the job detail page.\">\n <div className=\"space-y-1.5 text-[12px]\">\n {[\n { field: 'total_amount', action: 'compute', detail: 'unit_price * quantity', color: 'bg-purple-400' },\n { field: 'vendor_code', action: 'transfer', detail: 'From: supplier_name → lookup', color: 'bg-teal-400' },\n { field: 'warranty_terms', action: 'extract', detail: 'Find warranty clause and summarize', color: 'bg-indigo-400' },\n { field: 'internal_ref', action: 'skip', detail: 'Not present in this document type', color: 'bg-gray-300' },\n ].map(({ field, action, detail, color }) => (\n <div key={field} className=\"flex items-center gap-2.5 px-3 py-2 rounded bg-void-surface-2/50\">\n <span className={`w-2 h-2 rounded-full flex-shrink-0 ${color}`} />\n <span className=\"font-mono text-void-text-primary font-medium w-32 truncate\">{field}</span>\n <span className={`px-1.5 py-0.5 text-[10px] font-semibold rounded ${\n action === 'compute' ? 'bg-purple-50 text-purple-600' :\n action === 'transfer' ? 'bg-teal-50 text-teal-600' :\n action === 'extract' ? 'bg-indigo-50 text-indigo-600' :\n 'bg-gray-50 text-gray-500'\n }`}>{action}</span>\n <span className=\"text-void-text-muted truncate\">{detail}</span>\n </div>\n ))}\n </div>\n </UiExcerpt>\n\n <ParamTable\n title=\"Agent actions\"\n params={[\n { name: 'compute', type: 'formula', description: 'Calculate from existing grid values (e.g., Total = Unit Price × Quantity). Safe expression evaluator, no eval().' },\n { name: 'transfer', type: 'copy', description: 'Copy from a semantically equivalent grid field.' },\n { name: 'extract', type: 'AI read', description: 'Re-read the source document with specific instructions. Batched, 5 concurrent.' },\n { name: 'skip', type: 'n/a', description: 'Field cannot be filled, with reasoning.' },\n ]}\n />\n\n <Callout type=\"warning\">\n If a field has a manual instruction, the agent will <strong>always</strong> use <InlineCode>extract</InlineCode>{' '}\n — never <InlineCode>skip</InlineCode>. Human-written instructions are treated as authoritative.\n </Callout>\n\n <SubHeading id=\"phase-3\">Phase 3: Validation</SubHeading>\n\n <P>\n Cross-field sanity checks. Flags are <strong>informational only</strong> — they never block output but\n help you prioritize review:\n </P>\n\n <ParamTable\n title=\"Validation flags\"\n params={[\n { name: 'date_sanity', type: 'error', description: 'End date before start date, or signature date after effective date.' },\n { name: 'amount_mismatch', type: 'warning', description: 'Total doesn\\'t match periodic amount × term (±20% tolerance).' },\n { name: 'lookup_failed', type: 'warning', description: 'Reference table field couldn\\'t find a matching code.' },\n { name: 'low_confidence_outlier', type: 'warning', description: 'Cell with <0.3 confidence in a row where average >0.7.' },\n { name: 'unexpected_empty', type: 'info', description: 'Field with >80% registry occurrence rate is empty in this document.' },\n ]}\n />\n\n <SubHeading id=\"phase-4\">Phase 4: Targeted Re-read</SubHeading>\n\n <P>\n Context-aware gap filling. For each empty cell or low-confidence value, AI re-reads the\n original document with the field instruction and full grid context. This focused approach\n often finds values missed in earlier phases.\n </P>\n\n <Callout>\n Phase 4 respects the <strong>confidence gate</strong>: it can only fill empty cells or\n upgrade cells below the confidence threshold. High-confidence values from Phase 1 are\n permanently protected.\n </Callout>\n\n <SubHeading id=\"reviewing-results\">Reviewing Results</SubHeading>\n\n <UiExcerpt title=\"Job Detail — Results Grid\" caption=\"The results grid shows per-cell resolution indicators. Colored dots indicate how each value was resolved.\">\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-[12px]\">\n <thead>\n <tr className=\"bg-void-surface-2/50 border-b border-void-border\">\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase w-40\">Document</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Supplier Name</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Contract Value</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Start Date</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Org Code</th>\n </tr>\n </thead>\n <tbody>\n {[\n { doc: 'ServiceAgreement_001.pdf', vals: [\n { v: 'Certas Energy UK', dot: 'bg-blue-400' },\n { v: '£142,500.00', dot: 'bg-blue-400' },\n { v: '2025/01/15', dot: 'bg-blue-400' },\n { v: 'ORG-7421', dot: 'bg-teal-400' },\n ]},\n { doc: 'PurchaseOrder_042.pdf', vals: [\n { v: 'Acme Industries', dot: 'bg-blue-400' },\n { v: '€89,200.00', dot: 'bg-purple-400' },\n { v: '2025/03/01', dot: 'bg-blue-400' },\n { v: 'ORG-1138', dot: 'bg-indigo-400' },\n ]},\n { doc: 'Contract_Renewal_15.pdf', vals: [\n { v: 'Global Logistics Ltd', dot: 'bg-blue-400' },\n { v: '$215,000.00', dot: 'bg-blue-400' },\n { v: '2025/06/01', dot: 'bg-indigo-400' },\n { v: '', dot: '' },\n ]},\n ].map(({ doc, vals }, ri) => (\n <tr key={doc} className={`${ri > 0 ? 'border-t border-void-border/40' : ''} hover:bg-void-accent/5`}>\n <td className=\"px-3 py-2 font-medium text-void-text-primary truncate max-w-[160px]\">{doc}</td>\n {vals.map((cell, ci) => (\n <td key={ci} className=\"px-3 py-2 text-void-text-secondary\">\n <span className=\"flex items-center gap-1.5\">\n {cell.dot && <span className={`w-1.5 h-1.5 rounded-full flex-shrink-0 ${cell.dot}`} />}\n {cell.v || <span className=\"text-void-text-muted italic\">empty</span>}\n </span>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"flex flex-wrap mt-2.5 gap-x-4\">\n <CellDot color=\"bg-blue-400\" label=\"Graph match\" />\n <CellDot color=\"bg-purple-400\" label=\"Computed\" />\n <CellDot color=\"bg-teal-400\" label=\"Agent transfer\" />\n <CellDot color=\"bg-indigo-400\" label=\"Agent extract\" />\n <CellDot color=\"bg-amber-400\" label=\"Lookup\" />\n </div>\n </UiExcerpt>\n\n <P>\n The job detail page provides: a <strong>progress bar</strong> with fill rate, a <strong>phase timeline</strong>,\n the <strong>strategy panel</strong> (agent actions), a <strong>filter bar</strong>{' '}\n (Show All / Clean / Flagged), and <strong>CSV export</strong> (clean or full with metadata).\n </P>\n\n <SubHeading id=\"confidence-provenance\">Confidence & Provenance</SubHeading>\n\n <P>Every cell carries detailed provenance. Hover a cell for confidence; click for full detail.</P>\n\n <ParamTable\n title=\"Cell provenance fields\"\n params={[\n { name: 'confidence', type: '0.0–1.0', description: 'How certain the system is about the value.' },\n { name: 'resolution_type', type: 'enum', description: 'graph_match | agent_derived | source_reread | unresolved.' },\n { name: 'phase', type: '1–4', description: 'Which pipeline phase produced the value.' },\n { name: 'reasoning', type: 'text', description: 'Human-readable explanation (agent-derived and re-read cells).' },\n { name: 'source_reference', type: 'object', description: 'Document, page, and field that contributed the data.' },\n ]}\n />\n\n <Callout type=\"warning\">\n <strong>Confidence Gate</strong>: the single most important pipeline rule. Once a cell is filled\n with confidence ≥ 0.7, no later phase can overwrite it. This prevents lookup results (0.95)\n from being replaced by lower-confidence agent extractions (0.65).\n </Callout>\n\n <SubHeading id=\"corrections\">Corrections</SubHeading>\n\n <P>\n Click any cell to edit its value. Corrections are logged with the original value, timestamp,\n and user. Choose a propagation scope: <InlineCode>this_document_only</InlineCode> or{' '}\n <InlineCode>all_similar</InlineCode> (same field + method + source field across all documents).\n Corrections feed back as training signals for future runs.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n LINKING & CASES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"linking-cases\">Linking & Cases</SectionHeading>\n\n <P>\n Document linking discovers relationships between documents by identifying shared entities.\n Related documents are grouped into cases for holistic review.\n </P>\n\n <SubHeading id=\"link-keys\">Link Keys</SubHeading>\n\n <P>\n Registry fields can be classified as <strong>link keys</strong> — values that connect documents:\n </P>\n\n <ParamTable\n title=\"Link key categories\"\n params={[\n { name: 'Identity', type: 'entity', description: 'Names: company names, supplier names, person names.' },\n { name: 'Transaction', type: 'reference', description: 'Numbers: contract numbers, PO numbers, invoice numbers.' },\n { name: 'Reference', type: 'shared ID', description: 'Other identifiers: project codes, cost centers.' },\n ]}\n />\n\n <P>\n Most link keys are auto-classified by name patterns. Remaining ambiguous fields are classified\n by AI. High-frequency entities (>30% of documents) are automatically excluded from case\n formation.\n </P>\n\n <SubHeading id=\"entity-linking\">Entity Linking</SubHeading>\n\n <P>\n After extraction, the linking pipeline runs automatically: extracts link key values,\n normalizes them (lowercasing, stripping suffixes like \"Ltd\", \"Inc\"), and builds a bipartite\n graph of documents ↔ entities.\n </P>\n\n <SubHeading id=\"cases\">Cases</SubHeading>\n\n <P>\n A <strong>case</strong> = 2+ documents connected through transaction/reference entities.\n An <strong>entity group</strong> = 2+ documents connected through identity-only entities.\n </P>\n\n <P>Each case detail page shows: documents, shared entities, evidence chain (which field keys\n produced each connection), timeline, and auto-generated AI narration.</P>\n\n <SubHeading id=\"document-graph\">Document Graph</SubHeading>\n\n <P>\n The Document Graph provides a visual D3-force layout of the bipartite graph. Toggle between\n graph and list views from the Cases page. Case templates are auto-discovered after 3+ cases\n form — they identify recurring document type patterns.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DATA PRODUCTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"data-products\">Data Products</SectionHeading>\n\n <P>\n Data Products package your extraction and resolution outputs into reusable,\n shareable artifacts. Dataset Templates define the shape; Assemblies combine\n sources into a single structured dataset.\n </P>\n\n <SubHeading id=\"dataset-templates\">Dataset Templates</SubHeading>\n\n <P>\n A dataset template defines a reusable output specification: which schema to use,\n which document types to include, column mappings, and default transforms. Templates\n ensure consistent data product generation across teams and time periods.\n </P>\n\n <P>\n Navigate to <strong>Data Products → Dataset Templates</strong> to manage templates.\n Each template is linked to a user schema and can be versioned independently. When\n creating a new job, select a template instead of configuring the output from scratch.\n </P>\n\n <SubHeading id=\"assemblies\">Assemblies</SubHeading>\n\n <P>\n An assembly combines documents from one or more sources into a single structured\n dataset based on a template. Assemblies track their constituent documents, source\n counts, and processing status.\n </P>\n\n <P>\n Navigate to <strong>Data Products → Assemblies</strong> to view and create\n assemblies. Each assembly shows its document count, linked schema, processing\n status, and the date it was created.\n </P>\n\n <Callout>\n Assemblies are the recommended way to produce production datasets. They provide a\n single audit trail from source documents through extraction, resolution, and\n validation to the final output.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n VALIDATION & QUALITY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"validation-quality\">Validation & Quality</SectionHeading>\n\n <P>\n Multiple layers of quality assurance: automated validation checks, ground truth\n benchmarking, and configurable approval gates.\n </P>\n\n <SubHeading id=\"validation-checks\">Validation Checks</SubHeading>\n\n <P>\n Schema-level quality rules run during Phase 3 of every job. Rule types: field format,\n value range, cross-field consistency, and AI-proposed coherence rules. Rules can be\n AI-proposed after a job completes, then reviewed and approved before activation.\n </P>\n\n <SubHeading id=\"ground-truth\">Golden Samples</SubHeading>\n\n <P>\n Manually-created reference datasets with known-correct values. Create from{' '}\n <strong>Validation → Golden Samples</strong>. Benchmark runs compare extraction results\n against golden samples for per-field accuracy scoring with AI judge verdicts.\n </P>\n\n <SubHeading id=\"approval-gates\">Approval Gates</SubHeading>\n\n <P>\n Threshold-based rules for auto-approving or flagging results. Configure per schema with\n criteria: minimum confidence, validation pass rate, field coverage. Results meeting all\n thresholds are auto-approved; others go to the manual review queue.\n </P>\n\n <Callout>\n Approval gates feed the delivery pipeline — bind a{' '}\n <InlineCode>result.approved</InlineCode> signal to a destination to only ship approved\n rows to your downstream systems.\n </Callout>\n\n <SubHeading id=\"approval-queue\">Approval Queue</SubHeading>\n\n <P>\n Results that do not meet auto-approval thresholds are routed to the Approval Queue.\n Navigate to <strong>Review → Approval Queue</strong> to see all pending items.\n Each row shows the source document, schema, confidence score, and whether the result\n has been flagged by a validation rule.\n </P>\n\n <P>\n Filter the queue by status (pending, flagged), schema, or confidence range. Click\n “Review” on any row to inspect the extracted values, provenance trails,\n and validation check results before approving or rejecting.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DELIVERY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"delivery\">Delivery</SectionHeading>\n\n <P>\n Push extracted, resolved, and reviewed data to any downstream system. Delivery is a typed,\n at-least-once pipeline with idempotency keys on the wire, append-only history, and a\n dead-letter queue for terminal failures.\n </P>\n\n <SubHeading id=\"delivery-pipeline\">How Delivery Works</SubHeading>\n\n <P>\n Every delivery flows through a five-stage pipeline:\n </P>\n\n <ParamTable\n title=\"The delivery pipeline\"\n params={[\n { name: '1. Signal', type: 'event', description: 'A producer emits a typed event (e.g. document.extracted, result.approved) into the outbox. Producers are stateless — they only publish.' },\n { name: '2. Binding', type: 'match', description: 'A poller drains the outbox and matches each event against active bindings. A binding joins a signal filter to a deliverable + destination + serializer.' },\n { name: '3. Resolver', type: 'load', description: 'The deliverable resolver loads the payload (document metadata, a record snapshot, an extraction run, …) at delivery time using only entity IDs from the signal.' },\n { name: '4. Serializer', type: 'encode', description: 'The serializer encodes the payload into the wire format — json, ndjson, csv, csv_file, xlsx, rows, graph, raw, md, or txt — after an optional field_map projection.' },\n { name: '5. Connector', type: 'transport', description: 'The connector ships the encoded bytes through the TransportWrapper (SSRF guard, payload cap, rate limit, retry ladder). Slice-1 connector is webhook.' },\n ]}\n />\n\n <P>\n Every attempt is logged in <InlineCode>delivery_items</InlineCode>. Terminal failures\n (retry exhausted or permanent 4xx) write a <InlineCode>delivery_dead_letter</InlineCode>{' '}\n row, which is replayable. The outbox, history, DLQ, and catalog are all accessible via the{' '}\n <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\"><InlineCode>/v1/delivery/*</InlineCode> API</LinkComp>.\n </P>\n\n <SubHeading id=\"destinations\">Destinations</SubHeading>\n\n <P>\n A destination is a connector + configuration + optional credentials. Slice-1 ships the\n webhook connector; S3, Google Sheets, Drive, SFTP, and Email arrive in later slices.\n Use <strong>Delivery → Destinations</strong> to manage them from the dashboard, or{' '}\n <InlineCode>POST /v1/delivery/destinations</InlineCode> via the API. Every destination\n supports a live-ping <InlineCode>POST /v1/delivery/destinations/:id/test</InlineCode>{' '}\n that exercises the full transport envelope with a tiny test payload.\n </P>\n\n <ParamTable\n title=\"Supported connectors\"\n params={[\n { name: 'webhook', type: 'HTTP POST', description: 'Slice 1. HMAC-SHA256 signed payloads with idempotency keys, 30s timeout, SSRF guard, 5 MiB payload cap (overridable per destination).' },\n { name: 's3', type: 'object storage', description: 'Slice 2+. AWS S3 or Cloudflare R2 with per-destination prefix and partitioning.' },\n { name: 'sheets', type: 'api', description: 'Slice 2+. Google Sheets append/upsert via connected accounts (OAuth).' },\n { name: 'drive', type: 'api', description: 'Slice 2+. Google Drive file upload via connected accounts.' },\n { name: 'sftp', type: 'file', description: 'Slice 2+. SFTP file upload with key or password auth.' },\n { name: 'email', type: 'smtp', description: 'Slice 2+. Structured data as email attachment.' },\n ]}\n />\n\n <SubHeading id=\"bindings\">Bindings</SubHeading>\n\n <P>\n A binding is the routing rule: it joins a <strong>signal filter</strong> (which events?)\n to a <strong>deliverable type</strong> (what payload shape?) to a <strong>destination</strong>{' '}\n (ship where?) via a <strong>serializer</strong> (encoded how?). On create, the backend\n validates all four pieces form a compatible triangle — the serializer must support the\n resolver's shape, and the connector must support the serializer format.\n </P>\n\n <P>\n Optional <InlineCode>field_map</InlineCode> (rename/drop/static rules) lets you reshape\n the payload without custom code. Optional <InlineCode>delivery_policy</InlineCode>{' '}\n overrides the default retry ladder (6 attempts at{' '}\n <InlineCode>5s, 30s, 2min, 10min, 1h</InlineCode>) and timeout.\n </P>\n\n <SubHeading id=\"signals-catalog\">Signals & Catalog</SubHeading>\n\n <P>\n The catalog API (<InlineCode>/v1/delivery/catalog/*</InlineCode>) exposes the four\n registries that drive the binding picker. Use it to populate dropdowns rather than\n hardcoding lists — it always reflects the running registry contents.\n </P>\n\n <ParamTable\n title=\"Core signal types\"\n params={[\n { name: 'document.extracted', type: 'signal', description: 'Fired when a document completes extraction with structured fields.' },\n { name: 'document.extraction_failed', type: 'signal', description: 'Fired when extraction fails terminally.' },\n { name: 'run.dataspace.completed', type: 'signal', description: 'Fired when a dataspace job run completes.' },\n { name: 'run.structuring.completed', type: 'signal', description: 'Fired when a structuring run completes.' },\n { name: 'run.resolution.completed', type: 'signal', description: 'Fired when a resolution run (field normalization + transforms) completes.' },\n { name: 'run.extraction.completed', type: 'signal', description: 'Fired when a multi-document extraction (batch-inference) run completes.' },\n { name: 'result.approved', type: 'signal', description: 'Fired when a reviewer approves a record.' },\n { name: 'result.rejected', type: 'signal', description: 'Fired when a reviewer rejects a record.' },\n { name: 'result.flagged', type: 'signal', description: 'Fired when validation flags fire on a record.' },\n { name: 'delivery.item.completed', type: 'meta', description: 'Fired after a successful delivery. Meta-signal — the poller prevents re-binding loops.' },\n { name: 'delivery.item.failed', type: 'meta', description: 'Fired after a terminal delivery failure.' },\n ]}\n />\n\n <SubHeading id=\"delivery-history\">History & DLQ</SubHeading>\n\n <P>\n Every delivery attempt writes a row to <InlineCode>/v1/delivery/items</InlineCode> with\n its status, HTTP code, error code, and request/response bodies. Terminal failures (retry\n ladder exhausted or permanent 4xx) escalate to{' '}\n <InlineCode>/v1/delivery/dlq</InlineCode>. Both are fully replayable — replay enqueues a\n new attempt with a fresh idempotency key. Nothing in history is ever mutated; the log is\n strictly append-only.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SEARCH & FILTERING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"search-filtering\">Search & Filtering</SectionHeading>\n\n <SubHeading id=\"omnisearch\">Omnisearch</SubHeading>\n\n <P>\n Press <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">⌘K</kbd>{' '}\n (or <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">Ctrl+K</kbd>)\n from any page to open global search. Searches across documents, extracted values, field\n names, schema names, and sources simultaneously.\n </P>\n\n <SubHeading id=\"document-filters\">Document Filters</SubHeading>\n\n <P>\n The Documents page supports advanced filtering by extracted field values. Build conditions\n with field autocomplete, comparison operators (eq, contains, gt, between, is_empty, etc.),\n and combine multiple conditions. Filter state is URL-serializable so you can share filtered\n views. Save frequently-used filters as presets.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n API & WEBHOOKS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"api-webhooks\">API & Webhooks</SectionHeading>\n\n <P>\n Talonic provides a full REST API for programmatic access and webhooks for event-driven\n integrations. See the <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\">API Documentation</LinkComp>{' '}\n for complete endpoint documentation.\n </P>\n\n <SubHeading id=\"api-keys\">API Keys</SubHeading>\n\n <P>\n Manage API keys from <strong>Settings → API Keys</strong>. Keys are prefixed with{' '}\n <InlineCode>tlnc_</InlineCode> and passed via <InlineCode>Authorization: Bearer</InlineCode>.\n Keys are SHA-256 hashed — the full key is only shown once at creation.\n </P>\n\n <ParamTable\n title=\"API key scopes\"\n params={[\n { name: 'extract', type: 'scope', description: 'Use the extraction API (POST /v1/extract).' },\n { name: 'read', type: 'scope', description: 'Read documents, extractions, schemas, and jobs.' },\n { name: 'write', type: 'scope', description: 'Create and modify resources.' },\n ]}\n />\n\n <SubHeading id=\"public-api\">Public API</SubHeading>\n\n <ParamTable\n title=\"API namespaces\"\n params={[\n { name: '/v1/extract', type: 'POST', description: 'Synchronous and asynchronous document extraction.' },\n { name: '/v1/documents', type: 'CRUD', description: 'Document listing, detail, and deletion with cursor pagination.' },\n { name: '/v1/extractions', type: 'CRUD', description: 'Extraction results and field corrections.' },\n { name: '/v1/schemas', type: 'CRUD', description: 'Schema management — create, update, delete.' },\n { name: '/v1/jobs', type: 'CRUD', description: 'Async job tracking, results, and N-Shot comparisons with override and judge decisions.' },\n { name: '/v1/sources', type: 'CRUD', description: 'API source management and document ingest.' },\n { name: '/v1/delivery', type: 'CRUD', description: 'Outbound delivery: destinations, bindings, history, DLQ, outbox, catalog.' },\n { name: '/v1/resolutions', type: 'CRUD', description: 'Resolution runs — field normalization, transforms, and lookup cascades.' },\n { name: '/v1/linking', type: 'mixed', description: 'Document linking: link keys, document links, entity graph, classification, backfill, and document-case mapping.' },\n { name: '/v1/schema-graph', type: 'mixed', description: 'Schema class ontology: versioned classes, diffs with approval workflow, edges, aliases, and visualization.' },\n { name: '/v1/structuring', type: 'CRUD', description: 'Validation checks, approval gates with rules, result checks, pending approvals, and delivery triggers.' },\n { name: '/v1/telemetry', type: 'GET', description: 'Structuring metrics: per-schema and per-run summaries, trends, and field-level breakdowns.' },\n { name: '/v1/validation', type: 'CRUD', description: 'Golden samples and validation runs for measuring extraction accuracy against ground truth.' },\n { name: '/v1/credits', type: 'GET', description: 'Credit balance, transaction history, usage summaries, daily breakdown, and per-request usage log.' },\n { name: '/v1/cases', type: 'CRUD', description: 'Cases: status updates, edge confirmation/rejection, split/merge, completeness, document pinning.' },\n { name: '/v1/batches', type: 'mixed', description: 'Batch inference: listing, detail, provider sync, and cancellation.' },\n { name: '/v1/matching', type: 'CRUD', description: 'Smart matching: configurations, strategies, smart runs, AI resolution, results, progress, and review.' },\n { name: '/v1/review', type: 'mixed', description: 'Review queue: assignment, actions, batch operations, and statistics.' },\n { name: '/v1/quality', type: 'CRUD', description: 'Ground truth datasets with entries, benchmarks with results and comparison.' },\n { name: '/v1/reference-data', type: 'CRUD', description: 'Reference datasets: file and JSON upload, row browsing, and management.' },\n ]}\n />\n\n <SubHeading id=\"webhooks\">Webhooks</SubHeading>\n\n <P>\n Webhooks push real-time notifications when events occur. All payloads are HMAC-SHA256 signed.\n Failed deliveries retry with exponential backoff.\n </P>\n\n <P>\n The webhook connector is configured as a <strong>delivery destination</strong>. Bind any\n of the signal types below to a webhook destination to receive real-time notifications.\n See <InlineCode>/v1/delivery/catalog/signals</InlineCode> for the exhaustive list.\n </P>\n\n <ParamTable\n title=\"Delivery signal types (webhook-compatible)\"\n params={[\n { name: 'document.extracted', type: 'event', description: 'A document extraction has finished successfully.' },\n { name: 'document.extraction_failed', type: 'event', description: 'A document extraction has failed terminally.' },\n { name: 'run.dataspace.completed', type: 'event', description: 'A dataspace job run completed.' },\n { name: 'run.structuring.completed', type: 'event', description: 'A structuring run completed.' },\n { name: 'run.resolution.completed', type: 'event', description: 'A resolution run (field normalization + transforms) completed.' },\n { name: 'run.extraction.completed', type: 'event', description: 'A multi-document extraction (batch-inference) run completed.' },\n { name: 'result.approved', type: 'event', description: 'A reviewer approved a record.' },\n { name: 'result.rejected', type: 'event', description: 'A reviewer rejected a record.' },\n { name: 'result.flagged', type: 'event', description: 'Validation flags fired on a record.' },\n { name: 'delivery.item.completed', type: 'meta', description: 'A delivery succeeded. Meta-signal — not re-delivered to avoid loops.' },\n { name: 'delivery.item.failed', type: 'meta', description: 'A delivery failed terminally.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n TEAM & ADMIN\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"team-admin\">Team & Admin</SectionHeading>\n\n <SubHeading id=\"team-management\">Team Management</SubHeading>\n\n <P>Organizations support role-based access control:</P>\n\n <ParamTable\n title=\"Roles\"\n params={[\n { name: 'Viewer', type: 'read-only', description: 'Read-only access to all resources.' },\n { name: 'Member', type: 'full access', description: 'Create, edit, and delete resources.' },\n { name: 'Admin', type: 'management', description: 'Member permissions plus team management and settings.' },\n { name: 'Owner', type: 'full control', description: 'Billing, API keys, organization settings, and all management.' },\n ]}\n />\n\n <P>\n New members are added via domain matching: company email domains auto-match to your org\n with <strong>pending</strong> status requiring admin approval. Manage from the Team page.\n </P>\n\n <SubHeading id=\"usage-registry\">Usage & Registry</SubHeading>\n\n <P>\n The Usage & Registry page replaces the legacy credits view with a comprehensive cost\n breakdown. It shows per-feature cost (extraction, OCR, batch, matching), a daily cost\n chart, and a full call log with model, tokens, and cost per request. The{' '}\n <strong>Master view</strong> (admin only) shows per-customer breakdowns and platform-wide\n statistics.\n </P>\n\n <ParamTable\n title=\"Usage views\"\n params={[\n { name: 'Per-feature costs', type: 'breakdown', description: 'Extraction, OCR, batch inference, matching, and other features listed with total cost.' },\n { name: 'Daily cost chart', type: 'visualization', description: 'Bar chart showing daily spend over the past 30 days.' },\n { name: 'Call log', type: 'audit', description: 'Every API call with model, token count, latency, and cost.' },\n { name: 'Master view', type: 'admin', description: 'Per-customer breakdown and platform-wide aggregates. Accessible only in master (all-tenant) mode.' },\n ]}\n />\n\n <SubHeading id=\"admin-panel\">Admin Panel</SubHeading>\n\n <P>\n Accessible from the user menu for admins and superadmins. Provides: customer management,\n user management, usage statistics, data clear & rebuild, and cross-tenant master\n registry view.\n </P>\n\n <SubHeading id=\"shortcuts\">Keyboard Shortcuts</SubHeading>\n\n <ParamTable\n title=\"Shortcuts\"\n params={[\n { name: '⌘K / Ctrl+K', type: 'global', description: 'Open Omnisearch from any page.' },\n { name: '⌘J / Ctrl+J', type: 'global', description: 'Quick extract — upload and process a document.' },\n { name: 'Escape', type: 'global', description: 'Close overlays, modals, and search.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n BATCH INFERENCE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"batch-inference\">Batch Inference</SectionHeading>\n\n <SubHeading id=\"batch-overview\">Overview</SubHeading>\n\n <P>\n Documents can be processed in <strong>batch mode</strong> at 50% cost with a 48-hour\n delivery window. Toggle batch mode on the upload screen or set it via the API. Batch\n processing is ideal for large backlog ingestion where real-time results are not required.\n </P>\n\n <Callout>\n Batch mode cuts extraction cost in half. Stage 1 (OCR + classify) still runs immediately\n — only Stage 2 (Claude extraction) is deferred.\n </Callout>\n\n <SubHeading id=\"batch-processing\">Batch Processing Mode</SubHeading>\n\n <P>\n Set <InlineCode>processing_mode=batch</InlineCode> on upload (API) or toggle the\n “Batch” switch in the upload UI. Stage 1 (OCR + classification) runs\n immediately so documents appear in your library right away. Stage 2 (Claude extraction)\n is deferred to the provider’s batch API for asynchronous processing.\n </P>\n\n <ParamTable\n title=\"Batch stages\"\n params={[\n { name: 'Stage 1', type: 'immediate', description: 'OCR, classification, and triage run in real-time. Documents are visible in your library immediately.' },\n { name: 'Stage 2', type: 'deferred', description: 'Claude extraction is queued for batch processing. Items accumulate, then submit to the batch API on a timer or threshold.' },\n ]}\n />\n\n <SubHeading id=\"batch-monitoring\">Monitoring Batches</SubHeading>\n\n <P>\n The Batches page at <InlineCode>/sources/batches</InlineCode> shows the status of all\n batch jobs. Each batch progresses through three states:{' '}\n <strong>accumulating</strong> (items collecting), <strong>submitted</strong> (sent to\n provider), and <strong>completed</strong> (results applied). The page live-syncs with the\n provider for real-time status updates.\n </P>\n\n <ParamTable\n title=\"Batch statuses\"\n params={[\n { name: 'Accumulating', type: 'status', description: 'Items are being collected. The batch has not yet been submitted to the provider.' },\n { name: 'Submitted', type: 'status', description: 'The batch has been sent to the provider. Polled hourly for completion.' },\n { name: 'Completed', type: 'status', description: 'All results have been received and applied to the corresponding documents.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SMART MATCHING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"matching\">Smart Matching</SectionHeading>\n\n <SubHeading id=\"reference-data\">Reference Data</SubHeading>\n\n <P>\n Upload CSV or Excel files as lookup tables. These reference datasets are used by the\n matching engine and by reference strategies in schemas. Each reference dataset is\n versioned and can be shared across multiple schemas.\n </P>\n\n <SubHeading id=\"matching-configs\">Matching Configurations</SubHeading>\n\n <P>\n Define field-to-field comparisons between extracted data and reference datasets. Each\n comparison uses a weighted strategy to score matches:\n </P>\n\n <ParamTable\n title=\"Matching strategies\"\n params={[\n { name: 'exact', type: 'strategy', description: 'Case-insensitive exact string match. Weight determines contribution to overall score.' },\n { name: 'fuzzy', type: 'strategy', description: 'Token-based fuzzy matching with configurable similarity threshold.' },\n { name: 'date_range', type: 'strategy', description: 'Matches dates within a configurable tolerance window (e.g. +/- 7 days).' },\n { name: 'numeric_range', type: 'strategy', description: 'Matches numbers within a configurable percentage or absolute tolerance.' },\n ]}\n />\n\n <P>\n You can also use <strong>AI strategy generation</strong> to let the platform suggest\n field mappings and strategies automatically based on the schema and reference data\n structure.\n </P>\n\n <SubHeading id=\"matching-runs\">Running Matches</SubHeading>\n\n <P>\n Execute a matching run against a reference dataset. Matching runs are processed\n asynchronously via BullMQ. You can monitor progress from the matching page and\n cancel running jobs if needed.\n </P>\n\n <SubHeading id=\"matching-results\">Match Results</SubHeading>\n\n <P>\n Results are presented per document with the top 5 match candidates. Each candidate\n includes a confidence score and field-level evidence showing which comparisons\n contributed to the match and how each field scored.\n </P>\n\n <ParamTable\n title=\"Result fields\"\n params={[\n { name: 'Confidence', type: 'score', description: 'Weighted aggregate score across all field comparisons (0-100%).' },\n { name: 'Evidence', type: 'detail', description: 'Per-field breakdown showing strategy used, individual score, and matched values.' },\n { name: 'Top 5', type: 'candidates', description: 'The five highest-scoring reference records for each document.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DIALECTS\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"dialects\">Dialects</SubHeading>\n\n <P>\n Dialects define the output format for structured data. They control how values are\n serialized when delivered or exported. A dialect can be shared across schemas or\n defined inline for a specific schema. Configure dialects in the{' '}\n <strong>Schema → Delivery</strong> tab.\n </P>\n\n <ParamTable\n title=\"Dialect settings\"\n params={[\n { name: 'date_format', type: 'string', description: 'Date output format, e.g. DD-MM-YYYY, YYYY/MM/DD, MM.DD.YYYY.' },\n { name: 'number_locale', type: 'locale', description: 'Number formatting locale, e.g. fr-FR (1 234,56), en-US (1,234.56).' },\n { name: 'delimiter', type: 'char', description: 'CSV column delimiter. Default comma; use semicolon (;) for European locales.' },\n { name: 'null_representation', type: 'string', description: 'How null/empty values are serialized: empty string, \"N/A\", \"null\", etc.' },\n { name: 'boolean_format', type: 'string', description: 'Boolean output: true/false, 1/0, yes/no, Y/N.' },\n { name: 'encoding', type: 'string', description: 'Output file encoding: UTF-8 (default), UTF-8-BOM, ISO-8859-1, etc.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n BYPASS STRATEGIES\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"bypass-strategies\">Bypass Strategies</SubHeading>\n\n <P>\n Bypass strategies determine how a schema field is populated when it should not go\n through LLM extraction. Each strategy provides a deterministic value without consuming\n AI credits.\n </P>\n\n <ParamTable\n title=\"Strategy types\"\n params={[\n { name: 'none', type: 'strategy', description: 'Field is always left blank. Use for fields you want to skip entirely.' },\n { name: 'constant', type: 'strategy', description: 'Field is set to a literal value you specify (e.g. \"USD\", \"pending\").' },\n { name: 'generator', type: 'strategy', description: 'Deterministic value generators: deterministic-id (hash-based ID) or context-fallback (derive from other fields).' },\n { name: 'reference', type: 'strategy', description: 'Look up a value from a reference table using a key_expression to match against uploaded reference data.' },\n ]}\n />\n\n <Callout>\n When a <InlineCode>generator</InlineCode> strategy fails to produce a value, the field\n falls through to LLM extraction as a safety net. Strategy values are normalized via\n generator mappings in Phase 4 of the pipeline.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n FORMAT CONSTRAINTS\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"format-constraints\">Format Constraints</SubHeading>\n\n <P>\n Format constraints apply regex-based validation to schema fields. They are evaluated\n post-extraction in Phase 4 of the pipeline, after all transforms have been applied.\n Original values are preserved for audit in <InlineCode>original_extractions</InlineCode>.\n </P>\n\n <ParamTable\n title=\"Mismatch behaviors\"\n params={[\n { name: 'empty', type: 'default', description: 'If the extracted value does not match the regex, the cell is cleared. The original is preserved for audit.' },\n { name: 'flag', type: 'behavior', description: 'The value is kept but flagged with a format_applied indicator. Visible as an amber dot in the results grid.' },\n { name: 'constant', type: 'behavior', description: 'The value is replaced with a constant you specify (e.g. \"INVALID\", \"N/A\").' },\n ]}\n />\n\n <P>\n Define format constraints in the schema field editor. The pattern uses standard regex\n syntax. The editor provides a live test input so you can verify the pattern before\n saving.\n </P>\n\n\n {/* ─── FOOTER ─────────────────────────────────────────────────── */}\n <div className=\"mt-16 pt-8 border-t border-void-border\">\n <div className=\"flex flex-wrap items-center justify-between gap-4 text-[13px] text-void-text-muted\">\n <div>\n <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\">API Documentation</LinkComp>\n <span className=\"mx-2\">·</span>\n <LinkComp href=\"/settings/api\" className=\"text-void-accent hover:underline\">API Keys</LinkComp>\n <span className=\"mx-2\">·</span>\n <LinkComp href=\"/\" className=\"text-void-accent hover:underline\">Dashboard</LinkComp>\n </div>\n <span>Talonic Platform Guide</span>\n </div>\n </div>\n\n <div className=\"h-20\" />\n </div>\n </div>\n );\n}\n","/**\n * SEO metadata, navigation data, and machine-readable content exports\n * for @talonic/docs consumers to build sitemaps, JSON-LD, llms.txt, etc.\n */\n\nimport type { NavSection } from './components/DocPrimitives';\n\n// ---------------------------------------------------------------------------\n// Navigation sections (mirrors the data inside the page components)\n// ---------------------------------------------------------------------------\n\nexport const API_NAV_SECTIONS: NavSection[] = [\n { id: 'overview', label: 'Overview', children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'authentication', label: 'Authentication' },\n { id: 'base-url', label: 'Base URL' },\n { id: 'quick-start', label: 'Quick Start' },\n { id: 'pagination', label: 'Pagination' },\n { id: 'idempotency', label: 'Idempotency' },\n ]},\n { id: 'extract', label: 'Extract', children: [\n { id: 'post-extract', label: 'POST /v1/extract' },\n { id: 'extract-schemas', label: 'Schema Formats' },\n { id: 'extract-include-markdown', label: 'Options' },\n { id: 'extract-processing-mode', label: 'Responses' },\n ]},\n { id: 'documents', label: 'Documents', children: [\n { id: 'list-documents', label: 'List Documents' },\n { id: 'get-document', label: 'Get Document' },\n { id: 'delete-document', label: 'Delete Document' },\n ]},\n { id: 'extractions', label: 'Extractions', children: [\n { id: 'list-extractions', label: 'List Extractions' },\n { id: 'get-extraction', label: 'Get Extraction' },\n { id: 'get-extraction-fields', label: 'Get Extraction Data' },\n { id: 'get-extraction-markdown', label: 'Correct Fields' },\n ]},\n { id: 'schemas', label: 'Schemas', children: [\n { id: 'list-schemas', label: 'List Schemas' },\n { id: 'create-schema', label: 'Create Schema' },\n { id: 'get-schema', label: 'Get Schema' },\n { id: 'update-schema', label: 'Update Schema' },\n { id: 'delete-schema', label: 'Delete Schema' },\n ]},\n { id: 'jobs', label: 'Jobs', children: [\n { id: 'list-jobs', label: 'List Jobs' },\n { id: 'create-job', label: 'Create Job' },\n { id: 'get-job', label: 'Get Job' },\n ]},\n { id: 'sources', label: 'Sources', children: [\n { id: 'list-sources', label: 'List Inputs' },\n { id: 'create-source', label: 'Create Input' },\n { id: 'get-source', label: 'Get / Update / Delete' },\n { id: 'update-source', label: 'Source Documents' },\n ]},\n { id: 'filter-search', label: 'Filter & Search', children: [\n { id: 'field-autocomplete', label: 'Field Autocomplete' },\n { id: 'field-values', label: 'Field Values' },\n { id: 'filter-documents', label: 'Filter Documents' },\n { id: 'filter-documents-export', label: 'Omnisearch' },\n { id: 'omnisearch', label: 'Saved Filters' },\n { id: 'saved-filters', label: 'Document Counts' },\n { id: 'document-counts', label: 'Materialize' },\n { id: 'materialized-index', label: 'Materialized Index' },\n ]},\n { id: 'webhooks', label: 'Webhooks', children: [\n { id: 'webhook-events', label: 'Events' },\n { id: 'webhook-management', label: 'Delivery Format' },\n { id: 'webhook-security', label: 'Signature Verification' },\n { id: 'webhook-retry', label: 'Retry Policy' },\n { id: 'list-webhook-configs', label: 'List Configs' },\n { id: 'create-webhook-config', label: 'Create Config' },\n { id: 'manage-webhook-config', label: 'Manage Config' },\n ]},\n { id: 'resolutions', label: 'Resolutions', children: [\n { id: 'list-resolutions', label: 'List Resolutions' },\n { id: 'create-resolution', label: 'Create Resolution' },\n { id: 'get-resolution', label: 'Get Resolution' },\n { id: 'get-resolution-results', label: 'Get Results' },\n { id: 'execute-resolution', label: 'Execute Resolution' },\n { id: 'cancel-resolution', label: 'Delete Resolution' },\n ]},\n { id: 'linking', label: 'Linking', children: [\n { id: 'list-link-keys', label: 'Link Keys' },\n { id: 'reclassify-link-key', label: 'Classify' },\n { id: 'list-entities', label: 'Document Links' },\n { id: 'list-linked-documents', label: 'Full Graph' },\n { id: 'list-cases', label: 'Backfill' },\n { id: 'get-case', label: 'Cases' },\n { id: 'refresh-cases', label: 'Document-Case Map' },\n ]},\n { id: 'nshot', label: 'N-Shot', children: [\n { id: 'nshot-summary', label: 'Summary' },\n { id: 'nshot-list-shots', label: 'Comparisons' },\n { id: 'nshot-compare', label: 'Single Comparison' },\n { id: 'nshot-select', label: 'Override' },\n { id: 'nshot-judge-decision', label: 'Judge Decision' },\n ]},\n { id: 'schema-graph', label: 'Schema Graph', children: [\n { id: 'list-schema-graph-classes', label: 'List Classes' },\n { id: 'get-schema-graph-class', label: 'Get Class' },\n { id: 'list-class-versions', label: 'List Versions' },\n { id: 'get-class-version', label: 'Get Version' },\n { id: 'list-schema-graph-diffs', label: 'List Diffs' },\n { id: 'approve-diff', label: 'Approve Diff' },\n { id: 'reject-diff', label: 'Reject Diff' },\n { id: 'list-schema-graph-edges', label: 'Edges' },\n { id: 'list-schema-graph-aliases', label: 'Aliases' },\n { id: 'visualize-schema-graph', label: 'Visualize' },\n ]},\n { id: 'structuring', label: 'Structuring', children: [\n { id: 'list-structuring-checks', label: 'List Checks' },\n { id: 'create-structuring-check', label: 'Create Check' },\n { id: 'get-structuring-check', label: 'Get / Update / Delete Check' },\n { id: 'list-structuring-gates', label: 'List Gates' },\n { id: 'create-structuring-gate', label: 'Create Gate' },\n { id: 'get-structuring-gate', label: 'Get / Update / Delete Gate' },\n { id: 'gate-rules', label: 'Gate Rules' },\n { id: 'result-checks', label: 'Result Checks' },\n { id: 'pending-approvals', label: 'Pending Approvals' },\n { id: 'approve-reject-result', label: 'Approve / Reject Result' },\n { id: 'trigger-delivery', label: 'Trigger Delivery' },\n ]},\n { id: 'telemetry', label: 'Telemetry', children: [\n { id: 'schema-telemetry-summary', label: 'Schema Summary' },\n { id: 'schema-telemetry-trend', label: 'Schema Trend' },\n { id: 'schema-telemetry-fields', label: 'Schema Fields' },\n { id: 'run-telemetry-summary', label: 'Run Summary' },\n ]},\n { id: 'validation', label: 'Validation', children: [\n { id: 'list-ground-truth', label: 'List Ground-Truth Datasets' },\n { id: 'get-ground-truth', label: 'Get / Delete Ground-Truth Dataset' },\n { id: 'list-validation-runs', label: 'List Validation Runs' },\n { id: 'create-validation-run', label: 'Create Validation Run' },\n { id: 'get-validation-run', label: 'Get / Delete Validation Run' },\n { id: 'get-validation-results', label: 'Validation Results' },\n ]},\n { id: 'credits', label: 'Credits', children: [\n { id: 'credits-balance', label: 'Balance' },\n { id: 'credits-history', label: 'History' },\n { id: 'credits-usage', label: 'Usage Summary' },\n { id: 'credits-usage-daily', label: 'Daily Usage' },\n { id: 'credits-usage-log', label: 'Usage Log' },\n ]},\n { id: 'agent', label: 'Agent', children: [\n { id: 'agent-context', label: 'Get Workspace Context' },\n { id: 'agent-tools', label: 'List Agent Tools' },\n ]},\n { id: 'matching', label: 'Matching', children: [\n { id: 'list-matching-configs', label: 'List Configs' },\n { id: 'create-matching-config', label: 'Create Config' },\n { id: 'get-matching-config', label: 'Get / Update / Delete Config' },\n { id: 'run-matching', label: 'Run Matching' },\n { id: 'get-matching-run', label: 'Get Run' },\n { id: 'get-matching-results', label: 'Get Results' },\n { id: 'generate-strategy', label: 'Generate Strategy' },\n { id: 'list-matching-runs', label: 'List Runs' },\n { id: 'review-match-result', label: 'Review Result' },\n { id: 'manage-matching-strategy', label: 'Manage Strategy' },\n ]},\n { id: 'delivery', label: 'Delivery', children: [\n { id: 'list-delivery-destinations', label: 'List Destinations' },\n { id: 'create-delivery-destination', label: 'Create Destination' },\n { id: 'manage-delivery-destination', label: 'Manage Destination' },\n { id: 'list-delivery-bindings', label: 'List Bindings' },\n { id: 'create-delivery-binding', label: 'Create Binding' },\n { id: 'manage-delivery-binding', label: 'Manage Binding' },\n { id: 'delivery-history', label: 'History' },\n { id: 'delivery-dlq', label: 'Dead Letter Queue' },\n { id: 'delivery-catalog', label: 'Catalog' },\n ]},\n { id: 'batches', label: 'Batches', children: [\n { id: 'list-batches', label: 'List Batches' },\n { id: 'get-batch', label: 'Get Batch' },\n { id: 'sync-batch', label: 'Sync Batch' },\n { id: 'cancel-batch', label: 'Cancel Batch' },\n ]},\n { id: 'cases', label: 'Cases', children: [\n { id: 'list-cases', label: 'List Cases' },\n { id: 'get-case', label: 'Get Case' },\n { id: 'case-anomalies', label: 'Anomalies' },\n { id: 'case-operations', label: 'Operations' },\n { id: 'case-edges', label: 'Edges' },\n { id: 'case-documents', label: 'Documents' },\n { id: 'case-merge-split', label: 'Merge & Split' },\n ]},\n { id: 'review', label: 'Review', children: [\n { id: 'list-review-items', label: 'List Items' },\n { id: 'review-stats', label: 'Stats' },\n { id: 'get-review-item', label: 'Get Item' },\n { id: 'review-action', label: 'Take Action' },\n { id: 'review-batch', label: 'Batch Action' },\n { id: 'review-assign', label: 'Assign' },\n ]},\n { id: 'quality', label: 'Quality', children: [\n { id: 'list-quality-datasets', label: 'List Datasets' },\n { id: 'create-quality-dataset', label: 'Create Dataset' },\n { id: 'get-quality-dataset', label: 'Get / Delete Dataset' },\n { id: 'quality-entries', label: 'Entries' },\n { id: 'list-benchmarks', label: 'List Benchmarks' },\n { id: 'create-benchmark', label: 'Create Benchmark' },\n { id: 'get-benchmark-results', label: 'Results & Compare' },\n ]},\n { id: 'routing-rules', label: 'Routing Rules', children: [\n { id: 'list-routing-rules', label: 'List Rules' },\n { id: 'create-routing-rule', label: 'Create Rule' },\n { id: 'manage-routing-rule', label: 'Manage Rule' },\n { id: 'reorder-routing-rules', label: 'Reorder' },\n ]},\n { id: 'reference-data', label: 'Reference Data', children: [\n { id: 'list-reference-data', label: 'List & Create' },\n { id: 'get-reference-data', label: 'Get & Delete' },\n { id: 'reference-data-rows', label: 'Rows & Export' },\n ]},\n { id: 'dialects', label: 'Dialects', children: [\n { id: 'list-dialects', label: 'List & Create' },\n { id: 'manage-dialect', label: 'Manage Dialect' },\n ]},\n { id: 'fields', label: 'Fields', children: [\n { id: 'list-fields', label: 'List Fields' },\n { id: 'field-harmonization', label: 'Harmonization' },\n { id: 'get-field', label: 'Get Field' },\n ]},\n { id: 'registry', label: 'Registry', children: [\n { id: 'registry-query', label: 'Query' },\n ]},\n { id: 'billing', label: 'Billing', children: [\n { id: 'billing-settings', label: 'Settings' },\n { id: 'billing-topup', label: 'Auto Top-Up' },\n { id: 'cost-headers', label: 'Cost Headers' },\n ]},\n { id: 'usage', label: 'Usage', children: [\n { id: 'usage-overview', label: 'Overview' },\n ]},\n { id: 'document-types', label: 'Document Types', children: [\n { id: 'list-document-types', label: 'Document Types' },\n ]},\n { id: 'errors-rate-limits', label: 'Errors & Rate Limits', children: [\n { id: 'error-format', label: 'Error Format' },\n { id: 'error-codes', label: 'Error Codes' },\n { id: 'rate-limits', label: 'Rate Limits' },\n ]},\n];\n\nexport const PLATFORM_NAV_SECTIONS: NavSection[] = [\n { id: 'overview', label: 'Overview', children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'core-concepts', label: 'Core Concepts' },\n { id: 'platform-flow', label: 'Platform Flow' },\n { id: 'getting-started', label: 'Getting Started' },\n ]},\n { id: 'agent', label: 'AI Agent', children: [\n { id: 'agent-capabilities', label: 'Capabilities' },\n { id: 'agent-impact', label: 'Impact Levels' },\n { id: 'agent-dashboard', label: 'Dashboard' },\n ]},\n { id: 'sources-docs', label: 'Inputs & Documents', children: [\n { id: 'uploading', label: 'Uploading Documents' },\n { id: 'supported-formats', label: 'Supported Formats' },\n { id: 'document-processing', label: 'Document Processing' },\n { id: 'document-types', label: 'Document Types' },\n { id: 'document-detail', label: 'Document Detail' },\n { id: 'routing-rules', label: 'Routing Rules' },\n { id: 'source-connectors', label: 'Source Connectors' },\n ]},\n { id: 'field-intelligence', label: 'Field Intelligence', children: [\n { id: 'field-registry', label: 'Field Registry' },\n { id: 'tier-system', label: 'Tier System' },\n { id: 'semantic-clusters', label: 'Semantic Clusters' },\n { id: 'field-resolution', label: 'Field Resolution' },\n { id: 'master-instructions', label: 'Master Instructions' },\n ]},\n { id: 'schemas-templates', label: 'Schemas & Templates', children: [\n { id: 'generated-schemas', label: 'Generated Schemas' },\n { id: 'user-templates', label: 'User Templates' },\n { id: 'schema-features', label: 'Schema Features Reference' },\n { id: 'field-matching', label: 'Field Matching' },\n { id: 'reference-tables', label: 'Reference Tables' },\n { id: 'versioning-drafts', label: 'Versioning & Drafts' },\n { id: 'test-extraction', label: 'Test Extraction' },\n { id: 'dialects', label: 'Dialects' },\n { id: 'bypass-strategies', label: 'Bypass Strategies' },\n { id: 'format-constraints', label: 'Format Constraints' },\n ]},\n { id: 'extraction-jobs', label: 'Extraction Jobs', children: [\n { id: 'creating-job', label: 'Creating a Job' },\n { id: 'pipeline-overview', label: '4-Phase Pipeline' },\n { id: 'phase-1', label: 'Phase 1: Resolve' },\n { id: 'phase-2', label: 'Phase 2: Agent' },\n { id: 'phase-3', label: 'Phase 3: Validation' },\n { id: 'phase-4', label: 'Phase 4: Re-read' },\n { id: 'reviewing-results', label: 'Reviewing Results' },\n { id: 'confidence-provenance', label: 'Confidence & Provenance' },\n { id: 'corrections', label: 'Corrections' },\n ]},\n { id: 'linking-cases', label: 'Linking & Cases', children: [\n { id: 'link-keys', label: 'Link Keys' },\n { id: 'entity-linking', label: 'Entity Linking' },\n { id: 'cases', label: 'Cases' },\n { id: 'document-graph', label: 'Document Graph' },\n { id: 'anomaly-detection', label: 'Anomaly Detection' },\n { id: 'evidence-validation', label: 'Evidence Validation' },\n ]},\n { id: 'batch-inference', label: 'Batch Inference', children: [\n { id: 'batch-overview', label: 'Overview' },\n { id: 'batch-processing', label: 'Batch Processing Mode' },\n { id: 'batch-monitoring', label: 'Monitoring Batches' },\n ]},\n { id: 'matching', label: 'Smart Matching', children: [\n { id: 'reference-data', label: 'Reference Data' },\n { id: 'matching-configs', label: 'Matching Configurations' },\n { id: 'matching-runs', label: 'Running Matches' },\n { id: 'matching-results', label: 'Match Results' },\n ]},\n { id: 'data-products', label: 'Data Products', children: [\n { id: 'dataset-templates', label: 'Dataset Templates' },\n { id: 'assemblies', label: 'Assemblies' },\n { id: 'id-dispensers', label: 'ID Dispensers' },\n { id: 'data-product-sharing', label: 'Sharing & Export' },\n ]},\n { id: 'validation-quality', label: 'Validation & Quality', children: [\n { id: 'validation-checks', label: 'Validation Checks' },\n { id: 'ground-truth', label: 'Golden Samples' },\n { id: 'approval-gates', label: 'Approval Gates' },\n { id: 'approval-queue', label: 'Approval Queue' },\n ]},\n { id: 'delivery', label: 'Outputs', children: [\n { id: 'delivery-pipeline', label: 'How Delivery Works' },\n { id: 'destinations', label: 'Destinations' },\n { id: 'bindings', label: 'Bindings' },\n { id: 'signals-catalog', label: 'Signals & Catalog' },\n { id: 'delivery-history', label: 'History & DLQ' },\n ]},\n { id: 'workspace-settings', label: 'Workspace Settings', children: [\n { id: 'shared-dialects', label: 'Shared Dialects' },\n { id: 'reference-primitives', label: 'Reference Primitives' },\n { id: 'change-review', label: 'Change Review' },\n ]},\n { id: 'search-filtering', label: 'Search & Filtering', children: [\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'document-filters', label: 'Document Filters' },\n ]},\n { id: 'api-webhooks', label: 'API & Webhooks', children: [\n { id: 'api-keys', label: 'API Keys' },\n { id: 'public-api', label: 'Public API' },\n { id: 'webhooks', label: 'Webhooks' },\n ]},\n { id: 'team-admin', label: 'Team & Admin', children: [\n { id: 'team-management', label: 'Team Management' },\n { id: 'usage-registry', label: 'Usage & Registry' },\n { id: 'admin-panel', label: 'Admin Panel' },\n { id: 'shortcuts', label: 'Keyboard Shortcuts' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// Section SEO metadata (title + description for each top-level section)\n// ---------------------------------------------------------------------------\n\nexport interface SectionMeta {\n id: string;\n title: string;\n description: string;\n}\n\nexport const API_SECTION_META: SectionMeta[] = [\n { id: 'overview', title: 'API Overview', description: 'Introduction, authentication, base URL, and quick start guide for the Talonic document extraction API.' },\n { id: 'extract', title: 'Extract Endpoint', description: 'POST /v1/extract — send a document and schema, receive structured validated data. Supports PDF, DOCX, images, and 25+ formats.' },\n { id: 'documents', title: 'Documents API', description: 'List, retrieve, and delete documents. Each document retains its original file, extracted text, and metadata.' },\n { id: 'extractions', title: 'Extractions API', description: 'Query extraction results, retrieve structured data with confidence scores, and submit field corrections.' },\n { id: 'schemas', title: 'Schemas API', description: 'Create, update, and manage reusable extraction schemas. Supports JSON Schema, simplified fields, and flat key-type maps.' },\n { id: 'dialects', title: 'Dialects API', description: 'Create, update, and manage shared output formatting configurations — date format, delimiter, encoding, number locale, and boolean format.' },\n { id: 'references', title: 'References API', description: 'Manage workspace-level reference primitives (lookup tables) with automatic versioning, multi-hop resolution, and key binding.' },\n { id: 'telemetry', title: 'Telemetry API', description: 'Aggregate structuring metrics — capture hit rate, synthesize rate, strategy distribution, and tier funnel breakdowns per schema or run.' },\n { id: 'provenance', title: 'Provenance API', description: 'Per-cell audit trails showing tier, strategy, sub-move, confidence score, and reasoning trace for every value in a record.' },\n { id: 'jobs', title: 'Jobs API', description: 'Track asynchronous extraction jobs with progress, phase status, and grid fill rate statistics.' },\n { id: 'sources', title: 'Inputs API', description: 'Manage document sources for programmatic ingestion. Each source has its own API key and supports batch processing.' },\n { id: 'filter-search', title: 'Filter & Search API', description: 'Field autocomplete, document filtering with composable conditions, global omnisearch, and saved filter management.' },\n { id: 'webhooks', title: 'Webhooks', description: 'Real-time event notifications with HMAC-SHA256 signed payloads, delivery tracking, and exponential backoff retries.' },\n { id: 'resolutions', title: 'Resolutions API', description: 'Resolution runs — apply field normalization, transforms, and lookup cascades to extracted data. List, create, execute, and delete resolution runs.' },\n { id: 'linking', title: 'Linking API', description: 'Document linking graph — link keys, document links, entity graph, classification, backfill operations, and document-case mapping.' },\n { id: 'nshot', title: 'N-Shot API', description: 'N-Shot comparison endpoints for job runs — summary, field comparisons, overrides, and AI/human judge decisions.' },\n { id: 'schema-graph', title: 'Schema Graph API', description: 'Schema class ontology — versioned classes, diffs with approval/rejection workflow, inter-class edges, aliases, and D3-compatible visualization.' },\n { id: 'structuring', title: 'Structuring API', description: 'Validation checks CRUD, approval gates with configurable rules, result check outcomes, pending approvals queue, and delivery triggers.' },\n { id: 'validation', title: 'Validation API', description: 'Golden sample management and validation runs for measuring extraction accuracy against ground truth datasets.' },\n { id: 'credits', title: 'Credits API', description: 'Credit balance, transaction history, aggregate usage summaries, daily usage breakdown, and per-request usage log.' },\n { id: 'agent', title: 'Agent API', description: 'Workspace context snapshot and agent tool discovery endpoints for programmatic access to embedded AI assistant capabilities.' },\n { id: 'matching', title: 'Matching API', description: 'Reference data matching — create configs with weighted field strategies, run matches, get top-5 candidates per document, and AI-generate strategies.' },\n { id: 'delivery', title: 'Delivery API', description: 'Outbound delivery pipeline — destinations, bindings, delivery history, dead letter queue, and catalog discovery for signals, deliverables, serializers, and connectors.' },\n { id: 'batches', title: 'Batches API', description: 'Batch extraction processing at 50% cost — list, get, sync with provider, and cancel batches.' },\n { id: 'cases', title: 'Cases API', description: 'Case management — list, get, anomalies, status lifecycle, edge confirmation, document pinning, merge and split operations.' },\n { id: 'review', title: 'Review API', description: 'Review queue for validation records — list items, stats, take action (approve/reject/flag), batch operations, and assignment.' },\n { id: 'quality', title: 'Quality API', description: 'Ground truth datasets, entries management with CSV import, benchmark runs, per-field accuracy results, and benchmark comparison.' },\n { id: 'routing-rules', title: 'Routing Rules API', description: 'Document routing rules — create, manage, and reorder priority-based rules for automatic document workflow assignment.' },\n { id: 'reference-data', title: 'Reference Data API', description: 'Upload, list, and manage reference data tables used as lookup targets for matching configurations. Supports JSON upload, paginated row access, and CSV export.' },\n { id: 'fields', title: 'Fields API', description: 'Read-only access to the field registry — list fields with filters, cross-schema harmonization analysis, field detail with occurrences, and embedding-based similarity search.' },\n { id: 'usage', title: 'Usage API', description: 'AI token usage tracking — aggregate stats by operation type and model, per-document usage breakdown with cost estimates.' },\n { id: 'document-types', title: 'Document Types API', description: 'Document type classification — list workspace document types by frequency and retrieve the 529-type ontology taxonomy.' },\n { id: 'registry', title: 'Registry API', description: 'Query previously-extracted field values across all documents — ingest once, query forever. Zero re-extraction, zero AI calls.' },\n { id: 'billing', title: 'Billing API', description: 'Billing settings, auto top-up for AI agents, and cost response headers on extraction requests.' },\n { id: 'errors-rate-limits', title: 'Errors & Rate Limits', description: 'Error response format, error codes, rate limit tiers by plan, and rate limit headers.' },\n];\n\nexport const PLATFORM_SECTION_META: SectionMeta[] = [\n { id: 'overview', title: 'Platform Overview', description: 'Core concepts, platform flow, and getting started guide for the Talonic document structuring platform.' },\n { id: 'agent', title: 'AI Agent', description: 'Embedded AI assistant accessible via Cmd+I from any page. Inspects schemas, searches documents, analyzes extraction quality, explores cases, and builds schemas through natural language.' },\n { id: 'sources-docs', title: 'Inputs & Documents', description: 'Upload documents via drag-and-drop, API, or connectors. 25+ formats supported with automatic OCR and classification.' },\n { id: 'field-intelligence', title: 'Field Intelligence', description: 'Unified field registry with tier system, semantic clustering, and AI-synthesized master extraction instructions.' },\n { id: 'schemas-templates', title: 'Schemas & Templates', description: 'AI-generated schemas per document type and user-defined templates with field matching, reference tables, and versioning.' },\n { id: 'structuring', title: 'Structuring', description: 'Vocabulary-driven structuring system with seven field strategies, four processing tiers, capture sub-moves, modifiers, constraints, and synthesize fallback.' },\n { id: 'extraction-jobs', title: 'Extraction Jobs', description: 'The 4-phase pipeline: Resolve, Agent, Validation, Re-read. Progressive grid filling with per-cell provenance and confidence.' },\n { id: 'linking-cases', title: 'Linking & Cases', description: 'Document linking discovers relationships through shared entities. Related documents grouped into cases with evidence chains.' },\n { id: 'batch-inference', title: 'Batch Inference', description: 'Batch processing mode defers Claude extraction to the provider batch API at 50% cost with 48-hour delivery. Monitor batch progress and results.' },\n { id: 'matching', title: 'Smart Matching', description: 'Upload reference datasets and configure weighted field-to-field matching strategies. Run matches asynchronously and review top-5 candidates per document.' },\n { id: 'data-products', title: 'Data Products', description: 'Dataset templates for reusable output specifications and assemblies for combining multi-source documents into structured datasets.' },\n { id: 'validation-quality', title: 'Validation & Quality', description: 'Automated validation checks, golden sample benchmarking, configurable approval gates, and a manual review queue for flagged results.' },\n { id: 'delivery', title: 'Outputs & Delivery', description: 'Push structured data to webhooks, REST APIs, SFTP, email, or cloud storage with field mappings, triggers, delivery configuration, and telemetry.' },\n { id: 'workspace-settings', title: 'Workspace Settings', description: 'Shared dialects for output formatting, reference primitives for lookup tables, and change review governance for production workspaces.' },\n { id: 'search-filtering', title: 'Search & Filtering', description: 'Global omnisearch (Cmd+K) and advanced document filtering by extracted field values with saved presets.' },\n { id: 'api-webhooks', title: 'API & Webhooks', description: 'API key management, public REST API overview, and webhook configuration for event-driven integrations.' },\n { id: 'team-admin', title: 'Team & Admin', description: 'Role-based access control, credit usage tracking, admin panel, and keyboard shortcuts.' },\n];\n\n// ---------------------------------------------------------------------------\n// OpenAPI spec (full spec from openapi.json, bundled at build time by tsup)\n//\n// Consumers import it unchanged:\n// import { OPENAPI_SPEC } from '@talonic/docs/seo'\n//\n// Or import the raw JSON directly:\n// import spec from '@talonic/docs/openapi.json'\n// ---------------------------------------------------------------------------\n\n// Loaded at build time by tsup (esbuild json loader). The 440KB spec is\n// bundled into seo.js so consumers get it as a plain import with no I/O.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — JSON import handled by esbuild at build time\nimport _openapiSpec from '../openapi.json';\nexport const OPENAPI_SPEC: Record<string, unknown> = _openapiSpec as Record<string, unknown>;\n\n// ---------------------------------------------------------------------------\n// FAQ data (for JSON-LD FAQPage schema)\n// ---------------------------------------------------------------------------\n\nexport const API_FAQ = [\n { question: 'What file formats does the Talonic API support?', answer: 'PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, XLSM, PNG, JPG, JPEG, GIF, WEBP, TXT, MD, HTML, XML, JSON, EML, CSV, MSG, BMP, and ZIP archives.' },\n { question: 'How does authentication work?', answer: 'All API requests require a Bearer token in the Authorization header. API keys carry the tlnc_ prefix and are scoped to a source. Create and manage keys from Settings → API Keys.' },\n { question: 'What schema formats are supported?', answer: 'Three formats: JSON Schema (full control), simplified fields (recommended), and flat key-type maps (quick prototyping). Supported types: string, number, integer, boolean, date, array, object, enum.' },\n { question: 'What are the rate limits?', answer: 'Per-key rate limits: 100 req/s extraction, 1,000 req/s read, 200 req/s write. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included on every response.' },\n { question: 'How do webhooks work?', answer: 'Webhooks deliver POST requests with HMAC-SHA256 signed JSON payloads. Events: extraction.complete, extraction.failed, document.ingested. Failed deliveries retry with exponential backoff (1min, 5min, 30min, 4hr).' },\n { question: 'Can I extract data asynchronously?', answer: 'Yes. Set async: true or provide a webhook_url in the extract request. Returns a 202 with a job ID that you can poll at /v1/jobs/:id.' },\n];\n\n// ---------------------------------------------------------------------------\n// SDK navigation sections\n// ---------------------------------------------------------------------------\n\nexport const SDK_NAV_SECTIONS: NavSection[] = [\n { id: 'sdk-overview', label: 'Overview', children: [\n { id: 'sdk-introduction', label: 'Introduction' },\n { id: 'sdk-installation', label: 'Installation' },\n { id: 'sdk-authentication', label: 'Authentication' },\n { id: 'sdk-quickstart', label: 'Quick Start' },\n ]},\n { id: 'sdk-client', label: 'Client', children: [\n { id: 'sdk-configuration', label: 'Configuration' },\n { id: 'sdk-extract', label: 'Extract' },\n ]},\n { id: 'sdk-resources', label: 'Resources', children: [\n { id: 'sdk-documents', label: 'Documents' },\n { id: 'sdk-extractions', label: 'Extractions' },\n { id: 'sdk-schemas', label: 'Schemas' },\n { id: 'sdk-jobs', label: 'Jobs' },\n ]},\n { id: 'sdk-cli', label: 'CLI', children: [\n { id: 'sdk-cli-usage', label: 'Usage' },\n ]},\n { id: 'sdk-errors', label: 'Error Handling', children: [\n { id: 'sdk-error-classes', label: 'Error Classes' },\n { id: 'sdk-retries', label: 'Retries' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// MCP navigation sections\n// ---------------------------------------------------------------------------\n\nexport const MCP_NAV_SECTIONS: NavSection[] = [\n { id: 'mcp-overview', label: 'Overview', children: [\n { id: 'mcp-introduction', label: 'Introduction' },\n { id: 'mcp-installation', label: 'Installation' },\n { id: 'mcp-authentication', label: 'Authentication' },\n ]},\n { id: 'mcp-clients', label: 'Client Setup', children: [\n { id: 'mcp-claude-desktop', label: 'Claude Desktop' },\n { id: 'mcp-cursor', label: 'Cursor' },\n { id: 'mcp-cline', label: 'Cline' },\n { id: 'mcp-continue', label: 'Continue' },\n { id: 'mcp-cowork', label: 'Cowork' },\n ]},\n { id: 'mcp-tools', label: 'Tools', children: [\n { id: 'mcp-talonic-extract', label: 'talonic_extract' },\n { id: 'mcp-talonic-search', label: 'talonic_search' },\n { id: 'mcp-talonic-filter', label: 'talonic_filter' },\n { id: 'mcp-talonic-get-document', label: 'talonic_get_document' },\n { id: 'mcp-talonic-to-markdown', label: 'talonic_to_markdown' },\n { id: 'mcp-talonic-list-schemas', label: 'talonic_list_schemas' },\n { id: 'mcp-talonic-save-schema', label: 'talonic_save_schema' },\n ]},\n { id: 'mcp-resources', label: 'Resources', children: [\n { id: 'mcp-schemas-resource', label: 'talonic://schemas' },\n ]},\n { id: 'mcp-advanced', label: 'Advanced', children: [\n { id: 'mcp-drag-drop', label: 'Drag & Drop in Chat' },\n { id: 'mcp-architecture', label: 'Architecture' },\n { id: 'mcp-configuration', label: 'Configuration' },\n { id: 'mcp-troubleshooting', label: 'Troubleshooting' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// SDK + MCP section SEO metadata\n// ---------------------------------------------------------------------------\n\nexport const SDK_SECTION_META: SectionMeta[] = [\n { id: 'sdk-overview', title: 'Node SDK Overview', description: 'Install and configure the official Talonic Node.js SDK. Extract structured data from any document with a single function call.' },\n { id: 'sdk-client', title: 'SDK Client', description: 'Configure the Talonic client with API key, base URL, timeout, retries, and custom fetch. Top-level extract method for single-call extraction.' },\n { id: 'sdk-resources', title: 'SDK Resources', description: 'Documents, extractions, schemas, and jobs resource APIs in the Talonic Node SDK.' },\n { id: 'sdk-cli', title: 'SDK CLI', description: 'The talonic CLI binary for command-line extraction, schema management, and document operations.' },\n { id: 'sdk-errors', title: 'SDK Error Handling', description: 'Typed error classes, automatic retries with exponential backoff, and rate limit handling in the Talonic Node SDK.' },\n];\n\nexport const MCP_SECTION_META: SectionMeta[] = [\n { id: 'mcp-overview', title: 'MCP Server Overview', description: 'Install the official Talonic MCP server to give AI agents structured document extraction via the Model Context Protocol.' },\n { id: 'mcp-clients', title: 'MCP Client Setup', description: 'Step-by-step setup for Claude Desktop, Cursor, Cline, Continue, and Cowork MCP clients.' },\n { id: 'mcp-tools', title: 'MCP Tools', description: 'Seven MCP tools: extract, search, filter, get document, to markdown, list schemas, and save schema.' },\n { id: 'mcp-resources', title: 'MCP Resources', description: 'The talonic://schemas MCP resource for browsing saved schemas in compatible clients.' },\n { id: 'mcp-advanced', title: 'MCP Advanced', description: 'Drag-and-drop file handling, architecture overview, configuration options, and troubleshooting for the Talonic MCP server.' },\n];\n\nexport const SDK_FAQ = [\n { question: 'How do I install the Talonic Node SDK?', answer: 'Run npm install @talonic/node. Requires Node.js 18 or newer. Zero runtime dependencies.' },\n { question: 'How do I extract data from a document with the SDK?', answer: 'Call talonic.extract() with a file_path (or file_url/buffer) and a schema defining the fields you want. Returns structured JSON with confidence scores.' },\n { question: 'Does the SDK retry on errors?', answer: 'Yes. The SDK retries automatically on 429, 500, 502, 503, 504, network errors, and timeouts with exponential backoff capped at 16s. The API can mark errors as non-retryable.' },\n { question: 'What error types does the SDK throw?', answer: 'TalonicAuthError (401/403), TalonicNotFoundError (404), TalonicValidationError (400/409/413/422), TalonicRateLimitError (429), TalonicServerError (5xx), TalonicNetworkError, and TalonicTimeoutError.' },\n];\n\nexport const MCP_FAQ = [\n { question: 'What is the Talonic MCP server?', answer: 'An official Model Context Protocol server that gives AI agents seven tools for document extraction, search, filtering, and schema management via the Talonic API.' },\n { question: 'How do I install the Talonic MCP server?', answer: 'Add a one-line npx invocation to your MCP client config: {\"command\": \"npx\", \"args\": [\"-y\", \"@talonic/mcp@latest\"], \"env\": {\"TALONIC_API_KEY\": \"tlnc_...\"}}. No clone or build required.' },\n { question: 'Which MCP clients are supported?', answer: 'Claude Desktop, Cursor, Cline, Continue, and Cowork. Any MCP-compliant client can connect.' },\n { question: 'How does file upload work in chat clients?', answer: 'From v0.1.4, agents can pass file_data (base64) + filename instead of a file path. This handles drag-and-drop in sandboxed chat clients like Claude Desktop.' },\n];\n\nexport const PLATFORM_FAQ = [\n { question: 'What is the Field Registry?', answer: 'The unified knowledge graph of all canonical fields discovered across documents. Fields are organized into three tiers based on frequency: Tier 1 (core), Tier 2 (established), Tier 3 (emerging).' },\n { question: 'How does the 4-phase extraction pipeline work?', answer: 'Phase 1 (Resolve) fills ~30% of cells from graph matches — no AI needed. Phase 2 (Agent) uses AI strategies. Phase 3 (Validation) runs cross-field checks. Phase 4 (Re-read) fills remaining gaps with targeted document re-reading.' },\n { question: 'What are cases in Talonic?', answer: 'Cases are groups of 2+ documents connected through shared entities (names, reference numbers, project codes). They are automatically discovered by the linking pipeline and include evidence chains and AI narration.' },\n { question: 'How does the confidence gate work?', answer: 'Once a cell is filled with confidence ≥ 0.7, no later pipeline phase can overwrite it. This prevents high-confidence lookup results (0.95) from being replaced by lower-confidence agent extractions (0.65).' },\n { question: 'What file formats are supported?', answer: '25+ formats across three paths: text fast-path (TXT, MD, HTML, JSON, CSV), AI Vision (PNG, JPG, GIF, WEBP), and OCR (PDF, DOCX, PPTX, XLSX, MSG, BMP). ZIP archives are unpacked automatically.' },\n];\n\n// ---------------------------------------------------------------------------\n// llms.txt content (plain text summary for AI agents)\n// ---------------------------------------------------------------------------\n\nexport const LLMS_TXT = `# Talonic\n\n> The data registry for unstructured documents. Agents extract once, query forever. 529 document types, 25+ file formats, per-cell provenance. Co-author of DIN SPEC 91491.\n\n## For Agents\n\n- [MCP Server](https://mcp.talonic.com/mcp): Hosted MCP endpoint — zero install, native Model Context Protocol\n- [MCP Setup Guide](https://talonic.com/docs/mcp): Claude Desktop, Cursor, Cline, Continue, Cowork configuration\n- [Cost Headers](https://talonic.com/developers#billing): X-Talonic-Cost-Credits and X-Talonic-Balance-Credits on every response\n- [Credit Balance & Runway](https://talonic.com/docs/api/credits): GET /v1/credits/balance — check remaining budget before calls\n- [Idempotency-Key](https://talonic.com/docs/api#idempotency): Safe retries — pass Idempotency-Key header to deduplicate requests\n- [Auto Top-Up](https://talonic.com/developers#billing): Human-gated credit replenishment — agents can check, humans approve\n- [Sync/Async Contract](https://talonic.com/docs/api/extract): ≤5 pages → 200 sync response; larger → 202 with poll_url\n\n## Three Modes\n\n- [Mode 1 — Extract Everything](https://talonic.com/developers#trio): POST /v1/extract with no schema — discover all fields in any document\n- [Mode 2 — Extract a Shape](https://talonic.com/developers#trio): POST /v1/extract with a schema — get exactly the fields you define\n- [Mode 3 — Query Without Re-extracting](https://talonic.com/developers#trio): POST /v1/documents/filter — query the Field Registry across previously extracted documents\n\n## API Quickstart\n\n- [Getting Started](https://talonic.com/docs/getting-started): Authentication, first extraction, schema creation\n- [POST /v1/extract](https://talonic.com/docs/api/extract): Primary extraction endpoint — sync, async, and batch modes\n- [Documents](https://talonic.com/docs/api/documents): List, retrieve, delete documents and get markdown\n- [Extractions](https://talonic.com/docs/api/extractions): Query extraction results and submit corrections\n- [Schemas](https://talonic.com/docs/api/schemas): Create, update, list, and delete extraction schemas\n- [Jobs](https://talonic.com/docs/api/jobs): Track async extraction jobs and results\n- [Webhooks](https://talonic.com/docs/api/webhooks): Event-driven flow — HMAC-SHA256 signed, exponential backoff retries\n- [Search & Filter](https://talonic.com/docs/api/search): Omnisearch, document filtering, field autocomplete\n- [OpenAPI 3.1 Spec](https://talonic.com/openapi.json): Machine-readable API specification\n\n## Concepts\n\n- [Field Registry](https://talonic.com/docs/concepts/field-registry): Unified knowledge graph of all extracted fields — tiers, clusters, master instructions\n- [Provenance & Confidence](https://talonic.com/docs/concepts/provenance): Per-cell confidence scores (0.0–1.0), resolution types, reasoning traces\n- [Cases & Document Linking](https://talonic.com/docs/concepts/cases): Entity matching, case formation, evidence chains\n- [4-Phase Pipeline](https://talonic.com/docs/concepts/pipeline): Resolve → Agent → Validation → Re-read\n- [Document Ontology](https://talonic.com/docs/concepts/ontology): 529-type classification across 10 categories\n- [Schemas](https://talonic.com/docs/concepts/schemas): Generated schemas vs. user templates, field matching, versioning\n\n## SDKs\n\n- [Node SDK](https://talonic.com/docs/sdk): Official Node.js/TypeScript SDK — extract, documents, schemas, jobs\n- [MCP Server Docs](https://talonic.com/docs/mcp): 7 tools — extract, search, filter, get_document, to_markdown, list_schemas, save_schema\n- [Authentication](https://talonic.com/docs/authentication): API key creation, scopes, Bearer token usage\n- [Error Codes](https://talonic.com/docs/errors): Error response format and code reference\n- [Rate Limits](https://talonic.com/docs/rate-limits): Rate limit tiers by plan and headers\n\n## Platform Guide\n\n- [Platform Overview](https://talonic.com/docs/platform): Core concepts, platform flow, supported formats\n- [Field Intelligence](https://talonic.com/docs/platform/tier-system): Tier system, semantic clusters, master instructions\n- [Schemas & Templates](https://talonic.com/docs/platform/generated-schemas): Schema creation, field matching, versioning, dialects\n- [Extraction Jobs](https://talonic.com/docs/platform/creating-job): Creating jobs, reviewing results, confidence and provenance\n- [Linking & Cases](https://talonic.com/docs/platform/entity-linking): Entity linking, link keys, cases, anomaly detection\n- [Validation & Quality](https://talonic.com/docs/platform/validation-checks): Golden samples, approval gates, ground truth benchmarks\n- [Delivery](https://talonic.com/docs/platform/destinations): Webhooks, REST, SFTP, email, S3/R2, field mappings, triggers\n\n## Document Types\n\n- [Financial & Tax](https://talonic.com/document-types/financial-tax): Schedule K-1, VAT Returns, Balance Sheets, SWIFT MT103, and 49 more\n- [Procurement & Invoicing](https://talonic.com/document-types/procurement-invoicing): Purchase Orders, Commercial Invoices, RFPs, and 50 more\n- [Trade & Logistics](https://talonic.com/document-types/trade-logistics): Bills of Lading, Air Waybills, Customs Declarations, and 50 more\n- [Legal & Contracts](https://talonic.com/document-types/legal-contracts): NDAs, MSAs, Loan Agreements, DPAs, and 48 more\n- [Corporate & Governance](https://talonic.com/document-types/corporate-governance): KYC Packages, Board Resolutions, ESG Reports, and 50 more\n- [Healthcare & Life Sciences](https://talonic.com/document-types/healthcare-life-sciences): Discharge Summaries, Clinical Trials, 510(k), and 50 more\n- [Manufacturing & Quality](https://talonic.com/document-types/manufacturing-quality): Certificates of Analysis, FMEA, BOM, PPAP, and 49 more\n- [Insurance & Claims](https://talonic.com/document-types/insurance-claims): FNOL Reports, Policy Declarations, Reinsurance, and 50 more\n- [Real Estate & Construction](https://talonic.com/document-types/real-estate-construction): Property Deeds, AIA G702, Lien Waivers, and 50 more\n- [HR & Employee Records](https://talonic.com/document-types/hr-employee-records): I-9 Forms, FMLA Certifications, Payroll Registers, and 49 more\n\n## Company\n\n- [Product](https://talonic.com/product): Full platform walkthrough for technical evaluation\n- [Pricing](https://talonic.com/pricing): Free (5,000 credits/mo), Pro (€49/mo), Enterprise (custom)\n- [Developers](https://talonic.com/developers): Three Modes, API, SDK, MCP server overview\n- [DIN SPEC 91491](https://talonic.com/din-91491): Europe's first standard for AI-ready data\n- [Security](https://talonic.com/security): GDPR, HIPAA, ISO 27001, ISO 42001, EU data residency\n- [Contact](https://talonic.com/contact): Book a demo or request a schema audit\n\n## Optional\n\n- [Full Documentation for AI Models](https://talonic.com/llms-full.txt): Concatenated full reference — API, platform, pricing, compliance\n- [Talonic vs Reducto](https://talonic.com/vs/reducto): Schema-first vs. parse-first comparison\n- [Talonic vs Instabase](https://talonic.com/vs/instabase): Platform architecture comparison\n`;\n\nexport const LLMS_FULL_TXT_HEADER = `# Talonic — Full Documentation\n\n> This file contains the complete Talonic documentation for LLM consumption.\n> For a summary, see llms.txt.\n\n`;\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","useCallback","jsx","jsxs","useState","useCallback","useState","useEffect","useRef","useCallback","jsx","jsxs","NAV_SECTIONS","useState","useRef","useEffect","useCallback"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/CodeBlock.tsx","../src/components/DownloadMarkdown.tsx","../src/components/Sidebar.tsx","../src/components/DocPrimitives.tsx","../src/pages/ApiReference.tsx","../src/pages/PlatformGuide.tsx","../src/seo.ts"],"sourcesContent":["'use client';\n\nimport { useState, useCallback } from 'react';\n\n/** Regex-based JSON syntax highlighter. */\nexport function highlightJson(raw: string): React.ReactNode[] {\n const lines = raw.split('\\n');\n return lines.map((line, i) => {\n const parts: React.ReactNode[] = [];\n let rest = line;\n let key = 0;\n\n const regex =\n /(\"(?:\\\\.|[^\"\\\\])*\")\\s*(:)?|(\\b\\d+(?:\\.\\d+)?\\b)|\\b(true|false)\\b|\\b(null)\\b/g;\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n\n while ((match = regex.exec(rest)) !== null) {\n if (match.index > lastIndex) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {rest.slice(lastIndex, match.index)}\n </span>,\n );\n }\n\n if (match[1] && match[2]) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {match[1]}\n </span>,\n );\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {match[2]}\n </span>,\n );\n } else if (match[1]) {\n parts.push(\n <span key={key++} className=\"text-[#86EFAC]\">\n {match[1]}\n </span>,\n );\n } else if (match[3]) {\n parts.push(\n <span key={key++} className=\"text-[#93C5FD]\">\n {match[3]}\n </span>,\n );\n } else if (match[4]) {\n parts.push(\n <span key={key++} className=\"text-[#93C5FD]\">\n {match[4]}\n </span>,\n );\n } else if (match[5]) {\n parts.push(\n <span key={key++} className=\"text-[#94A3B8]\">\n {match[5]}\n </span>,\n );\n }\n\n lastIndex = match.index + match[0].length;\n }\n\n if (lastIndex < rest.length) {\n parts.push(\n <span key={key++} className=\"text-[#CBD5E1]\">\n {rest.slice(lastIndex)}\n </span>,\n );\n }\n\n return (\n <div key={i} className=\"leading-relaxed\">\n {parts.length > 0 ? parts : '\\u00A0'}\n </div>\n );\n });\n}\n\n/** Copyable code block with optional JSON syntax highlighting. */\nexport function CodeBlock({\n children,\n language = 'json',\n title,\n}: {\n children: string;\n language?: string;\n title?: string;\n}) {\n const [copied, setCopied] = useState(false);\n const code = children.trim();\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [code]);\n\n const isJson = language === 'json';\n\n return (\n <div className=\"relative group rounded-lg overflow-hidden border border-[#2A2A3E] my-4\">\n {title && (\n <div className=\"px-4 py-2 bg-[#12121E] border-b border-[#2A2A3E] flex items-center justify-between\">\n <span className=\"text-[11px] font-medium text-[#94A3B8] tracking-wider uppercase font-mono\">\n {title}\n </span>\n </div>\n )}\n <div className=\"relative\">\n <pre className=\"bg-[#0F0F1A] px-4 py-3.5 overflow-x-auto text-[13px] leading-relaxed font-mono\">\n <code>{isJson ? highlightJson(code) : <span className=\"text-[#CBD5E1]\">{code}</span>}</code>\n </pre>\n <button\n onClick={handleCopy}\n className=\"absolute top-2.5 right-2.5 p-1.5 rounded-md bg-[#1A1A2E] border border-[#2A2A3E] text-[#94A3B8] opacity-0 group-hover:opacity-100 hover:text-white hover:border-[#4A4A6E] transition-all duration-150\"\n aria-label=\"Copy code\"\n >\n {copied ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n ) : (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n/**\n * Converts the rendered documentation DOM content to Markdown and triggers a download.\n * Reads the live DOM so the MD file always matches the displayed content.\n */\nfunction domToMarkdown(container: HTMLElement): string {\n const lines: string[] = [];\n\n function processNode(node: Node) {\n if (node.nodeType === Node.TEXT_NODE) {\n const text = node.textContent || '';\n if (text.trim()) lines.push(text);\n return;\n }\n\n if (node.nodeType !== Node.ELEMENT_NODE) return;\n const el = node as HTMLElement;\n const tag = el.tagName.toLowerCase();\n\n // Skip navigation, buttons, SVGs\n if (tag === 'nav' || tag === 'button' || tag === 'svg' || tag === 'style') return;\n if (el.getAttribute('role') === 'navigation') return;\n if (el.classList.contains('lg:hidden')) return;\n\n switch (tag) {\n case 'h1':\n lines.push(`\\n# ${el.textContent?.trim()}\\n`);\n return;\n case 'h2':\n lines.push(`\\n## ${el.textContent?.trim()}\\n`);\n return;\n case 'h3':\n lines.push(`\\n### ${el.textContent?.trim()}\\n`);\n return;\n case 'h4':\n lines.push(`\\n#### ${el.textContent?.trim()}\\n`);\n return;\n case 'pre': {\n const code = el.querySelector('code');\n const lang = code?.className?.match(/language-(\\w+)/)?.[1] || '';\n const text = el.textContent?.trim() || '';\n lines.push(`\\n\\`\\`\\`${lang}\\n${text}\\n\\`\\`\\`\\n`);\n return;\n }\n case 'code': {\n if (el.parentElement?.tagName.toLowerCase() !== 'pre') {\n lines.push(`\\`${el.textContent?.trim()}\\``);\n return;\n }\n break;\n }\n case 'table': {\n const rows = el.querySelectorAll('tr');\n rows.forEach((row, i) => {\n const cells = row.querySelectorAll('th, td');\n const cellTexts = Array.from(cells).map(c => c.textContent?.trim() || '');\n lines.push(`| ${cellTexts.join(' | ')} |`);\n if (i === 0) {\n lines.push(`| ${cellTexts.map(() => '---').join(' | ')} |`);\n }\n });\n lines.push('');\n return;\n }\n case 'ul': {\n el.querySelectorAll(':scope > li').forEach(li => {\n lines.push(`- ${li.textContent?.trim()}`);\n });\n lines.push('');\n return;\n }\n case 'ol': {\n el.querySelectorAll(':scope > li').forEach((li, i) => {\n lines.push(`${i + 1}. ${li.textContent?.trim()}`);\n });\n lines.push('');\n return;\n }\n case 'blockquote': {\n const text = el.textContent?.trim() || '';\n text.split('\\n').forEach(line => lines.push(`> ${line.trim()}`));\n lines.push('');\n return;\n }\n case 'p': {\n const text = el.textContent?.trim();\n if (text) lines.push(`\\n${text}\\n`);\n return;\n }\n case 'hr':\n lines.push('\\n---\\n');\n return;\n case 'a': {\n const href = el.getAttribute('href') || '';\n const text = el.textContent?.trim() || '';\n if (href && text) {\n lines.push(`[${text}](${href})`);\n return;\n }\n break;\n }\n case 'strong':\n case 'b':\n lines.push(`**${el.textContent?.trim()}**`);\n return;\n case 'em':\n case 'i':\n lines.push(`*${el.textContent?.trim()}*`);\n return;\n }\n\n el.childNodes.forEach(processNode);\n }\n\n container.childNodes.forEach(processNode);\n\n return lines.join('\\n').replace(/\\n{4,}/g, '\\n\\n\\n').trim() + '\\n';\n}\n\nfunction downloadBlob(content: string, filename: string) {\n const blob = new Blob([content], { type: 'text/markdown' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n}\n\ninterface DownloadMarkdownProps {\n contentRef: React.RefObject<HTMLElement | null>;\n filename: string;\n}\n\nexport default function DownloadMarkdown({ contentRef, filename }: DownloadMarkdownProps) {\n const handleDownload = () => {\n if (!contentRef.current) return;\n const md = domToMarkdown(contentRef.current);\n downloadBlob(md, filename);\n };\n\n return (\n <button\n onClick={handleDownload}\n className=\"inline-flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium border border-void-border text-void-text-secondary rounded-lg hover:border-void-accent/30 hover:text-void-accent transition-colors\"\n title={`Download as ${filename}`}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z\" />\n <path d=\"M14 2v6h6\" />\n <path d=\"M12 18v-6\" />\n <path d=\"M9 15l3 3 3-3\" />\n </svg>\n <span className=\"font-mono\">.md</span>\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { NavSection } from './DocPrimitives';\n\n/**\n * Link component type — allows consumers to inject their\n * framework's link component (e.g. Next.js Link).\n */\nexport type LinkComponent = (props: { href: string; className?: string; children: ReactNode }) => ReactNode;\n\n/** Fallback <a> tag when no framework Link is provided. */\nconst DefaultLink: LinkComponent = ({ href, className, children }) => (\n <a href={href} className={className}>{children}</a>\n);\n\nexport function Sidebar({\n title,\n sections,\n activeId,\n onNavigate,\n mobileOpen,\n onMobileClose,\n footerLinks,\n LinkComponent: Link = DefaultLink,\n}: {\n title: string;\n sections: NavSection[];\n activeId: string;\n onNavigate: (id: string) => void;\n mobileOpen: boolean;\n onMobileClose: () => void;\n footerLinks?: { label: string; href: string }[];\n LinkComponent?: LinkComponent;\n}) {\n return (\n <>\n {mobileOpen && (\n <div className=\"fixed inset-0 bg-black/30 z-40 lg:hidden\" onClick={onMobileClose} />\n )}\n\n <nav\n className={`\n fixed lg:sticky top-0 left-0 z-50 lg:z-auto\n h-full lg:h-screen w-[260px] flex-shrink-0\n bg-white lg:bg-transparent border-r border-void-border\n overflow-y-auto overscroll-contain\n transition-transform duration-200\n ${mobileOpen ? 'translate-x-0' : '-translate-x-full lg:translate-x-0'}\n `}\n style={{ scrollbarWidth: 'thin' }}\n >\n <div className=\"px-5 pt-6 pb-4\">\n <div className=\"flex items-center justify-between mb-6\">\n <span\n className=\"text-[13px] font-semibold text-void-text-muted uppercase tracking-widest\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {title}\n </span>\n <button\n onClick={onMobileClose}\n className=\"lg:hidden p-1 rounded hover:bg-void-surface-2 text-void-text-muted\"\n aria-label=\"Close navigation\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n\n {sections.map((section) => (\n <div key={section.id} className=\"mb-4\">\n <button\n onClick={() => {\n onNavigate(section.children?.[0]?.id ?? section.id);\n onMobileClose();\n }}\n className={`\n block w-full text-left text-[13px] font-semibold mb-1.5 px-2 py-1 rounded transition-colors\n ${activeId === section.id || section.children?.some((c) => c.id === activeId)\n ? 'text-void-accent'\n : 'text-void-text-primary hover:text-void-accent'}\n `}\n >\n {section.label}\n </button>\n {section.children && (\n <div className=\"ml-2 border-l border-void-border pl-2.5 space-y-0.5\">\n {section.children.map((child) => (\n <button\n key={child.id}\n onClick={() => {\n onNavigate(child.id);\n onMobileClose();\n }}\n className={`\n block w-full text-left text-[12.5px] px-2 py-1 rounded transition-colors\n ${activeId === child.id\n ? 'text-void-accent bg-void-accent/5 font-medium'\n : 'text-void-text-muted hover:text-void-text-primary hover:bg-void-surface-2'}\n `}\n >\n {child.label}\n </button>\n ))}\n </div>\n )}\n </div>\n ))}\n\n {footerLinks && footerLinks.length > 0 && (\n <div className=\"mt-4 pt-4 border-t border-void-border\">\n {footerLinks.map((link) => (\n <Link key={link.href} href={link.href} className=\"block text-[12.5px] text-void-accent hover:underline px-2 py-1\">\n {link.label} →\n </Link>\n ))}\n </div>\n )}\n </div>\n </nav>\n </>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport interface Param {\n name: string;\n type: string;\n required?: boolean;\n description: string;\n default?: string;\n}\n\nexport interface NavSection {\n id: string;\n label: string;\n children?: { id: string; label: string }[];\n}\n\n// ---------------------------------------------------------------------------\n// Components\n// ---------------------------------------------------------------------------\n\nconst METHOD_COLORS: Record<HttpMethod, string> = {\n GET: 'bg-emerald-50 text-emerald-700 border-emerald-200',\n POST: 'bg-blue-50 text-blue-700 border-blue-200',\n PUT: 'bg-amber-50 text-amber-700 border-amber-200',\n PATCH: 'bg-purple-50 text-purple-700 border-purple-200',\n DELETE: 'bg-red-50 text-red-700 border-red-200',\n};\n\nexport function MethodBadge({ method }: { method: HttpMethod }) {\n return (\n <span\n className={`inline-flex items-center px-2 py-0.5 text-[11px] font-semibold tracking-wide border rounded-full font-mono ${METHOD_COLORS[method]}`}\n >\n {method}\n </span>\n );\n}\n\nexport function InlineCode({ children }: { children: ReactNode }) {\n return (\n <code className=\"px-1.5 py-0.5 text-[13px] font-mono bg-void-surface-2 border border-void-border rounded text-void-accent\">\n {children}\n </code>\n );\n}\n\nexport function SectionHeading({ id, children }: { id: string; children: ReactNode }) {\n return (\n <h2\n id={id}\n className=\"text-[22px] font-semibold text-void-text-primary mt-16 mb-6 pb-3 border-b border-void-border scroll-mt-6\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {children}\n </h2>\n );\n}\n\nexport function SubHeading({ id, children }: { id: string; children: ReactNode }) {\n return (\n <h3\n id={id}\n className=\"text-[17px] font-semibold text-void-text-primary mt-10 mb-4 scroll-mt-6\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n {children}\n </h3>\n );\n}\n\nexport function Callout({ type = 'info', children }: { type?: 'info' | 'warning'; children: ReactNode }) {\n const styles = type === 'warning'\n ? 'bg-amber-50 border-amber-200 text-amber-800'\n : 'bg-void-accent/5 border-void-accent/20 text-void-text-secondary';\n return (\n <div className={`px-4 py-3 rounded-lg border text-[13.5px] leading-relaxed my-4 ${styles}`}>\n {children}\n </div>\n );\n}\n\nexport function P({ children }: { children: ReactNode }) {\n return <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">{children}</p>;\n}\n\nexport function ParamTable({\n params,\n title,\n}: {\n params: Param[];\n title?: string;\n}) {\n return (\n <div className=\"my-5\">\n {title && (\n <h4 className=\"text-[13px] font-semibold text-void-text-secondary uppercase tracking-wider mb-3\">\n {title}\n </h4>\n )}\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Parameter</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Type</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n {params.map((p, i) => (\n <tr key={p.name} className={i > 0 ? 'border-t border-void-border' : ''}>\n <td className=\"px-4 py-3 align-top\">\n <span className=\"font-mono text-[13px] text-void-text-primary font-medium\">{p.name}</span>\n {p.required && (\n <span className=\"ml-1.5 text-[10px] font-semibold text-red-500 uppercase\">required</span>\n )}\n </td>\n <td className=\"px-4 py-3 align-top\">\n <span className=\"font-mono text-[12px] text-void-text-muted\">{p.type}</span>\n </td>\n <td className=\"px-4 py-3 align-top text-void-text-secondary text-[13px] leading-relaxed\">\n {p.description}\n {p.default && (\n <span className=\"ml-1 text-void-text-muted\">\n Default: <InlineCode>{p.default}</InlineCode>\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\nexport function EndpointBlock({\n method,\n path,\n summary,\n description,\n children,\n}: {\n method: HttpMethod;\n path: string;\n summary: string;\n description?: string;\n children?: ReactNode;\n}) {\n return (\n <div className=\"mb-10\">\n <div className=\"flex items-center gap-3 mb-2\">\n <MethodBadge method={method} />\n <code className=\"text-[15px] font-mono font-medium text-void-text-primary\">{path}</code>\n </div>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-1\">{summary}</p>\n {description && (\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-3\">{description}</p>\n )}\n {children}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Platform-specific helpers\n// ---------------------------------------------------------------------------\n\nexport function UiExcerpt({ title, caption, children }: { title: string; caption?: string; children: ReactNode }) {\n return (\n <div className=\"my-6\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-2\" style={{ fontFamily: 'Space Grotesk, sans-serif' }}>\n {title}\n </div>\n <div className=\"border border-void-border rounded-lg overflow-hidden bg-white\">\n <div className=\"p-4 sm:p-5 overflow-x-auto\">\n {children}\n </div>\n </div>\n {caption && <p className=\"text-[12px] text-void-text-muted mt-1.5 italic\">{caption}</p>}\n </div>\n );\n}\n\nexport function TierBadge({ tier }: { tier: 1 | 2 | 3 }) {\n const s = tier === 1 ? 'bg-emerald-50 text-emerald-700 border-emerald-200' : tier === 2 ? 'bg-amber-50 text-amber-700 border-amber-200' : 'bg-gray-50 text-gray-500 border-gray-200';\n const l = tier === 1 ? 'Tier 1' : tier === 2 ? 'Tier 2' : 'Tier 3';\n return <span className={`inline-flex px-1.5 py-0.5 text-[10px] font-semibold border rounded ${s}`}>{l}</span>;\n}\n\nexport function CellDot({ color, label }: { color: string; label: string }) {\n return (\n <span className=\"inline-flex items-center gap-1.5 mr-3 mb-1\">\n <span className={`w-2 h-2 rounded-full ${color}`} />\n <span className=\"text-[11px] text-void-text-muted\">{label}</span>\n </span>\n );\n}\n\nexport function MockNavItem({ label, active, indent }: { label: string; active?: boolean; indent?: boolean }) {\n return (\n <div className={`flex items-center gap-2 px-2 py-1.5 rounded text-[13px] ${indent ? 'ml-4 text-[12px]' : ''} ${active ? 'text-void-accent bg-void-accent/5 font-medium border-l-2 border-void-accent' : 'text-void-text-secondary'}`}>\n <span className=\"w-4 h-4 rounded bg-void-surface-2 flex-shrink-0\" />\n {label}\n </div>\n );\n}\n\nexport function PipelineStage({ label, state }: { label: string; state: 'done' | 'active' | 'pending' }) {\n return (\n <div className=\"flex flex-col items-center gap-1\">\n <div className={`w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-bold ${\n state === 'done' ? 'bg-void-accent text-white' :\n state === 'active' ? 'border-2 border-void-accent text-void-accent' :\n 'border-[1.5px] border-void-border text-void-text-muted'\n }`}>\n {state === 'done' ? (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M2 6L5 9L10 3\" /></svg>\n ) : null}\n </div>\n <span className={`text-[10px] whitespace-nowrap ${state === 'active' ? 'text-void-accent font-medium' : 'text-void-text-muted'}`}>{label}</span>\n </div>\n );\n}\n\nexport function PipelineConnector({ done }: { done?: boolean }) {\n return <div className={`w-8 h-px mt-[-14px] ${done ? 'bg-void-accent' : 'bg-void-border'}`} />;\n}\n","'use client';\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { CodeBlock } from '../components/CodeBlock';\nimport DownloadMarkdown from '../components/DownloadMarkdown';\nimport { Sidebar } from '../components/Sidebar';\nimport type { LinkComponent } from '../components/Sidebar';\nimport {\n SectionHeading,\n SubHeading,\n InlineCode,\n Callout,\n ParamTable,\n EndpointBlock,\n MethodBadge,\n} from '../components/DocPrimitives';\nimport type { NavSection, HttpMethod, Param } from '../components/DocPrimitives';\n\n/* ═══════════════════════════════════════════════════════════════════════════\n TALONIC API DOCUMENTATION\n A single-file, self-contained API reference page.\n ═══════════════════════════════════════════════════════════════════════════ */\n\n// ---------------------------------------------------------------------------\n// Navigation structure\n// ---------------------------------------------------------------------------\n\nconst NAV_SECTIONS: NavSection[] = [\n {\n id: 'overview',\n label: 'Overview',\n children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'authentication', label: 'Authentication' },\n { id: 'base-url', label: 'Base URL' },\n { id: 'quick-start', label: 'Quick Start' },\n ],\n },\n {\n id: 'extract',\n label: 'Extract',\n children: [\n { id: 'post-extract', label: 'POST /v1/extract' },\n { id: 'extract-schemas', label: 'Schema Formats' },\n { id: 'schema-reference', label: 'Full Schema Reference' },\n { id: 'extract-options', label: 'Options' },\n { id: 'extract-responses', label: 'Responses' },\n ],\n },\n {\n id: 'documents',\n label: 'Documents',\n children: [\n { id: 'list-documents', label: 'List Documents' },\n { id: 'get-document', label: 'Get Document' },\n { id: 're-extract-document', label: 'Re-extract' },\n { id: 'get-document-markdown', label: 'Get Markdown' },\n { id: 'delete-document', label: 'Delete Document' },\n ],\n },\n {\n id: 'extractions',\n label: 'Extractions',\n children: [\n { id: 'list-extractions', label: 'List Extractions' },\n { id: 'get-extraction', label: 'Get Extraction' },\n { id: 'get-extraction-data', label: 'Get Extraction Data' },\n { id: 'patch-extraction-data', label: 'Correct Fields' },\n ],\n },\n {\n id: 'schemas',\n label: 'Schemas',\n children: [\n { id: 'list-schemas', label: 'List Schemas' },\n { id: 'create-schema', label: 'Create Schema' },\n { id: 'get-schema', label: 'Get Schema' },\n { id: 'update-schema', label: 'Update Schema' },\n { id: 'delete-schema', label: 'Delete Schema' },\n ],\n },\n {\n id: 'jobs',\n label: 'Jobs',\n children: [\n { id: 'create-job', label: 'Create Job' },\n { id: 'list-jobs', label: 'List Jobs' },\n { id: 'get-job', label: 'Get Job' },\n { id: 'get-job-results', label: 'Get Results' },\n { id: 'cancel-job', label: 'Cancel Job' },\n ],\n },\n {\n id: 'sources',\n label: 'Sources',\n children: [\n { id: 'list-sources', label: 'List Inputs' },\n { id: 'create-source', label: 'Create Input' },\n { id: 'manage-source', label: 'Get / Update / Delete' },\n { id: 'source-documents', label: 'Source Documents' },\n ],\n },\n {\n id: 'filter-search',\n label: 'Filter & Search',\n children: [\n { id: 'field-autocomplete', label: 'Field Autocomplete' },\n { id: 'field-values', label: 'Field Values' },\n { id: 'filter-documents', label: 'Filter Documents' },\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'list-saved-filters', label: 'List Saved Filters' },\n { id: 'create-saved-filter', label: 'Create Saved Filter' },\n { id: 'delete-saved-filter', label: 'Delete Saved Filter' },\n { id: 'materialize', label: 'Materialize' },\n ],\n },\n {\n id: 'document-types',\n label: 'Document Types',\n children: [\n { id: 'list-document-types', label: 'List Types' },\n { id: 'get-ontology', label: 'Document Ontology' },\n ],\n },\n {\n id: 'cases',\n label: 'Cases',\n children: [\n { id: 'list-cases', label: 'List Cases' },\n { id: 'get-case', label: 'Get Case' },\n { id: 'update-case-status', label: 'Update Status' },\n { id: 'case-edges', label: 'Edges' },\n { id: 'confirm-case-edge', label: 'Confirm Edge' },\n { id: 'reject-case-edge', label: 'Reject Edge' },\n { id: 'split-case', label: 'Split Case' },\n { id: 'merge-cases', label: 'Merge Cases' },\n { id: 'case-completeness', label: 'Completeness' },\n { id: 'pin-case-document', label: 'Pin Documents' },\n { id: 'unpin-case-document', label: 'Remove Documents' },\n ],\n },\n {\n id: 'fields',\n label: 'Fields',\n children: [\n { id: 'list-fields', label: 'List Fields' },\n { id: 'get-field', label: 'Get Field' },\n { id: 'similar-fields', label: 'Similar Fields' },\n { id: 'field-harmonization', label: 'Harmonization' },\n ],\n },\n {\n id: 'routing',\n label: 'Routing Rules',\n children: [\n { id: 'list-routing-rules', label: 'List Rules' },\n { id: 'create-routing-rule', label: 'Create Rule' },\n { id: 'manage-routing-rule', label: 'Get / Update / Delete' },\n ],\n },\n {\n id: 'delivery',\n label: 'Delivery',\n children: [\n { id: 'delivery-overview', label: 'Overview' },\n { id: 'list-destinations', label: 'List Destinations' },\n { id: 'create-destination', label: 'Create Destination' },\n { id: 'manage-destination', label: 'Get / Update / Delete' },\n { id: 'test-destination', label: 'Test Destination' },\n { id: 'list-bindings', label: 'List Bindings' },\n { id: 'create-binding', label: 'Create Binding' },\n { id: 'manage-binding', label: 'Get / Update / Delete' },\n { id: 'delivery-items', label: 'Items (History)' },\n { id: 'delivery-dlq', label: 'Dead-Letter Queue' },\n { id: 'delivery-events', label: 'Outbox Events' },\n { id: 'delivery-catalog', label: 'Catalog' },\n ],\n },\n {\n id: 'review',\n label: 'Review',\n children: [\n { id: 'list-review', label: 'List Queue' },\n { id: 'review-action', label: 'Take Action' },\n { id: 'review-batch', label: 'Batch Action' },\n { id: 'review-stats', label: 'Stats' },\n { id: 'review-assign', label: 'Assign' },\n ],\n },\n {\n id: 'quality',\n label: 'Quality',\n children: [\n { id: 'list-quality-ground-truth', label: 'Ground Truth' },\n { id: 'list-benchmarks', label: 'Benchmarks' },\n { id: 'add-ground-truth-entry', label: 'Add Ground-Truth Entry' },\n { id: 'delete-ground-truth-entry', label: 'Delete Ground-Truth Entry' },\n { id: 'benchmark-results', label: 'Benchmark Results' },\n ],\n },\n {\n id: 'matching',\n label: 'Matching',\n children: [\n { id: 'list-matching-configs', label: 'List Configs' },\n { id: 'create-matching-config', label: 'Create Config' },\n { id: 'update-matching-config', label: 'Update Config' },\n { id: 'delete-matching-config', label: 'Delete Config' },\n { id: 'run-matching', label: 'Run Matching' },\n { id: 'list-matching-runs', label: 'List Runs' },\n { id: 'cancel-matching-run', label: 'Cancel Run' },\n { id: 'smart-run', label: 'Smart Run' },\n { id: 'ai-resolve', label: 'AI Resolve' },\n { id: 'generate-strategy', label: 'Create Strategy' },\n { id: 'get-strategy', label: 'Get Strategy' },\n { id: 'update-strategy', label: 'Update Strategy' },\n { id: 'match-results', label: 'Run Results' },\n { id: 'match-progress', label: 'Run Progress' },\n { id: 'review-match', label: 'Submit Review' },\n ],\n },\n {\n id: 'batches',\n label: 'Batches',\n children: [\n { id: 'list-batches', label: 'List Batches' },\n { id: 'get-batch', label: 'Get Batch' },\n { id: 'batch-sync', label: 'Sync Status' },\n { id: 'batch-cancel', label: 'Cancel Batch' },\n ],\n },\n {\n id: 'usage',\n label: 'Usage',\n children: [\n { id: 'get-usage', label: 'Get Usage' },\n { id: 'document-usage', label: 'Document Usage' },\n ],\n },\n {\n id: 'dialects',\n label: 'Dialects',\n children: [\n { id: 'list-dialects', label: 'List Dialects' },\n { id: 'create-dialect', label: 'Create Dialect' },\n { id: 'get-dialect', label: 'Get Dialect' },\n { id: 'update-dialect', label: 'Update Dialect' },\n { id: 'delete-dialect', label: 'Delete Dialect' },\n ],\n },\n {\n id: 'reference-data',\n label: 'Reference Data',\n children: [\n { id: 'list-reference-data', label: 'List Reference Data' },\n { id: 'get-reference-data', label: 'Get Reference Data' },\n { id: 'get-reference-rows', label: 'Get Rows' },\n { id: 'delete-reference-data', label: 'Delete Reference Data' },\n ],\n },\n {\n id: 'webhooks',\n label: 'Webhooks',\n children: [\n { id: 'webhook-management', label: 'Management' },\n { id: 'webhook-events', label: 'Events' },\n { id: 'webhook-delivery', label: 'Delivery Format' },\n { id: 'webhook-verification', label: 'Signature Verification' },\n { id: 'webhook-retries', label: 'Retry Policy' },\n ],\n },\n {\n id: 'resolutions',\n label: 'Resolutions',\n children: [\n { id: 'list-resolutions', label: 'List Resolutions' },\n { id: 'create-resolution', label: 'Create Resolution' },\n { id: 'get-resolution', label: 'Get Resolution' },\n { id: 'get-resolution-results', label: 'Get Results' },\n { id: 'execute-resolution', label: 'Execute Resolution' },\n { id: 'delete-resolution', label: 'Delete Resolution' },\n ],\n },\n {\n id: 'linking',\n label: 'Linking',\n children: [\n { id: 'list-link-keys', label: 'Link Keys' },\n { id: 'get-document-links', label: 'Document Links' },\n { id: 'get-linking-graph', label: 'Full Graph' },\n { id: 'get-document-graph', label: 'Document Graph' },\n { id: 'classify-link-keys', label: 'Classify' },\n { id: 'backfill-linking', label: 'Backfill' },\n { id: 'backfill-progress', label: 'Backfill Progress' },\n { id: 'document-case-map', label: 'Document-Case Map' },\n ],\n },\n {\n id: 'nshot',\n label: 'N-Shot',\n children: [\n { id: 'nshot-summary', label: 'Summary' },\n { id: 'nshot-comparisons', label: 'Comparisons' },\n { id: 'nshot-comparison', label: 'Single Comparison' },\n { id: 'nshot-override', label: 'Override' },\n { id: 'nshot-judge-decision', label: 'Judge Decision' },\n ],\n },\n {\n id: 'schema-graph',\n label: 'Schema Graph',\n children: [\n { id: 'list-schema-graph-classes', label: 'List Classes' },\n { id: 'get-schema-graph-class', label: 'Get Class' },\n { id: 'list-class-versions', label: 'List Versions' },\n { id: 'get-class-version', label: 'Get Version' },\n { id: 'list-schema-graph-diffs', label: 'List Diffs' },\n { id: 'approve-diff', label: 'Approve Diff' },\n { id: 'reject-diff', label: 'Reject Diff' },\n { id: 'list-schema-graph-edges', label: 'Edges' },\n { id: 'list-schema-graph-aliases', label: 'Aliases' },\n { id: 'visualize-schema-graph', label: 'Visualize' },\n ],\n },\n {\n id: 'structuring',\n label: 'Structuring',\n children: [\n { id: 'list-structuring-checks', label: 'List Checks' },\n { id: 'create-structuring-check', label: 'Create Check' },\n { id: 'get-structuring-check', label: 'Get / Update / Delete Check' },\n { id: 'list-structuring-gates', label: 'List Gates' },\n { id: 'create-structuring-gate', label: 'Create Gate' },\n { id: 'get-structuring-gate', label: 'Get / Update / Delete Gate' },\n { id: 'gate-rules', label: 'Gate Rules' },\n { id: 'result-checks', label: 'Result Checks' },\n { id: 'pending-approvals', label: 'Pending Approvals' },\n { id: 'approve-reject-result', label: 'Approve / Reject Result' },\n { id: 'trigger-delivery', label: 'Trigger Delivery' },\n ],\n },\n {\n id: 'telemetry',\n label: 'Telemetry',\n children: [\n { id: 'schema-telemetry-summary', label: 'Schema Summary' },\n { id: 'schema-telemetry-trend', label: 'Schema Trend' },\n { id: 'schema-telemetry-fields', label: 'Schema Fields' },\n { id: 'run-telemetry-summary', label: 'Run Summary' },\n ],\n },\n {\n id: 'validation',\n label: 'Validation',\n children: [\n { id: 'list-ground-truth', label: 'List Ground-Truth Datasets' },\n { id: 'get-ground-truth', label: 'Get / Delete Ground-Truth Dataset' },\n { id: 'list-validation-runs', label: 'List Validation Runs' },\n { id: 'create-validation-run', label: 'Create Validation Run' },\n { id: 'get-validation-run', label: 'Get / Delete Validation Run' },\n { id: 'get-validation-results', label: 'Validation Results' },\n ],\n },\n {\n id: 'credits',\n label: 'Credits',\n children: [\n { id: 'credits-balance', label: 'Balance' },\n { id: 'credits-history', label: 'History' },\n { id: 'credits-usage', label: 'Usage Summary' },\n { id: 'credits-usage-daily', label: 'Daily Usage' },\n { id: 'credits-usage-log', label: 'Usage Log' },\n ],\n },\n {\n id: 'data-products',\n label: 'Data Products',\n children: [\n { id: 'list-data-products', label: 'List Data Products' },\n { id: 'get-data-product', label: 'Get Data Product' },\n { id: 'delete-data-product', label: 'Delete Data Product' },\n { id: 'get-data-product-results', label: 'Get Results' },\n ],\n },\n {\n id: 'data-policies',\n label: 'Data Policies',\n children: [\n { id: 'list-data-policies', label: 'List Policies' },\n { id: 'create-data-policy', label: 'Create Policy' },\n { id: 'get-data-policy', label: 'Get Policy' },\n { id: 'update-data-policy', label: 'Update Policy' },\n { id: 'delete-data-policy', label: 'Delete Policy' },\n { id: 'list-data-policy-versions', label: 'List Versions' },\n { id: 'list-data-policy-fields', label: 'List Fields' },\n { id: 'list-data-policy-rules', label: 'List Rules' },\n ],\n },\n {\n id: 'record-sets',\n label: 'Record Sets',\n children: [\n { id: 'list-record-sets', label: 'List Record Sets' },\n { id: 'get-record-set', label: 'Get Record Set' },\n { id: 'list-record-set-fields', label: 'List Fields' },\n { id: 'list-record-set-records', label: 'List Records' },\n { id: 'export-record-set', label: 'Export' },\n ],\n },\n {\n id: 'billing',\n label: 'Billing',\n children: [\n { id: 'billing-settings', label: 'Settings' },\n ],\n },\n {\n id: 'agent',\n label: 'Agent',\n children: [\n { id: 'agent-context', label: 'Get Workspace Context' },\n { id: 'agent-tools', label: 'List Agent Tools' },\n ],\n },\n {\n id: 'errors-rate-limits',\n label: 'Errors & Rate Limits',\n children: [\n { id: 'error-format', label: 'Error Format' },\n { id: 'error-codes', label: 'Error Codes' },\n { id: 'rate-limits', label: 'Rate Limits' },\n ],\n },\n];\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\n/** Comprehensive API reference documentation for the Talonic platform. */\nexport function ApiReference({ LinkComponent }: { LinkComponent?: LinkComponent }) {\n const LinkComp = LinkComponent || ((props: any) => <a {...props} />);\n\n const [activeId, setActiveId] = useState('introduction');\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const mainRef = useRef<HTMLDivElement>(null);\n\n // Intersection Observer to track active section\n useEffect(() => {\n const allIds = NAV_SECTIONS.flatMap((s) =>\n s.children ? s.children.map((c) => c.id) : [s.id],\n );\n\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries\n .filter((e) => e.isIntersecting)\n .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n\n if (visible.length > 0) {\n setActiveId(visible[0].target.id);\n }\n },\n { rootMargin: '-80px 0px -60% 0px', threshold: 0 },\n );\n\n allIds.forEach((id) => {\n const el = document.getElementById(id);\n if (el) observer.observe(el);\n });\n\n return () => observer.disconnect();\n }, []);\n\n const handleNavigate = useCallback((id: string) => {\n const el = document.getElementById(id);\n if (el) {\n el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n }, []);\n\n return (\n <div className=\"flex min-h-full\">\n <Sidebar\n title=\"API Documentation\"\n sections={NAV_SECTIONS}\n activeId={activeId}\n onNavigate={handleNavigate}\n mobileOpen={mobileNavOpen}\n onMobileClose={() => setMobileNavOpen(false)}\n footerLinks={[{ label: 'Platform Guide', href: '/docs/platform' }]}\n LinkComponent={LinkComp}\n />\n\n {/* Mobile toggle */}\n <button\n onClick={() => setMobileNavOpen(true)}\n className=\"fixed bottom-5 right-5 z-30 lg:hidden p-3 rounded-full bg-void-accent text-white shadow-lg hover:shadow-xl transition-shadow\"\n aria-label=\"Open docs navigation\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n </button>\n\n {/* Main content */}\n <div ref={mainRef} className=\"flex-1 min-w-0 px-6 sm:px-10 lg:px-16 py-6 max-w-[860px]\">\n\n {/* ─── INTRODUCTION ─────────────────────────────────────────── */}\n <div id=\"introduction\" className=\"scroll-mt-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <h1\n className=\"text-[32px] font-bold text-void-text-primary leading-tight mb-3\"\n style={{ fontFamily: 'Space Grotesk, sans-serif' }}\n >\n Talonic API\n </h1>\n <DownloadMarkdown contentRef={mainRef} filename=\"talonic-api-reference.md\" />\n </div>\n <p className=\"text-[17px] text-void-text-secondary leading-relaxed max-w-[600px]\">\n Extract any document into schema-validated data with a single API call.\n </p>\n\n <div className=\"mt-8 flex flex-col sm:flex-row gap-4\">\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Base URL</div>\n <code className=\"text-[15px] font-mono text-void-text-primary font-medium\">https://api.talonic.com</code>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Protocol</div>\n <span className=\"text-[15px] text-void-text-primary\">HTTPS + JSON</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Auth</div>\n <code className=\"text-[14px] font-mono text-void-text-primary\">Bearer tlnc_...</code>\n </div>\n </div>\n </div>\n\n {/* ─── AUTHENTICATION ───────────────────────────────────────── */}\n <SectionHeading id=\"authentication\">Authentication</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All API requests require a Bearer token in the <InlineCode>Authorization</InlineCode> header.\n API keys are scoped to a source and carry the <InlineCode>tlnc_</InlineCode> prefix. You can\n create and manage keys from{' '}\n <span className=\"text-void-accent font-medium\">Settings → API Keys</span> in the dashboard.\n </p>\n\n <CodeBlock language=\"bash\" title=\"Authorization header\">\n{`curl https://api.talonic.com/v1/documents \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\"`}\n </CodeBlock>\n\n <Callout>\n Keep your API key secret. Do not expose it in client-side code or version control.\n If a key is compromised, revoke it immediately from the dashboard.\n </Callout>\n\n {/* ─── BASE URL ─────────────────────────────────────────────── */}\n <SubHeading id=\"base-url\">Base URL</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All endpoints are relative to the base URL below. All requests must use HTTPS.\n </p>\n\n <CodeBlock language=\"bash\">\n{`https://api.talonic.com/v1`}\n </CodeBlock>\n\n {/* ─── QUICK START ──────────────────────────────────────────── */}\n <SectionHeading id=\"quick-start\">Quick Start</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Extract structured data from a document in three steps.\n </p>\n\n {/* Step 1 */}\n <div className=\"flex gap-4 mb-6\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">1</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Extract a document with an inline schema</h4>\n <CodeBlock language=\"bash\" title=\"Step 1 — Extract\">\n{`curl -X POST https://api.talonic.com/v1/extract \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\" \\\\\n -F \"file=@invoice.pdf\" \\\\\n -F 'schema={\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"line_items\": [{\n \"description\": \"string\",\n \"quantity\": \"number\",\n \"unit_price\": \"number\"\n }]\n }'`}\n </CodeBlock>\n </div>\n </div>\n\n {/* Step 2 */}\n <div className=\"flex gap-4 mb-6\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">2</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Save the schema for reuse</h4>\n <CodeBlock language=\"bash\" title=\"Step 2 — Save schema\">\n{`curl -X POST https://api.talonic.com/v1/schemas \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\n \"name\": \"Invoice\",\n \"definition\": {\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"line_items\": [{\n \"description\": \"string\",\n \"quantity\": \"number\",\n \"unit_price\": \"number\"\n }]\n }\n }'`}\n </CodeBlock>\n </div>\n </div>\n\n {/* Step 3 */}\n <div className=\"flex gap-4 mb-8\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">3</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary mb-2\">Query your extraction results</h4>\n <CodeBlock language=\"bash\" title=\"Step 3 — Retrieve\">\n{`curl https://api.talonic.com/v1/extractions?schema_id=sch_abc123 \\\\\n -H \"Authorization: Bearer tlnc_sk_live_7f3a...x9k2\"`}\n </CodeBlock>\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACT (HERO SECTION)\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extract\">Extract</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The core of the Talonic API. Send a document and a schema, receive structured,\n validated data back. Supports PDFs, images, Word documents, spreadsheets, and plain text.\n </p>\n\n <div id=\"post-extract\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/extract\"\n summary=\"Extract structured data from a document.\"\n description=\"Accepts the document as a file upload or URL, along with a schema definition. Returns structured data matching your schema with per-field confidence scores.\"\n >\n <ParamTable\n title=\"Form data parameters\"\n params={[\n { name: 'file', type: 'binary', description: 'The document file. Supports PDF, DOCX, PNG, JPG, XLSX, CSV, TXT, MD.' },\n { name: 'file_url', type: 'string', description: 'URL to fetch the document from. Use this instead of file for remote documents.' },\n { name: 'document_id', type: 'string', description: 'Re-extract an existing document by ID instead of uploading a new file.' },\n { name: 'schema', type: 'object | string', required: true, description: 'The target schema definition. Accepts JSON Schema, simplified fields, or a flat key-type map. See Schema Formats below.' },\n { name: 'schema_id', type: 'string', description: 'Use a previously saved schema by ID. Mutually exclusive with schema.' },\n { name: 'instructions', type: 'string', description: 'Natural language instructions to guide extraction. E.g. \"Focus on the billing section. Amounts are in EUR.\"' },\n { name: 'options', type: 'object', description: 'Additional extraction options. See Options below.' },\n { name: 'include_markdown', type: 'string', description: 'Set to \"true\" to include the OCR-converted markdown of the document in the response. Useful for PDF-to-markdown conversion.' },\n { name: 'include_provenance', type: 'string', description: 'Set to \"true\" to include per-field provenance in the response. Each field gets source_text (the text the value was extracted from), section (document section), and page (page number).' },\n ]}\n />\n\n <Callout>\n You must provide exactly one of <InlineCode>file</InlineCode>, <InlineCode>file_url</InlineCode>,\n or <InlineCode>document_id</InlineCode>. Schema is optional — when omitted, auto-discovery extracts all fields. Add <InlineCode>include_markdown=true</InlineCode> to also get the raw markdown output.\n </Callout>\n </EndpointBlock>\n </div>\n\n {/* Schema Formats */}\n <SubHeading id=\"extract-schemas\">Schema Formats</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n The <InlineCode>schema</InlineCode> parameter accepts three formats. Use whichever is most natural for your use case. (Note: the API parameter is still called <InlineCode>schema</InlineCode>.)\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">1. JSON Schema (full control)</h4>\n <CodeBlock title=\"JSON Schema format\">\n{`{\n \"type\": \"object\",\n \"properties\": {\n \"vendor_name\": {\n \"type\": \"string\",\n \"description\": \"Legal name of the vendor\"\n },\n \"total_amount\": {\n \"type\": \"number\",\n \"description\": \"Invoice total including tax\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"description\": { \"type\": \"string\" },\n \"quantity\": { \"type\": \"integer\" },\n \"unit_price\": { \"type\": \"number\" }\n }\n }\n }\n },\n \"required\": [\"vendor_name\", \"total_amount\"]\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">2. Simplified fields (recommended)</h4>\n <CodeBlock title=\"Simplified fields\">\n{`{\n \"fields\": [\n { \"name\": \"vendor_name\", \"type\": \"string\", \"description\": \"Legal name of the vendor\" },\n { \"name\": \"total_amount\", \"type\": \"number\", \"required\": true },\n { \"name\": \"due_date\", \"type\": \"date\" },\n {\n \"name\": \"line_items\",\n \"type\": \"array\",\n \"children\": [\n { \"name\": \"description\", \"type\": \"string\" },\n { \"name\": \"quantity\", \"type\": \"number\" },\n { \"name\": \"unit_price\", \"type\": \"number\" }\n ]\n }\n ]\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">3. Flat key-type map (quick prototyping)</h4>\n <CodeBlock title=\"Flat map\">\n{`{\n \"vendor_name\": \"string\",\n \"invoice_number\": \"string\",\n \"total_amount\": \"number\",\n \"due_date\": \"date\",\n \"is_paid\": \"boolean\"\n}`}\n </CodeBlock>\n\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mt-3\">\n Supported types: <InlineCode>string</InlineCode>, <InlineCode>number</InlineCode>,{' '}\n <InlineCode>integer</InlineCode>, <InlineCode>boolean</InlineCode>,{' '}\n <InlineCode>date</InlineCode>, <InlineCode>array</InlineCode>,{' '}\n <InlineCode>object</InlineCode>, <InlineCode>enum</InlineCode>.\n </p>\n\n {/* Full Schema Reference */}\n <SubHeading id=\"schema-reference\">Full Schema Reference</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Beyond basic field types, Talonic schemas support advanced features: format constraints, value modifiers,\n bypass strategies, reference lookups, cross-field validation, and delivery configuration. Use the{' '}\n <InlineCode>x-talonic</InlineCode> extension on individual fields and{' '}\n <InlineCode>x-talonic-schema</InlineCode> at the root level.\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Supported data types</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-4\">\n <InlineCode>string</InlineCode>, <InlineCode>number</InlineCode>,{' '}\n <InlineCode>integer</InlineCode>, <InlineCode>boolean</InlineCode>,{' '}\n <InlineCode>date</InlineCode>, <InlineCode>array</InlineCode>,{' '}\n <InlineCode>object</InlineCode>, <InlineCode>enum</InlineCode>\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Format constraints</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Validate extracted values with regex patterns. When a value fails validation, the <InlineCode>on_format_mismatch</InlineCode> action determines the fallback.\n </p>\n <CodeBlock title=\"Format constraint\">\n{`\"invoice_number\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"format\": { \"type\": \"regex\", \"pattern\": \"^INV-\\\\\\\\d{4,}$\" },\n \"on_format_mismatch\": { \"action\": \"flag\" }\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Actions: <InlineCode>empty</InlineCode> (clear value), <InlineCode>flag</InlineCode> (keep + flag), <InlineCode>constant</InlineCode> (replace with fixed value).\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Modifiers (post-processing transforms)</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Applied in order after extraction. Three types: <strong>format</strong> (date/number formatting), <strong>alias</strong> (value mapping), <strong>max_length</strong> (truncation).\n </p>\n <CodeBlock title=\"Modifiers\">\n{`\"invoice_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"x-talonic\": {\n \"modifiers\": [\n { \"type\": \"format\", \"config\": { \"pattern\": \"YYYY-MM-DD\" } }\n ]\n }\n},\n\"status\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"modifiers\": [\n { \"type\": \"alias\", \"config\": {\n \"mappings\": { \"paid\": \"SETTLED\", \"open\": \"PENDING\", \"overdue\": \"PAST_DUE\" }\n }},\n { \"type\": \"max_length\", \"config\": { \"limit\": 20, \"on_overflow\": \"truncate\" } }\n ]\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Constraints (validation rules)</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Evaluated after modifiers. Failures flag the value but don't erase it.\n </p>\n <CodeBlock title=\"Constraints\">\n{`\"currency\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"constraints\": [\n { \"type\": \"enum\", \"config\": { \"values\": [\"EUR\", \"USD\", \"GBP\", \"CHF\"] } },\n { \"type\": \"length\", \"config\": { \"min\": 3, \"max\": 3 } }\n ]\n }\n},\n\"due_date\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"constraints\": [\n { \"type\": \"cross-field\", \"config\": {\n \"expression\": \"due_date >= invoice_date\",\n \"fields\": [\"due_date\", \"invoice_date\"]\n }}\n ]\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Types: <InlineCode>required</InlineCode>, <InlineCode>enum</InlineCode>, <InlineCode>date-format</InlineCode>, <InlineCode>length</InlineCode>, <InlineCode>cross-field</InlineCode>.\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Bypass strategies</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed mb-2\">\n Fields that don't need LLM extraction. Set a fixed value, generate an ID, or look up from reference data.\n </p>\n <CodeBlock title=\"Bypass strategies\">\n{`\"document_category\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"constant\",\n \"constant_value\": \"financial/invoice\"\n }\n},\n\"processing_id\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"generator\",\n \"generator_type\": \"deterministic-id\",\n \"generator_config\": { \"prefix\": \"EXT\", \"pad\": 6 }\n }\n},\n\"country_code\": {\n \"type\": \"string\",\n \"x-talonic\": {\n \"strategy\": \"reference\",\n \"reference_name\": \"country_codes\",\n \"key_expression\": \"{field.vendor_country}\",\n \"reference_table\": [\n { \"key\": \"DE\", \"value\": \"Germany\" },\n { \"key\": \"US\", \"value\": \"United States\" }\n ]\n }\n}`}\n </CodeBlock>\n <p className=\"text-[13px] text-void-text-muted mt-1 mb-4\">\n Strategies: <InlineCode>constant</InlineCode>, <InlineCode>generator</InlineCode> (deterministic-id, context-fallback), <InlineCode>reference</InlineCode> (single or multi-hop via <InlineCode>resolution_chain</InlineCode>).\n </p>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Extraction instructions</h4>\n <CodeBlock title=\"Manual instruction\">\n{`\"tax_amount\": {\n \"type\": \"number\",\n \"x-talonic\": {\n \"manual_instruction\": \"Calculate as subtotal * tax_rate / 100. If stated explicitly, use the stated value.\",\n \"uses_manual_instruction\": true,\n \"capture_submoves\": [\"compute\", \"reason\"]\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-6 mb-2\">Schema-level configuration</h4>\n <CodeBlock title=\"x-talonic-schema (root level)\">\n{`{\n \"type\": \"object\",\n \"properties\": { \"...\" : {} },\n \"x-talonic-schema\": {\n \"extraction_type\": \"pipeline\",\n \"extraction_model\": \"claude-sonnet\",\n \"validation_mode\": \"sample\",\n \"validation_sample_rate\": 10,\n \"approval_action\": \"stage\",\n \"delivery_config\": {\n \"dialect\": {\n \"inline\": {\n \"date_format\": \"YYYY-MM-DD\",\n \"number_locale\": \"en-US\",\n \"null_representation\": \"\",\n \"boolean_format\": [\"Yes\", \"No\"],\n \"delimiter\": \",\",\n \"encoding\": \"UTF-8\"\n }\n },\n \"output_files\": [\n { \"name\": \"invoices.csv\", \"fields\": [\"invoice_number\", \"vendor_name\", \"total_amount\"] },\n { \"name\": \"line_items.csv\", \"fields\": [\"invoice_number\", \"line_items\"] }\n ],\n \"cross_file_constraints\": [\n { \"type\": \"uniqueness\", \"config\": { \"fields\": [\"invoice_number\"] } }\n ],\n \"escalation_threshold\": 0.9\n }\n }\n}`}\n </CodeBlock>\n\n <Callout>\n The full reference schema template (invoice example with all features) is available as a downloadable JSON file\n in the <LinkComp href=\"https://github.com/talonicdev/platform/blob/main/packages/docs/src/schema-template.json\">repository</LinkComp>.\n </Callout>\n\n {/* Options */}\n <SubHeading id=\"extract-options\">Options</SubHeading>\n\n <ParamTable\n params={[\n { name: 'format', type: 'string', description: 'Output format for the extracted data.', default: '\"json\"' },\n { name: 'strict', type: 'boolean', description: 'When true, fields not in the schema are omitted from the response. When false, additional discovered fields may be included.', default: 'true' },\n { name: 'async', type: 'boolean', description: 'When true, returns a 202 with a job ID instead of blocking. Poll the job endpoint for results.', default: 'false' },\n { name: 'webhook_url', type: 'string', description: 'URL to POST results to when extraction completes. Implies async behavior.' },\n { name: 'include_raw_text', type: 'boolean', description: 'Include the raw extracted text alongside structured data.', default: 'false' },\n { name: 'page_range', type: 'string', description: 'Pages to extract from. E.g. \"1-5\", \"1,3,7-10\". PDF only.' },\n { name: 'language_hint', type: 'string', description: 'ISO 639-1 language code hint. Improves extraction for non-English documents.' },\n ]}\n />\n\n {/* Responses */}\n <SubHeading id=\"extract-responses\">Responses</SubHeading>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-4 mb-2\">Synchronous (200 OK)</h4>\n <p className=\"text-[14px] text-void-text-muted mb-3\">\n Returned when <InlineCode>async</InlineCode> is false (default). The response blocks until extraction is complete.\n </p>\n\n <CodeBlock title=\"200 — Synchronous response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"data\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_number\": \"INV-2024-0847\",\n \"total_amount\": 14250.00,\n \"due_date\": \"2024-03-15\",\n \"line_items\": [\n {\n \"description\": \"Enterprise license (annual)\",\n \"quantity\": 1,\n \"unit_price\": 12000.00\n },\n {\n \"description\": \"Implementation services\",\n \"quantity\": 15,\n \"unit_price\": 150.00\n }\n ]\n },\n \"confidence\": {\n \"overall\": 0.94,\n \"fields\": {\n \"vendor_name\": 0.99,\n \"invoice_number\": 0.98,\n \"total_amount\": 0.96,\n \"due_date\": 0.91,\n \"line_items\": 0.87\n }\n },\n \"provenance\": {\n \"vendor_name\": { \"source_text\": \"Acme Corp Ltd.\", \"section\": \"Header\", \"page\": 1 },\n \"invoice_total\": { \"source_text\": \"$14,250.00\", \"section\": \"Summary\", \"page\": 2 }\n },\n \"metadata\": {\n \"pages\": 2,\n \"language\": \"en\",\n \"document_type\": \"invoice\",\n \"processing_time_ms\": 3420\n }\n}`}\n </CodeBlock>\n\n <h4 className=\"text-[14px] font-semibold text-void-text-primary mt-8 mb-2\">Asynchronous (202 Accepted)</h4>\n <p className=\"text-[14px] text-void-text-muted mb-3\">\n Returned when <InlineCode>async: true</InlineCode> or <InlineCode>webhook_url</InlineCode> is set. Poll <InlineCode>/v1/jobs/:id</InlineCode> for progress.\n </p>\n\n <CodeBlock title=\"202 — Asynchronous response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"job_id\": \"job_v4w2x8y1\",\n \"status\": \"processing\",\n \"estimated_time_ms\": 5000,\n \"poll_url\": \"/v1/jobs/job_v4w2x8y1\"\n}`}\n </CodeBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n DOCUMENTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"documents\">Documents</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Documents represent files that have been uploaded and processed. Each document\n retains its original file, extracted text, and metadata.\n </p>\n\n <div id=\"list-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents\"\n summary=\"List all documents with filtering and pagination.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'source_id', type: 'string', description: 'Filter by source.' },\n { name: 'status', type: 'string', description: 'Filter by status: pending, processing, completed, error.' },\n { name: 'after', type: 'string', description: 'ISO 8601 datetime. Only documents created after this timestamp.' },\n { name: 'before', type: 'string', description: 'ISO 8601 datetime. Only documents created before this timestamp.' },\n { name: 'search', type: 'string', description: 'Full-text search across filename and extracted content.' },\n { name: 'page', type: 'integer', description: 'Page number for pagination.', default: '1' },\n { name: 'per_page', type: 'integer', description: 'Results per page.', default: '50' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"doc_3j7x9p2q\",\n \"filename\": \"invoice-0847.pdf\",\n \"status\": \"completed\",\n \"document_type\": \"invoice\",\n \"pages\": 2,\n \"source_id\": \"src_m1n2o3p4\",\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 234,\n \"total_pages\": 5\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents/:id\"\n summary=\"Retrieve a single document with full metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"doc_3j7x9p2q\",\n \"filename\": \"invoice-0847.pdf\",\n \"status\": \"completed\",\n \"document_type\": \"invoice\",\n \"pages\": 2,\n \"language\": \"en\",\n \"source_id\": \"src_m1n2o3p4\",\n \"file_size_bytes\": 184320,\n \"extracted_text_length\": 4280,\n \"extraction_count\": 2,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"updated_at\": \"2024-09-14T10:32:45Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"re-extract-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/documents/:id/re-extract\"\n summary=\"Re-run extraction on an existing document.\"\n description=\"Clears previous extraction data and re-processes the document. Returns immediately with a new processing status.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"doc_3j7x9p2q\",\n \"status\": \"extracting\",\n \"message\": \"Re-extraction started. Poll GET /v1/documents/:id for progress.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/documents/:id\"\n summary=\"Delete a document and all associated extractions.\"\n description=\"This action is irreversible. The original file and all extraction results will be permanently removed.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"deleted\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-markdown\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/documents/:id/markdown\"\n summary=\"Get the OCR-converted markdown of a document.\"\n description=\"Returns the OCR-converted markdown output (via Document AI or Talonic). Available for PDF, DOCX, XLSX, PPTX, and image files. Useful for PDF-to-markdown conversion pipelines.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"document_id\": \"d9f44f95-...\",\n \"markdown\": \"# Invoice\\\\n\\\\n| Item | Amount |\\\\n| ... | ... |\\\\n...\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACTIONS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extractions\">Extractions</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n An extraction is the result of applying a schema to a document. A single document\n can have multiple extractions if different schemas are applied to it.\n </p>\n\n <div id=\"list-extractions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions\"\n summary=\"List extractions with optional filters.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'document_id', type: 'string', description: 'Filter by document.' },\n { name: 'schema_id', type: 'string', description: 'Filter by schema.' },\n { name: 'status', type: 'string', description: 'Filter by status: complete, processing, failed.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"confidence\": 0.94,\n \"created_at\": \"2024-09-14T10:33:12Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 89,\n \"total_pages\": 2\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-extraction\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions/:id\"\n summary=\"Get the full extraction result including data, confidence scores, and metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"data\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_number\": \"INV-2024-0847\",\n \"total_amount\": 14250.00,\n \"due_date\": \"2024-03-15\"\n },\n \"confidence\": {\n \"overall\": 0.94,\n \"fields\": {\n \"vendor_name\": 0.99,\n \"invoice_number\": 0.98,\n \"total_amount\": 0.96,\n \"due_date\": 0.91\n }\n },\n \"metadata\": {\n \"pages\": 2,\n \"language\": \"en\",\n \"document_type\": \"invoice\",\n \"processing_time_ms\": 3420\n },\n \"created_at\": \"2024-09-14T10:33:12Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-extraction-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/extractions/:id/data\"\n summary=\"Get just the extracted data, without metadata. Supports CSV export.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'format', type: 'string', description: 'Response format.', default: '\"json\"' },\n ]}\n />\n <Callout>\n Set <InlineCode>?format=csv</InlineCode> to receive the data as a downloadable CSV file.\n The response Content-Type will be <InlineCode>text/csv</InlineCode>.\n </Callout>\n </EndpointBlock>\n </div>\n\n <div id=\"patch-extraction-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/extractions/:id/data\"\n summary=\"Correct individual fields in an extraction result.\"\n description=\"Submit corrections for specific fields. Corrections are logged and can be propagated to similar extractions.\"\n >\n <CodeBlock title=\"Request body\">\n{`{\n \"corrections\": [\n {\n \"field\": \"total_amount\",\n \"value\": 14500.00,\n \"reason\": \"Tax was miscalculated\"\n }\n ],\n \"propagate\": \"this_document_only\"\n}`}\n </CodeBlock>\n\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'corrections', type: 'array', required: true, description: 'Array of field corrections. Each must include field name and new value.' },\n { name: 'corrections[].field', type: 'string', required: true, description: 'The field name to correct.' },\n { name: 'corrections[].value', type: 'any', required: true, description: 'The corrected value.' },\n { name: 'corrections[].reason', type: 'string', description: 'Optional reason for the correction.' },\n { name: 'propagate', type: 'string', description: 'Propagation scope: this_document_only or all_similar.', default: '\"this_document_only\"' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMAS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schemas\">Schemas</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Schemas define the structure you want to extract from documents. Save schemas to\n reuse them across extractions and maintain consistency.\n </p>\n\n <div id=\"list-schemas\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schemas\"\n summary=\"List all saved schemas.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"sch_abc123\",\n \"name\": \"Invoice\",\n \"field_count\": 8,\n \"extraction_count\": 142,\n \"created_at\": \"2024-08-20T14:00:00Z\",\n \"updated_at\": \"2024-09-10T09:15:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schemas\"\n summary=\"Create a new schema.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name for the schema.' },\n { name: 'definition', type: 'object', required: true, description: 'Schema definition in any of the three supported formats.' },\n { name: 'description', type: 'string', description: 'Optional description of what this schema extracts.' },\n ]}\n />\n <CodeBlock title=\"Response (201 Created)\">\n{`{\n \"id\": \"sch_def456\",\n \"name\": \"Purchase Order\",\n \"field_count\": 12,\n \"definition\": {\n \"po_number\": \"string\",\n \"vendor\": \"string\",\n \"total\": \"number\",\n \"delivery_date\": \"date\"\n },\n \"created_at\": \"2024-09-14T12:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schemas/:id\"\n summary=\"Get a schema by ID, including its full definition.\"\n />\n </div>\n\n <div id=\"update-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/schemas/:id\"\n summary=\"Replace a schema definition. Creates a new version internally.\"\n description=\"Existing extractions retain their original schema version. New extractions will use the updated definition.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated name.' },\n { name: 'definition', type: 'object', description: 'Updated schema definition.' },\n { name: 'description', type: 'string', description: 'Updated description.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"delete-schema\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/schemas/:id\"\n summary=\"Delete a schema. Does not delete associated extractions.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"deleted\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n JOBS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"jobs\">Jobs</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Jobs track asynchronous extraction work. Create a job with a schema and document set,\n then poll for progress. Each job runs the full 4-phase extraction pipeline.\n </p>\n\n <div id=\"create-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs\"\n summary=\"Create and run an extraction job.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'schema_id', type: 'string', required: true, description: 'Schema to extract against.' },\n { name: 'document_ids', type: 'string[]', description: 'Specific documents. Omit to use all unprocessed documents.' },\n { name: 'name', type: 'string', description: 'Optional human-readable job name.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"pending\",\n \"message\": \"Job created. Processing will begin shortly.\",\n \"links\": {\n \"self\": \"/v1/jobs/job_v4w2x8y1\",\n \"results\": \"/v1/jobs/job_v4w2x8y1/results\"\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-jobs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs\"\n summary=\"List all jobs with status and progress.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter by status: queued, processing, completed, failed, cancelled.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"completed\",\n \"extraction_id\": \"ext_8f2k4n1m\",\n \"progress\": 100,\n \"total_documents\": 1,\n \"completed_documents\": 1,\n \"failed_documents\": 0,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"completed_at\": \"2024-09-14T10:32:45Z\"\n }\n ],\n \"pagination\": {\n \"page\": 1,\n \"per_page\": 50,\n \"total\": 67,\n \"total_pages\": 2\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/:id\"\n summary=\"Get job status, progress, and result summary.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"processing\",\n \"progress\": 65,\n \"current_phase\": \"phase_2_execute\",\n \"total_documents\": 48,\n \"completed_documents\": 31,\n \"failed_documents\": 0,\n \"grid_stats\": {\n \"total_cells\": 2016,\n \"filled\": 1310,\n \"empty\": 706,\n \"fill_rate\": 0.65\n },\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"estimated_completion\": \"2024-09-14T10:35:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-job-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/:id/results\"\n summary=\"Get the structured extraction results from a completed job.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"document_id\": \"doc_3j7x9p2q\",\n \"document_filename\": \"invoice-0847.pdf\",\n \"values\": {\n \"vendor_name\": \"Acme Corp\",\n \"invoice_total\": \"1,250.00\",\n \"currency\": \"USD\"\n }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"cancel-job\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/:id/cancel\"\n summary=\"Cancel a running job. Partial results are retained.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"job_v4w2x8y1\",\n \"status\": \"cancelled\",\n \"progress\": 65,\n \"completed_documents\": 31,\n \"cancelled_at\": \"2024-09-14T10:33:20Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SOURCES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"sources\">Inputs</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Inputs group documents by origin. Each input source has its own API key for\n programmatic document ingestion.\n </p>\n\n <div id=\"list-sources\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources\"\n summary=\"List all sources.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"src_m1n2o3p4\",\n \"name\": \"Invoice Pipeline\",\n \"type\": \"api\",\n \"document_count\": 234,\n \"created_at\": \"2024-08-01T09:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-source\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/sources\"\n summary=\"Create a new source. Returns a source-scoped API key.\"\n description=\"The API key is only shown once in the response. Store it securely.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name for the source.' },\n { name: 'type', type: 'string', description: 'Source type: api, upload, connector.', default: '\"api\"' },\n ]}\n />\n <CodeBlock title=\"Response (201 Created)\">\n{`{\n \"id\": \"src_q5r6s7t8\",\n \"name\": \"Contract Pipeline\",\n \"type\": \"api\",\n \"api_key\": \"tlnc_sk_live_9a8b7c6d5e4f3g2h1i0j\",\n \"created_at\": \"2024-09-14T12:30:00Z\"\n}`}\n </CodeBlock>\n <Callout type=\"warning\">\n The <InlineCode>api_key</InlineCode> field is only included in the creation response.\n Store it immediately -- it cannot be retrieved later.\n </Callout>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-source\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources/:id\"\n summary=\"Get source details.\"\n />\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/sources/:id\"\n summary=\"Update a source name or configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated source name.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/sources/:id\"\n summary=\"Delete a source. Documents are retained but unlinked.\"\n />\n </div>\n\n <div id=\"source-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/sources/:id/documents\"\n summary=\"Ingest a document into a specific source.\"\n description=\"Accepts the same file/file_url parameters as /v1/extract, but does not require a schema. The document is processed and stored for later extraction.\"\n >\n <ParamTable\n title=\"Form data parameters\"\n params={[\n { name: 'file', type: 'binary', description: 'The document file.' },\n { name: 'file_url', type: 'string', description: 'URL to fetch the document from.' },\n { name: 'processing_mode', type: 'string', description: '\"realtime\" (default) or \"batch\". Batch processing has a 50% cost discount with results delivered within 48 hours.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/sources/:id/documents\"\n summary=\"List documents belonging to a source.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter by document status.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n FILTER & SEARCH\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"filter-search\">Filter & Search</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Search and filter documents by their extracted field values. Includes field autocomplete,\n document filtering with composable conditions, global omnisearch, and saved filter management.\n </p>\n\n <div id=\"field-autocomplete\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/fields/autocomplete\"\n summary=\"Autocomplete field names from the registry.\"\n description=\"Returns matching fields ranked by relevance and occurrence count. Use this to power field picker UIs.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'q', type: 'string', required: true, description: 'Search query to match against field names.' },\n { name: 'sourceId', type: 'string', description: 'Scope results to fields seen in a specific source.' },\n { name: 'limit', type: 'integer', default: '10', description: 'Maximum number of results to return.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"fields\": [\n {\n \"fieldId\": \"fld_a1b2c3d4\",\n \"canonicalName\": \"supplier_name\",\n \"displayName\": \"Supplier Name\",\n \"dataType\": \"string\",\n \"tier\": 1,\n \"occurrenceCount\": 1842,\n \"matchSource\": \"canonical\",\n \"sampleValues\": [\"Acme Corp\", \"Globex Inc\", \"Initech\"]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"field-values\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/fields/:fieldId/values\"\n summary=\"List distinct values for a field across documents.\"\n description=\"Returns value distribution with counts. Useful for building filter dropdowns and faceted search.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'sourceId', type: 'string', description: 'Scope to a specific source connection.' },\n { name: 'q', type: 'string', description: 'Filter values by substring match.' },\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of values to return.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"values\": [\n { \"value\": \"Acme Corp\", \"count\": 47 },\n { \"value\": \"Globex Inc\", \"count\": 23 }\n ],\n \"totalDistinct\": 156\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"filter-documents\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/filter/documents\"\n summary=\"Filter documents by field value conditions.\"\n description=\"Apply composable conditions on extracted field values. Supports equality, comparison, range, containment, and emptiness operators.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'sourceConnectionId', type: 'string', description: 'Scope to a specific source connection.' },\n { name: 'conditions', type: 'array', required: true, description: 'Array of filter conditions. Each has fieldId, operator, and optional value / valueTo.' },\n { name: 'search', type: 'string', description: 'Free-text search across document content.' },\n { name: 'sort', type: 'object', description: 'Sort by a field: { fieldId, direction: \"asc\" | \"desc\" }.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'limit', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <p className=\"text-[13px] text-void-text-muted mb-3\">\n <strong className=\"text-void-text-secondary\">Operators:</strong>{' '}\n <InlineCode>eq</InlineCode>, <InlineCode>neq</InlineCode>, <InlineCode>gt</InlineCode>,{' '}\n <InlineCode>gte</InlineCode>, <InlineCode>lt</InlineCode>, <InlineCode>lte</InlineCode>,{' '}\n <InlineCode>between</InlineCode>, <InlineCode>contains</InlineCode>,{' '}\n <InlineCode>is_empty</InlineCode>, <InlineCode>is_not_empty</InlineCode>\n </p>\n <CodeBlock title=\"Request body\">\n{`{\n \"conditions\": [\n { \"fieldId\": \"fld_a1b2c3d4\", \"operator\": \"eq\", \"value\": \"Acme Corp\" },\n { \"fieldId\": \"fld_e5f6g7h8\", \"operator\": \"between\", \"value\": \"2024-01-01\", \"valueTo\": \"2024-12-31\" }\n ],\n \"sort\": { \"fieldId\": \"fld_e5f6g7h8\", \"direction\": \"desc\" },\n \"page\": 1,\n \"limit\": 25\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response\">\n{`{\n \"documents\": [\n {\n \"id\": \"doc_x9y8z7w6\",\n \"name\": \"Invoice-2024-001.pdf\",\n \"sourceId\": \"src_m1n2o3p4\",\n \"uploadedAt\": \"2024-09-14T10:32:00Z\",\n \"fieldValues\": {\n \"supplier_name\": \"Acme Corp\",\n \"invoice_date\": \"2024-06-15\"\n }\n }\n ],\n \"total\": 47,\n \"page\": 1,\n \"limit\": 25\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"omnisearch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/search\"\n summary=\"Global omnisearch across documents, fields, sources, and schemas.\"\n description=\"Unified search endpoint that returns results across all entity types. Powers the Cmd+K search experience.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'q', type: 'string', required: true, description: 'Search query.' },\n { name: 'limit', type: 'integer', default: '5', description: 'Maximum results per entity type.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"documents\": [\n { \"id\": \"doc_x9y8z7w6\", \"name\": \"Invoice-2024-001.pdf\", \"sourceId\": \"src_m1n2o3p4\", \"sourceName\": \"Invoice Pipeline\" }\n ],\n \"fieldMatches\": [\n {\n \"resolvedFieldId\": \"fld_a1b2c3d4\",\n \"displayName\": \"Supplier Name\",\n \"matchedValue\": \"Acme Corp\",\n \"documentCount\": 47\n }\n ],\n \"sources\": [\n { \"id\": \"src_m1n2o3p4\", \"name\": \"Invoice Pipeline\" }\n ],\n \"schemas\": [\n { \"id\": \"sch_k1l2m3n4\", \"name\": \"Invoice Schema\" }\n ],\n \"fields\": [\n { \"id\": \"fld_a1b2c3d4\", \"canonicalName\": \"supplier_name\", \"displayName\": \"Supplier Name\", \"documentCount\": 1842 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-saved-filters\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/saved-filters\"\n summary=\"List saved filters.\"\n description=\"Returns all saved filter configurations, optionally scoped to a source.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'sourceId', type: 'string', description: 'Filter saved filters by source connection.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"create-saved-filter\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/saved-filters\"\n summary=\"Create a saved filter.\"\n description=\"Persist a filter configuration for reuse.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Display name for the saved filter.' },\n { name: 'conditions', type: 'array', required: true, description: 'Array of filter conditions (same format as /filter/documents).' },\n { name: 'search', type: 'string', description: 'Optional free-text search to save with the filter.' },\n { name: 'sort', type: 'object', description: 'Optional sort configuration: { fieldId, direction }.' },\n { name: 'source_connection_id', type: 'string', description: 'Scope the filter to a specific source.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"delete-saved-filter\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/saved-filters/:id\"\n summary=\"Delete a saved filter.\"\n />\n </div>\n\n <div id=\"materialize\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/filter/materialize\"\n summary=\"Trigger materialization backfill for filter indexes.\"\n description=\"Rebuilds the materialized field value index used by filter queries. Run after bulk document ingestion.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"processed\": 1842\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DOCUMENT TYPES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"document-types\">Document Types</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Browse and discover document types. The ontology contains 529 types organized\n into categories and subcategories.\n </p>\n\n <div id=\"list-document-types\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/document-types\"\n summary=\"List document types discovered in your workspace.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"dtype_a1b2c3\",\n \"name\": \"Invoice\",\n \"ontology_type_id\": \"ont_inv_001\",\n \"category_id\": \"cat_financial\",\n \"document_count\": 342\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-ontology\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/document-types/ontology\"\n summary=\"Browse the full 529-type document ontology.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"cat_financial\",\n \"name\": \"Financial\",\n \"description\": \"Financial and accounting documents\",\n \"typeCount\": 47,\n \"subcategories\": [\n { \"id\": \"sub_invoices\", \"name\": \"Invoices\", \"typeCount\": 8 }\n ]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n CASES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"cases\">Cases</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Cases are automatically created when documents are linked together through shared\n field values. A case groups 2+ related documents with a narrative summary.\n </p>\n\n <div id=\"list-cases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases\"\n summary=\"List all cases with search and filtering.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'search', type: 'string', description: 'Search case labels and keys.' },\n { name: 'min_documents', type: 'integer', description: 'Minimum document count filter.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"case_key\": \"case_x7k9m2\",\n \"label\": \"Acme Corp — Q3 Audit\",\n \"document_count\": 12,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 18 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-case\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/:key\"\n summary=\"Get case detail including linked documents and anomalies.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"case_key\": \"case_x7k9m2\",\n \"label\": \"Acme Corp — Q3 Audit\",\n \"narrative\": \"12 documents linked through vendor_name and invoice references...\",\n \"documents\": [\n { \"id\": \"doc_3j7x9p2q\", \"filename\": \"invoice-0847.pdf\" }\n ],\n \"anomaly_count\": 2\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-case-status\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/cases/{key}/status\"\n summary=\"Update case status.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'status', type: 'string', required: true, description: 'New status (e.g. open, in_review, resolved, archived).' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"case-edges\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/{key}/edges\"\n summary=\"Get case edges.\"\n description=\"Returns the entity edges (evidence chain) connecting documents within the case.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"source_document_id\": \"uuid\",\n \"target_document_id\": \"uuid\",\n \"entity_value\": \"string\",\n \"entity_type\": \"string\",\n \"confidence\": 0.92\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"confirm-case-edge\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/edges/{edgeId}/confirm\"\n summary=\"Confirm a case edge.\"\n description=\"Confirm a proposed entity edge between documents in this case. No request body — both identifiers come from the path.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'edgeId', type: 'uuid', required: true, description: 'Edge identifier from the case edges list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"reject-case-edge\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/edges/{edgeId}/reject\"\n summary=\"Reject a case edge.\"\n description=\"Reject a proposed entity edge between documents in this case. No request body — both identifiers come from the path.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'edgeId', type: 'uuid', required: true, description: 'Edge identifier from the case edges list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"split-case\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/split\"\n summary=\"Split a case into two separate cases by partitioning its documents into two groups.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'partition_a', type: 'uuid[]', required: true, description: 'Document IDs that stay in the original case.' },\n { name: 'partition_b', type: 'uuid[]', required: true, description: 'Document IDs that move to the newly-created case.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"merge-cases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/merge\"\n summary=\"Merge two cases by passing both case keys in the request body.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'case_key_a', type: 'string', required: true, description: 'First case key — receives the merged documents.' },\n { name: 'case_key_b', type: 'string', required: true, description: 'Second case key — its documents are folded into case A.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"case-completeness\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/cases/{key}/completeness\"\n summary=\"Get case completeness.\"\n description=\"Returns a completeness assessment for the case (expected vs. present document types, missing fields).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"completeness_score\": 0.83,\n \"expected_document_types\": [\"invoice\", \"purchase_order\", \"receipt\"],\n \"present_document_types\": [\"invoice\", \"purchase_order\"],\n \"missing_document_types\": [\"receipt\"]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"pin-case-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/cases/{key}/documents/{docId}/pin\"\n summary=\"Manually pin a document to a case so it persists across re-clustering.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'docId', type: 'uuid', required: true, description: 'Document identifier to pin.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"unpin-case-document\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/cases/{key}/documents/{docId}\"\n summary=\"Remove a manually-pinned document from a case.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'key', type: 'string', required: true, description: 'Case key.' },\n { name: 'docId', type: 'uuid', required: true, description: 'Document identifier to remove.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n FIELDS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"fields\">Fields</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The field registry is the knowledge graph of all discovered fields. Fields are\n semantically clustered and promoted through tiers as they appear across documents.\n </p>\n\n <div id=\"list-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields\"\n summary=\"List fields with search, tier, and cluster filtering.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'search', type: 'string', description: 'Search by canonical or display name.' },\n { name: 'tier', type: 'string', description: 'Filter by tier: discovered, confirmed, promoted.' },\n { name: 'cluster_id', type: 'string', description: 'Filter by semantic cluster.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"fld_8n2k4m\",\n \"canonical_name\": \"vendor_name\",\n \"display_name\": \"Vendor Name\",\n \"data_type\": \"string\",\n \"tier\": \"promoted\",\n \"occurrence_count\": 847\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 312 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-field\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/:id\"\n summary=\"Get field detail with occurrence history and metadata.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"fld_8n2k4m\",\n \"canonical_name\": \"vendor_name\",\n \"display_name\": \"Vendor Name\",\n \"data_type\": \"string\",\n \"tier\": \"promoted\",\n \"occurrence_count\": 847,\n \"cluster_id\": \"cls_v3n9\",\n \"first_seen\": \"2024-06-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"similar-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/:id/similar\"\n summary=\"Find semantically similar fields using embedding distance.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"id\": \"fld_9p3l5n\", \"canonical_name\": \"supplier_name\", \"similarity\": 0.94 },\n { \"id\": \"fld_2r7t8w\", \"canonical_name\": \"company_name\", \"similarity\": 0.87 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"field-harmonization\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/fields/harmonization\"\n summary=\"Detect cross-schema field overlap and naming conflicts.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"overlaps\": [\n {\n \"field_a\": \"vendor_name\",\n \"field_b\": \"supplier_name\",\n \"similarity\": 0.94,\n \"schemas_affected\": 3\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n ROUTING RULES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"routing\">Routing Rules</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Routing rules automatically direct documents to schemas, reviewers, or delivery\n destinations based on configurable conditions.\n </p>\n\n <div id=\"list-routing-rules\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/routing-rules\"\n summary=\"List all routing rules.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"rule_4k8m2n\",\n \"name\": \"Invoices to Finance\",\n \"conditions\": { \"document_type\": \"invoice\" },\n \"actions\": { \"assign_schema\": \"schema_fin_001\" },\n \"priority\": 10,\n \"enabled\": true\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-routing-rule\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/routing-rules\"\n summary=\"Create a new routing rule.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Rule name.' },\n { name: 'conditions', type: 'object', required: true, description: 'Match conditions (document_type, source_id, etc.).' },\n { name: 'actions', type: 'object', required: true, description: 'Actions to execute (assign_schema, route_to, etc.).' },\n { name: 'priority', type: 'integer', default: '0', description: 'Higher priority rules execute first.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"rule_4k8m2n\",\n \"name\": \"Invoices to Finance\",\n \"conditions\": { \"document_type\": \"invoice\" },\n \"actions\": { \"assign_schema\": \"schema_fin_001\" },\n \"priority\": 10,\n \"enabled\": true\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-routing-rule\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-routing-rule\">Get / Update / Delete Rule</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/routing-rules/:id\" summary=\"Get a routing rule by ID.\" />\n <EndpointBlock method=\"PATCH\" path=\"/v1/routing-rules/:id\" summary=\"Update rule name, conditions, actions, or priority.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/routing-rules/:id\" summary=\"Delete a routing rule.\" />\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DELIVERY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"delivery\">Delivery</SectionHeading>\n\n <div id=\"delivery-overview\" className=\"scroll-mt-6\">\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Configure outbound delivery. Emit signals (<InlineCode>document.extracted</InlineCode>,{' '}\n <InlineCode>run.dataspace.completed</InlineCode>, <InlineCode>result.approved</InlineCode>, …) are\n routed through <strong>bindings</strong> that join a signal filter to a{' '}\n <strong>deliverable resolver</strong>, a <strong>serializer</strong>, and a{' '}\n <strong>destination</strong>. Slice-1 ships the <InlineCode>webhook</InlineCode>{' '}\n connector with HMAC-signed payloads, idempotency keys, SSRF guard, payload caps, and a fixed\n retry ladder; S3, SFTP, Sheets, Drive, and Email arrive in later slices.\n </p>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Every attempt is recorded in the history log (<InlineCode>/v1/delivery/items</InlineCode>).\n Terminal failures land in the dead-letter queue (<InlineCode>/v1/delivery/dlq</InlineCode>)\n and are replayable. The raw outbox is inspectable at{' '}\n <InlineCode>/v1/delivery/events</InlineCode>. Use{' '}\n <InlineCode>/v1/delivery/catalog/*</InlineCode> to discover available signals,\n deliverables, serializers, and connectors — the catalog drives the compatibility-triangle\n validator that runs on every binding create/update.\n </p>\n </div>\n\n <div id=\"list-destinations\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/delivery/destinations\"\n summary=\"List delivery destinations.\"\n >\n <CodeBlock title=\"Response\">\n{`[\n {\n \"id\": \"7f8a2b44-...\",\n \"name\": \"Analytics webhook\",\n \"type\": \"webhook\",\n \"config\": { \"url\": \"https://example.com/hook\", \"headers\": {} },\n \"signing_secret\": \"***\",\n \"payload_cap_bytes\": null,\n \"is_active\": true,\n \"last_delivery_at\": \"2026-04-23T10:21:00Z\",\n \"last_delivery_status\": \"succeeded\",\n \"created_at\": \"2026-04-15T00:00:00Z\",\n \"updated_at\": \"2026-04-23T10:21:00Z\"\n }\n]`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-destination\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/destinations\"\n summary=\"Create a delivery destination.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name.' },\n { name: 'type', type: 'string', required: true, description: 'Connector type. Slice-1 ships `webhook`.' },\n { name: 'config', type: 'object', description: 'Connector-specific configuration (e.g. `{ url, headers }`).' },\n { name: 'auth_config', type: 'object', description: 'Connector-specific credentials. Never echoed back in full.' },\n { name: 'signing_secret', type: 'string', description: 'HMAC secret for connectors that sign outbound bodies.' },\n { name: 'payload_cap_bytes', type: 'integer', description: 'Per-destination TransportWrapper cap override.' },\n { name: 'is_active', type: 'boolean', description: 'Defaults to true.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"7f8a2b44-...\",\n \"name\": \"Analytics webhook\",\n \"type\": \"webhook\",\n \"config\": { \"url\": \"https://example.com/hook\" },\n \"signing_secret\": \"***\",\n \"is_active\": true,\n \"created_at\": \"2026-04-23T10:21:00Z\",\n \"updated_at\": \"2026-04-23T10:21:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"manage-destination\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-destination\">Get / Update / Delete Destination</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/destinations/:id\" summary=\"Get destination detail.\" />\n <EndpointBlock method=\"PUT\" path=\"/v1/delivery/destinations/:id\" summary=\"Partial update — only supplied fields are written.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/destinations/:id\" summary=\"Delete a destination. Cascading bindings are removed.\" />\n </div>\n </div>\n\n <div id=\"test-destination\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/destinations/:id/test\"\n summary=\"Live-ping a destination through the full transport envelope.\"\n >\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Exercises the complete delivery envelope (SSRF guard, payload cap, rate limit — retry\n ladder is disabled, <InlineCode>max_attempts: 1</InlineCode>) with a tiny test payload.\n </p>\n <CodeBlock title=\"Response\">\n{`{\n \"success\": true,\n \"httpStatus\": 200,\n \"durationMs\": 284,\n \"message\": null\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-bindings\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/delivery/bindings\"\n summary=\"List delivery bindings.\"\n >\n <CodeBlock title=\"Response\">\n{`[\n {\n \"id\": \"4c2e1a39-...\",\n \"name\": \"Extracted docs -> analytics\",\n \"signal_filter\": { \"event_type\": \"document.extracted\" },\n \"deliverable_type\": \"document_meta\",\n \"destination_id\": \"7f8a2b44-...\",\n \"serializer_format\": \"json\",\n \"is_active\": true\n }\n]`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-binding\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/delivery/bindings\"\n summary=\"Create a delivery binding.\"\n >\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Runs the compatibility-triangle validator: the <InlineCode>signal_filter</InlineCode> must be\n well-formed, the <InlineCode>deliverable_type</InlineCode> must resolve to a registered\n resolver, the <InlineCode>serializer_format</InlineCode> must resolve to a registered\n serializer, and the serializer must support the resolver's shape.\n </p>\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Human-readable name.' },\n { name: 'signal_filter', type: 'object', required: true, description: 'Shape: `{ event_type, match? }`. Match is an equality filter on payload keys.' },\n { name: 'deliverable_type', type: 'string', required: true, description: 'Registered resolver (`/v1/delivery/catalog/deliverables`).' },\n { name: 'destination_id', type: 'uuid', required: true, description: 'Destination to deliver to.' },\n { name: 'serializer_format', type: 'string', required: true, description: 'One of `json`, `ndjson`, `csv`, `csv_file`, `xlsx`, `rows`, `graph`, `raw`, `md`, `txt`.' },\n { name: 'serializer_config', type: 'object', description: 'Format-specific options (delimiter, include_header, etc.).' },\n { name: 'field_map', type: 'object', description: 'Declarative projection: `{ rules, static, drop }`. Drop → rename → static in fixed order.' },\n { name: 'delivery_policy', type: 'object', description: 'Retry/timeout overrides. Defaults to 6 attempts, `[5s, 30s, 2min, 10min, 1h]`.' },\n { name: 'is_active', type: 'boolean', description: 'Defaults to true.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"manage-binding\" className=\"scroll-mt-6\">\n <SubHeading id=\"manage-binding\">Get / Update / Delete Binding</SubHeading>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/bindings/:id\" summary=\"Get binding detail.\" />\n <EndpointBlock method=\"PUT\" path=\"/v1/delivery/bindings/:id\" summary=\"Partial update. Re-runs the compatibility-triangle validator on changed fields.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/bindings/:id\" summary=\"Delete a binding.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/bindings/:id/preview\" summary=\"Synthetic-signal dry run. Stubbed in slice 1.\" />\n </div>\n </div>\n\n <div id=\"delivery-items\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-items\">Items (History)</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n One row per delivery attempt. The processor writes <InlineCode>in_flight</InlineCode> at\n start, then updates to <InlineCode>succeeded</InlineCode> or <InlineCode>failed</InlineCode>.\n Replay generates a new attempt with a new idempotency key — history is append-only.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/items\" summary=\"List attempts. Filter by binding_id, destination_id, status. Paginated.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/items/:id\" summary=\"Attempt detail with request/response bodies.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/items/:id/replay\" summary=\"Re-enqueue. Returns `{ enqueued, idempotency_key }`.\" />\n </div>\n </div>\n\n <div id=\"delivery-dlq\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-dlq\">Dead-Letter Queue</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Terminal failures after retry exhaustion (or permanent 4xx errors) land here. Replay\n enqueues a fresh attempt; dismiss removes the row from the queue without replaying.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/dlq\" summary=\"List dead-letter rows. Filter by binding_id, error_code.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/dlq/:id\" summary=\"Dead-letter detail.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/dlq/:id/replay\" summary=\"Re-enqueue a dead-letter row. Row remains in queue for audit.\" />\n <EndpointBlock method=\"DELETE\" path=\"/v1/delivery/dlq/:id\" summary=\"Dismiss the row.\" />\n </div>\n </div>\n\n <div id=\"delivery-events\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-events\">Outbox Events</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Raw outbox rows with their processing status (<InlineCode>enqueued</InlineCode>,{' '}\n <InlineCode>no-subscribers</InlineCode>, <InlineCode>failed</InlineCode>). Useful for\n debugging binding matchers. Event IDs are BIGSERIAL (strings).\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/events\" summary=\"List outbox rows. Filter by event_type. Paginated.\" />\n <EndpointBlock method=\"POST\" path=\"/v1/delivery/events/:id/replay\" summary=\"Clear processed_at/processing_status so the poller re-picks the row.\" />\n </div>\n </div>\n\n <div id=\"delivery-catalog\" className=\"scroll-mt-6\">\n <SubHeading id=\"delivery-catalog\">Catalog</SubHeading>\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Introspect the four registries that drive the binding compatibility-triangle. Populate\n your binding-editor dropdowns from these endpoints rather than hardcoding lists.\n </p>\n <div className=\"space-y-2 mb-6\">\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/signals\" summary=\"All DeliveryEventType discriminants.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/deliverables\" summary=\"Registered resolvers with compatible_signals and shape.\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/serializers\" summary=\"Registered serializers with supports_kinds (probed).\" />\n <EndpointBlock method=\"GET\" path=\"/v1/delivery/catalog/connectors\" summary=\"Registered connectors with capabilities().\" />\n </div>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n REVIEW\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"review\">Review</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The review queue surfaces extraction results that need human validation.\n Approve, reject, or batch-process items programmatically.\n </p>\n\n <div id=\"list-review\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/review\"\n summary=\"List items in the review queue.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter: pending, approved, rejected.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"rev_8k2n4m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"status\": \"pending\",\n \"flags\": [\"low_confidence\", \"missing_fields\"],\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 23 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-action\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/:id/action\"\n summary=\"Take action on a review item.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'action', type: 'string', required: true, description: '\"approve\" or \"reject\".' },\n { name: 'reason', type: 'string', description: 'Optional reason for the action.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"rev_8k2n4m\",\n \"status\": \"approved\",\n \"actioned_at\": \"2024-09-14T10:35:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-batch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/batch\"\n summary=\"Batch approve or reject multiple review items.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'ids', type: 'string[]', required: true, description: 'Array of review item IDs.' },\n { name: 'action', type: 'string', required: true, description: '\"approve\" or \"reject\".' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"processed\": 5,\n \"failed\": 0\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-stats\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/review/stats\"\n summary=\"Get review queue statistics.\"\n description=\"Returns aggregate statistics about the review queue (pending, approved, rejected counts).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"pending\": 23,\n \"approved\": 142,\n \"rejected\": 8,\n \"total\": 173\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-assign\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/review/{id}/assign\"\n summary=\"Assign a review record to a user (or unassign with null).\"\n description=\"Set the assignee on a single review record. Pass user_id: null to unassign.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Review record identifier.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'user_id', type: 'uuid | null', required: true, description: 'User ID of the assignee, or null to unassign.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n QUALITY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"quality\">Quality</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Manage ground truth datasets and benchmark extraction quality over time.\n </p>\n\n <div id=\"list-quality-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/ground-truth\"\n summary=\"List ground truth datasets.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"gt_4k8m2n\",\n \"name\": \"Invoice Validation Set\",\n \"description\": \"50 manually verified invoices\",\n \"document_count\": 50,\n \"created_at\": \"2024-08-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-benchmarks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/benchmarks\"\n summary=\"List benchmark runs and accuracy scores.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"bench_9x2k4m\",\n \"ground_truth_id\": \"gt_4k8m2n\",\n \"schema_id\": \"schema_fin_001\",\n \"accuracy\": 0.94,\n \"precision\": 0.96,\n \"recall\": 0.92,\n \"run_at\": \"2024-09-10T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"add-ground-truth-entry\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/quality/ground-truth/{datasetId}/entries\"\n summary=\"Add an entry to a ground truth dataset.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', description: 'Optional document associated with the entry.' },\n { name: 'expected_data', type: 'object', required: true, description: 'The known-correct field values for this document.' },\n { name: 'notes', type: 'string', description: 'Optional reviewer notes.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"document_id\": \"uuid\",\n \"expected_data\": { \"vendor_name\": \"Acme Corp\", \"total\": 1234.56 },\n \"notes\": null,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-ground-truth-entry\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/quality/ground-truth/{datasetId}/entries/{entryId}\"\n summary=\"Delete a ground truth entry.\"\n />\n </div>\n\n <div id=\"benchmark-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/quality/benchmarks/{id}/results\"\n summary=\"Get benchmark results.\"\n description=\"Returns per-document accuracy results for a benchmark run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"document_id\": \"uuid\",\n \"ground_truth_entry_id\": \"uuid\",\n \"accuracy\": 0.94,\n \"field_results\": { \"vendor_name\": \"pass\", \"total\": \"fail\" },\n \"created_at\": \"2024-09-10T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n MATCHING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"matching\">Matching</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Match extracted data against reference datasets using configurable field-level\n matching strategies (exact, fuzzy, date range, numeric range).\n </p>\n\n <div id=\"list-matching-configs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/configs\"\n summary=\"List matching configurations.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [\n { \"source\": \"vendor_name\", \"target\": \"name\", \"strategy\": \"fuzzy\", \"weight\": 0.7 }\n ],\n \"created_at\": \"2024-09-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs\"\n summary=\"Create a matching configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Configuration name.' },\n { name: 'reference_table', type: 'string', required: true, description: 'Reference data table ID.' },\n { name: 'field_mappings', type: 'array', required: true, description: 'Array of { source, target, strategy, weight } mappings.' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/matching/configs/:id\"\n summary=\"Update an existing matching configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated configuration name.' },\n { name: 'reference_table', type: 'string', description: 'Updated reference data table ID.' },\n { name: 'field_mappings', type: 'array', description: 'Updated array of { source, target, strategy, weight } mappings.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"match_3n7k9m\",\n \"name\": \"Vendor Matching v2\",\n \"reference_table\": \"vendors\",\n \"field_mappings\": [\n { \"source\": \"vendor_name\", \"target\": \"name\", \"strategy\": \"fuzzy\", \"weight\": 0.8 },\n { \"source\": \"tax_id\", \"target\": \"tax_number\", \"strategy\": \"exact\", \"weight\": 1.0 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-matching-config\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/matching/configs/:id\"\n summary=\"Delete a matching configuration and all associated runs.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"run-matching\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs/:id/run\"\n summary=\"Trigger a matching run against the reference dataset.\"\n >\n <CodeBlock title=\"Response (202)\">\n{`{\n \"run_id\": \"run_8k2n4m\",\n \"status\": \"processing\",\n \"message\": \"Matching run started. Poll for results.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-matching-runs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs\"\n summary=\"List matching runs, optionally filtered by config.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'config_id', type: 'uuid', description: 'Filter runs by matching config ID.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"run_8k2n4m\",\n \"config_id\": \"match_3n7k9m\",\n \"status\": \"completed\",\n \"matched_count\": 142,\n \"unmatched_count\": 8,\n \"started_at\": \"2024-09-15T10:00:00Z\",\n \"completed_at\": \"2024-09-15T10:02:34Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"cancel-matching-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/:id/cancel\"\n summary=\"Cancel a matching run that is currently processing.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"run_8k2n4m\",\n \"status\": \"cancelled\",\n \"message\": \"Matching run cancelled.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"smart-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/configs/{id}/smart-run\"\n summary=\"Run a generated AI strategy against a matching config.\"\n description=\"Execute a previously-generated strategy on the documents scoped by the matching config. The strategy is generated separately via /v1/matching/strategies/generate.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Matching configuration identifier.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'strategy_id', type: 'uuid', required: true, description: 'Generated strategy to execute against this config.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"ai-resolve\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/{id}/ai-resolve\"\n summary=\"AI-resolve a matching run's review band.\"\n description=\"Triggers AI-driven resolution on a completed run's review-band candidates. The run must already have an associated strategy; no request body.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'id', type: 'uuid', required: true, description: 'Matching run identifier.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"uuid\",\n \"status\": \"ai_resolving\",\n \"message\": \"AI resolution started.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"generate-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/strategies/generate\"\n summary=\"Generate a matching strategy from reference data and a target descriptor.\"\n description=\"Synthesize a draft matching strategy by analysing the reference dataset shape and the supplied target descriptor. The returned strategy is then executed against a config via /v1/matching/configs/{id}/smart-run.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'reference_data_id', type: 'uuid', required: true, description: 'Reference dataset to use as the source of truth.' },\n { name: 'target_type', type: 'string', required: true, description: 'Target scope type — typically \"run\", \"schema\", or \"document_filter\".' },\n { name: 'target_value', type: 'object', description: 'Target descriptor payload — shape depends on target_type.' },\n { name: 'user_prompt', type: 'string', description: 'Optional natural-language guidance to steer strategy synthesis.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"get-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/strategies/{id}\"\n summary=\"Get a matching strategy.\"\n />\n </div>\n\n <div id=\"update-strategy\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/matching/strategies/{id}\"\n summary=\"Update a matching strategy.\"\n description=\"Patch an existing strategy. Every property is optional; only the keys present on the body are merged into the strategy.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'reasoning_summary', type: 'string', description: 'Updated synthesis rationale.' },\n { name: 'cardinality', type: 'object', description: 'Updated cardinality descriptor.' },\n { name: 'data_quality_notes', type: 'string[]', description: 'Updated note list.' },\n { name: 'blocking_keys', type: 'object[]', description: 'Updated blocking-key set.' },\n { name: 'blocking_strategy', type: 'string', description: 'Either \"parallel\" or \"ordered_fallback\".' },\n { name: 'hard_filters', type: 'object[]', description: 'Updated hard-filter list.' },\n { name: 'field_rules', type: 'object[]', description: 'Updated field-rule list.' },\n { name: 'thresholds', type: 'object', description: 'Updated confidence thresholds.' },\n { name: 'edge_cases', type: 'object[]', description: 'Updated edge-case list.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"match-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs/{id}/results\"\n summary=\"Get matching run results.\"\n description=\"Returns per-document match results with top candidates and field-level evidence.\"\n />\n </div>\n\n <div id=\"match-progress\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/matching/runs/{id}/progress\"\n summary=\"Get matching run progress.\"\n description=\"Returns the processing progress for an in-flight matching run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"status\": \"running\",\n \"processed\": 87,\n \"total\": 150,\n \"percentage\": 58.0\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"review-match\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/matching/runs/{runId}/results/{resultId}/review\"\n summary=\"Review a single match result.\"\n description=\"Apply an approve/reject decision (or attach reviewer notes) to a single match result within a matching run.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'runId', type: 'uuid', required: true, description: 'Matching run identifier.' },\n { name: 'resultId', type: 'uuid', required: true, description: 'Match result identifier within the run.' },\n ]}\n />\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'status', type: 'string', required: true, description: 'Reviewer decision — typically \"approved\" or \"rejected\".' },\n { name: 'notes', type: 'string', description: 'Optional reviewer note attached to the decision.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n BATCHES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"batches\">Batches</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Batch inference processes documents at 50% cost with up to 48-hour delivery.\n Upload documents with <InlineCode>processing_mode=batch</InlineCode> to use batch extraction.\n </p>\n\n <div id=\"list-batches\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/batches\"\n summary=\"List extraction batches.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'status', type: 'string', description: 'Filter: accumulating, submitted, processing, completed, failed.' },\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'per_page', type: 'integer', default: '50', description: 'Results per page.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"batch_7n3k9m\",\n \"status\": \"processing\",\n \"item_count\": 150,\n \"completed_count\": 87,\n \"submitted_at\": \"2024-09-14T08:00:00Z\"\n }\n ],\n \"pagination\": { \"page\": 1, \"per_page\": 50, \"total\": 5 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-batch\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/batches/:id\"\n summary=\"Get batch detail with item-level status.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"batch_7n3k9m\",\n \"status\": \"processing\",\n \"item_count\": 150,\n \"completed_count\": 87,\n \"items\": [\n { \"document_id\": \"doc_3j7x9p2q\", \"status\": \"completed\" },\n { \"document_id\": \"doc_5m8p2r4t\", \"status\": \"pending\" }\n ],\n \"submitted_at\": \"2024-09-14T08:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"batch-sync\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/batches/{id}/sync\"\n summary=\"Sync batch status with provider.\"\n description=\"Force a status sync with the batch inference provider (Anthropic or Bedrock).\"\n />\n </div>\n\n <div id=\"batch-cancel\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/batches/{id}/cancel\"\n summary=\"Cancel a batch inference run.\"\n description=\"Cancel an in-flight batch. Only batches in accumulating or submitted status can be cancelled.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n USAGE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"usage\">Usage</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Track API usage, document processing costs, and token consumption.\n </p>\n\n <div id=\"get-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/usage\"\n summary=\"Get aggregate usage statistics for a date range.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', required: true, description: 'ISO 8601 start date.' },\n { name: 'to', type: 'string', required: true, description: 'ISO 8601 end date.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"documents_processed\": 1842,\n \"pages_processed\": 5210,\n \"extractions_run\": 2104,\n \"total_cost_usd\": 15.63,\n \"period\": { \"from\": \"2024-09-01\", \"to\": \"2024-09-30\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"document-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/usage/documents/:id\"\n summary=\"Get usage breakdown for a specific document.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"document_id\": \"doc_3j7x9p2q\",\n \"ocr_cost_usd\": 0.006,\n \"extraction_cost_usd\": 0.012,\n \"total_cost_usd\": 0.018,\n \"operations\": [\n { \"type\": \"document_ai_ocr\", \"model\": \"mistral-ocr\", \"pages\": 2, \"cost_usd\": 0.006 },\n { \"type\": \"extraction\", \"model\": \"claude-sonnet\", \"tokens\": 4280, \"cost_usd\": 0.012 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DIALECTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"dialects\">Dialects</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Dialects define shared output formatting rules (date formats, number locales,\n delimiters, encoding, etc.) that can be applied across schemas and exports.\n </p>\n\n <div id=\"list-dialects\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/dialects\"\n summary=\"List all shared dialects.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/dialects\"\n summary=\"Create a new dialect.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Dialect name.' },\n { name: 'date_format', type: 'string', description: 'Date format string (e.g. DD/MM/YYYY).' },\n { name: 'number_locale', type: 'string', description: 'BCP 47 locale for number formatting (e.g. de-DE).' },\n { name: 'delimiter', type: 'string', description: 'CSV field delimiter (e.g. ; or ,).' },\n { name: 'null_representation', type: 'string', description: 'String used for null values.' },\n { name: 'encoding', type: 'string', description: 'Output encoding (e.g. utf-8, iso-8859-1).' },\n { name: 'boolean_format', type: 'string', description: 'Boolean representation (e.g. true/false, ja/nein).' },\n ]}\n />\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/dialects/:id\"\n summary=\"Get a dialect by ID.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 1,\n \"config\": {\n \"date_format\": \"DD/MM/YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"update-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"PUT\"\n path=\"/v1/dialects/:id\"\n summary=\"Update a dialect. Partial update; increments the version number.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', description: 'Updated dialect name.' },\n { name: 'date_format', type: 'string', description: 'Updated date format string.' },\n { name: 'number_locale', type: 'string', description: 'Updated number locale.' },\n { name: 'delimiter', type: 'string', description: 'Updated delimiter.' },\n { name: 'null_representation', type: 'string', description: 'Updated null representation.' },\n { name: 'encoding', type: 'string', description: 'Updated encoding.' },\n { name: 'boolean_format', type: 'string', description: 'Updated boolean format.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"dlct_9k3m7n\",\n \"name\": \"EU Standard\",\n \"version\": 2,\n \"config\": {\n \"date_format\": \"DD.MM.YYYY\",\n \"number_locale\": \"de-DE\",\n \"delimiter\": \";\",\n \"null_representation\": \"\",\n \"encoding\": \"utf-8\",\n \"boolean_format\": \"ja/nein\"\n },\n \"created_at\": \"2024-10-01T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-dialect\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/dialects/:id\"\n summary=\"Delete a dialect.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n REFERENCE DATA\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"reference-data\">Reference Data</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Manage reference datasets used for matching and lookup operations.\n Reference data is uploaded as CSV or XLSX and stored as versioned tables.\n </p>\n\n <div id=\"list-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data\"\n summary=\"List reference datasets.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"ref_4k8m2n\",\n \"name\": \"Vendor Master\",\n \"source_type\": \"csv\",\n \"row_count\": 1250,\n \"columns\": [\"vendor_id\", \"name\", \"tax_number\", \"country\"],\n \"created_at\": \"2024-10-05T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data/:id\"\n summary=\"Get reference data metadata by ID.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"id\": \"ref_4k8m2n\",\n \"name\": \"Vendor Master\",\n \"source_type\": \"csv\",\n \"row_count\": 1250,\n \"columns\": [\"vendor_id\", \"name\", \"tax_number\", \"country\"],\n \"created_at\": \"2024-10-05T00:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-reference-rows\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/reference-data/:id/rows\"\n summary=\"Get paginated rows from a reference dataset.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'page', type: 'integer', default: '1', description: 'Page number.' },\n { name: 'limit', type: 'integer', default: '100', description: 'Rows per page (max 500).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"vendor_id\": \"V001\", \"name\": \"Acme Corp\", \"tax_number\": \"DE123456789\", \"country\": \"DE\" },\n { \"vendor_id\": \"V002\", \"name\": \"Globex Inc\", \"tax_number\": \"US987654321\", \"country\": \"US\" }\n ],\n \"pagination\": { \"page\": 1, \"limit\": 100, \"total\": 1250 }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"delete-reference-data\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/reference-data/:id\"\n summary=\"Delete a reference dataset and all its rows.\"\n >\n <CodeBlock title=\"Response (204)\">\n{`// No content`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n WEBHOOKS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"webhooks\">Webhooks</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Receive real-time notifications when extraction events occur. Configure webhook\n URLs per-source or per-extraction via the <InlineCode>webhook_url</InlineCode> option.\n </p>\n\n <SubHeading id=\"webhook-management\">Management</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Programmatically create, update, and delete webhook configurations. Each webhook can be scoped to specific event types and optionally to a single source connection.\n </p>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/webhooks\"\n summary=\"List webhook configurations.\"\n description=\"Returns all webhook configurations for your organization.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{\n \"data\": [\n {\n \"id\": \"whk_a1b2c3d4\",\n \"url\": \"https://example.com/webhook\",\n \"events\": [\"extraction.complete\", \"extraction.failed\"],\n \"is_active\": true,\n \"source_connection_id\": null,\n \"created_at\": \"2026-05-01T10:00:00.000Z\",\n \"updated_at\": \"2026-05-01T10:00:00.000Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/webhooks\"\n summary=\"Create a webhook configuration.\"\n description=\"Creates a new webhook endpoint for your organization.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'url', type: 'string', required: true, description: 'The HTTPS URL to deliver events to.' },\n { name: 'secret', type: 'string', description: 'Shared secret for HMAC-SHA256 signature verification. Auto-generated if omitted.' },\n { name: 'events', type: 'string[]', description: 'Event types to subscribe to. Defaults to [\"extraction.complete\", \"extraction.failed\"].' },\n { name: 'source_connection_id', type: 'string', description: 'Scope deliveries to a specific source connection.' },\n { name: 'is_active', type: 'boolean', description: 'Whether the webhook is active. Defaults to true.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/webhooks/:id\"\n summary=\"Update a webhook configuration.\"\n description=\"Partially update an existing webhook configuration.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'url', type: 'string', description: 'Updated delivery URL.' },\n { name: 'secret', type: 'string', description: 'Updated signing secret.' },\n { name: 'events', type: 'string[]', description: 'Updated event filter.' },\n { name: 'is_active', type: 'boolean', description: 'Enable or disable the webhook.' },\n ]}\n />\n </EndpointBlock>\n\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/webhooks/:id\"\n summary=\"Delete a webhook configuration.\"\n description=\"Permanently removes a webhook configuration. Pending deliveries are cancelled.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{ \"deleted\": true, \"id\": \"whk_a1b2c3d4\" }`}\n </CodeBlock>\n </EndpointBlock>\n\n <SubHeading id=\"webhook-events\">Events</SubHeading>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Event</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">extraction.complete</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Extraction finished successfully. Payload includes the full extraction result.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">extraction.failed</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Extraction failed. Payload includes the error details.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">document.ingested</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">A new document has been processed and is ready for extraction.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <SubHeading id=\"webhook-delivery\">Delivery Format</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-3\">\n Webhooks are delivered as <InlineCode>POST</InlineCode> requests with a JSON body.\n Each delivery includes these headers:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Header</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Event</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">The event type (e.g. extraction.complete).</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Signature</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">HMAC-SHA256 signature of the request body.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Delivery-Id</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unique delivery ID for idempotency.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-Talonic-Timestamp</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unix timestamp of when the event was sent.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <CodeBlock title=\"Webhook payload example\">\n{`{\n \"event\": \"extraction.complete\",\n \"delivery_id\": \"dlv_a1b2c3d4\",\n \"timestamp\": \"2024-09-14T10:33:12Z\",\n \"data\": {\n \"extraction_id\": \"ext_8f2k4n1m\",\n \"document_id\": \"doc_3j7x9p2q\",\n \"schema_id\": \"sch_abc123\",\n \"status\": \"complete\",\n \"confidence\": 0.94\n }\n}`}\n </CodeBlock>\n\n <SubHeading id=\"webhook-verification\">Signature Verification</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Verify webhook authenticity by computing an HMAC-SHA256 signature of the raw request body\n using your webhook secret, then comparing it with the <InlineCode>X-Talonic-Signature</InlineCode> header.\n </p>\n\n <CodeBlock language=\"bash\" title=\"Python\">\n{`import hmac\nimport hashlib\n\ndef verify_webhook(payload: bytes, signature: str, secret: str) -> bool:\n expected = hmac.new(\n secret.encode(),\n payload,\n hashlib.sha256\n ).hexdigest()\n return hmac.compare_digest(f\"sha256={expected}\", signature)`}\n </CodeBlock>\n\n <CodeBlock language=\"bash\" title=\"Node.js\">\n{`const crypto = require('crypto');\n\nfunction verifyWebhook(payload, signature, secret) {\n const expected = crypto\n .createHmac('sha256', secret)\n .update(payload)\n .digest('hex');\n return crypto.timingSafeEqual(\n Buffer.from(\\`sha256=\\${expected}\\`),\n Buffer.from(signature)\n );\n}`}\n </CodeBlock>\n\n <SubHeading id=\"webhook-retries\">Retry Policy</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-2\">\n If your endpoint returns a non-2xx status code or times out (30s), Talonic retries\n with exponential backoff:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Attempt</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Delay</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 text-[13px]\">1st retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">1 minute</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">2nd retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">5 minutes</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">3rd retry</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">30 minutes</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px]\">4th retry (final)</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">4 hours</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">\n After 4 failed attempts, the delivery is marked as failed. You can check delivery\n status and replay events from the dashboard.\n </p>\n\n {/* ═══════════════════════════════════════════════════════════════\n RESOLUTIONS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"resolutions\">Resolutions</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Resolution runs apply field normalization, lookup cascades, and value transforms\n to extracted data. Create a resolution from a completed job run to standardise\n field values against reference data.\n </p>\n\n <div id=\"list-resolutions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions\"\n summary=\"List resolution runs, optionally filtered by status or source run.\"\n description=\"Requires read scope.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of items to return (1–100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order by creation date (asc | desc).' },\n { name: 'status', type: 'string', required: false, description: 'Filter by run status.' },\n { name: 'source_run_id', type: 'uuid', required: false, description: 'Filter by originating job run.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"source_run_id\": \"uuid\",\n \"status\": \"completed\",\n \"documents_processed\": 142,\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"completed_at\": \"2024-09-14T10:35:42Z\",\n \"links\": { \"self\": \"/v1/resolutions/uuid\", \"results\": \"/v1/resolutions/uuid/results\" }\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"create-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/resolutions\"\n summary=\"Create a resolution run from a completed job.\"\n description=\"Requires write scope. Start a new resolution run targeting documents from a specific source run.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'source_run_id', type: 'uuid', required: true, description: 'ID of the source run to resolve against.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"source_run_id\": \"run_abc123\"\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"source_run_id\": \"uuid\",\n \"status\": \"pending\",\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"links\": { \"self\": \"/v1/resolutions/uuid\", \"results\": \"/v1/resolutions/uuid/results\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions/{id}\"\n summary=\"Get a resolution run with status and summary.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"get-resolution-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/resolutions/{id}/results\"\n summary=\"Get per-field resolution results showing original and resolved values.\"\n description=\"Requires read scope. Returns the resolved data for all documents in the resolution run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"document_id\": \"doc_abc123\",\n \"field_name\": \"country\",\n \"original_value\": \"Deutschland\",\n \"resolved_value\": \"DE\",\n \"resolution_step\": \"lookup\",\n \"confidence\": 0.98\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"execute-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/resolutions/{id}/execute\"\n summary=\"Execute the resolution pipeline on all pending fields.\"\n description=\"Requires write scope. Returns immediately — poll the run for progress.\"\n />\n </div>\n\n <div id=\"delete-resolution\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/resolutions/{id}\"\n summary=\"Delete a resolution run and its results.\"\n description=\"Requires write scope.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n LINKING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"linking\">Linking</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The linking graph connects documents through shared entity values — an invoice\n and a contract sharing the same customer ID are linked. The API exposes the\n bipartite document-entity graph: link keys (field-level entity identifiers),\n document-level links, the full graph, document-centric subgraphs, classification\n (identity, transaction, reference), backfill, and document-to-case mapping.\n </p>\n\n <div id=\"list-link-keys\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/link-keys\"\n summary=\"List all discovered link keys with their classification category and frequency.\"\n description=\"Requires read scope. Returns all configured link keys (field-level entity identifiers used for document linking).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"field_name\": \"customer_id\",\n \"category\": \"identity\",\n \"auto_classified\": true,\n \"frequency\": 0.85\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-links\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/documents/{id}/links\"\n summary=\"Get all links for a specific document.\"\n description=\"Requires read scope. Returns all entity links discovered for a specific document.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"entity_value\": \"Acme Corp\",\n \"entity_type\": \"vendor\",\n \"link_key\": \"vendor_name\",\n \"linked_document_ids\": [\"uuid\", \"uuid\"]\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-linking-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/graph\"\n summary=\"Get the full document linking graph as nodes and edges.\"\n description=\"Requires read scope. Returns the bipartite document-entity graph for the customer. Can be large for workspaces with many documents.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"nodes\": [...],\n \"edges\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-document-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/graph/documents/{id}\"\n summary=\"Get the graph neighbourhood for a single document.\"\n description=\"Requires read scope. Returns the subgraph of entities and linked documents for a specific document.\"\n >\n <ParamTable params={[\n { name: 'depth', type: 'integer', required: false, description: 'Graph traversal depth (default 2).' },\n ]} />\n </EndpointBlock>\n </div>\n\n <div id=\"classify-link-keys\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/linking/classify\"\n summary=\"Classify link keys into categories using AI.\"\n description=\"Requires write scope. Runs AI classification on ambiguous fields to determine their link key category (identity, transaction, reference). Runs asynchronously.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"classified\": 12,\n \"results\": [...]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"backfill-linking\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/linking/backfill\"\n summary=\"Backfill link values across all documents.\"\n description=\"Requires write scope. Triggers a backfill of the linking graph for all documents — useful after link key configuration changes. Returns 202; poll progress via the backfill progress endpoint.\"\n >\n <CodeBlock title=\"Response (202)\">\n{`{\n \"status\": \"started\",\n \"message\": \"Backfill queued.\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"backfill-progress\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/backfill/progress\"\n summary=\"Get backfill progress.\"\n description=\"Requires read scope. Returns the current progress of an in-flight backfill operation.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"status\": \"running\",\n \"processed\": 187,\n \"total\": 540,\n \"started_at\": \"2024-09-14T10:32:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"document-case-map\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/linking/document-case-map\"\n summary=\"Get the mapping of documents to their resolved cases.\"\n description=\"Requires read scope. Returns a mapping of document IDs to their assigned case keys.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": {\n \"doc_uuid_1\": \"case_x7k9m2\",\n \"doc_uuid_2\": \"case_x7k9m2\"\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n N-SHOT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"nshot\">N-Shot</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n N-Shot endpoints provide field-level comparisons between job runs — useful for\n evaluating extraction quality across schema versions. Submit judge decisions\n (human or AI) to record which run produced the better result. All routes are\n nested under <InlineCode>/v1/jobs/runs/{'{runId}'}/nshot/...</InlineCode>.\n </p>\n\n <div id=\"nshot-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/summary\"\n summary=\"Get an aggregate N-Shot summary for a run.\"\n description=\"Requires read scope. Returns an aggregate summary of N-Shot comparisons for a job run.\"\n />\n </div>\n\n <div id=\"nshot-comparisons\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/comparisons\"\n summary=\"List per-document field comparisons.\"\n description=\"Requires read scope. Returns all N-Shot comparisons for a job run.\"\n />\n </div>\n\n <div id=\"nshot-comparison\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/jobs/runs/{runId}/nshot/comparison\"\n summary=\"Get a specific field comparison.\"\n description=\"Requires read scope. Returns a single N-Shot comparison filtered by document and field.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID to compare.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name to compare.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"nshot-override\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/runs/{runId}/nshot/override\"\n summary=\"Override an N-Shot value for a specific field.\"\n description=\"Requires write scope. Manually override the N-Shot selected value for a document-field pair.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name.' },\n { name: 'value', type: 'any', required: true, description: 'The override value to apply.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"nshot-judge-decision\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/jobs/runs/{runId}/nshot/judge-decision\"\n summary=\"Submit a judge decision (human or AI) for an N-Shot comparison.\"\n description=\"Requires write scope. Records which N-Shot candidate is correct.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'document_id', type: 'uuid', required: true, description: 'Document ID.' },\n { name: 'field_name', type: 'string', required: true, description: 'Field name.' },\n { name: 'decision', type: 'string', required: true, description: \"The judge's selected value or verdict.\" },\n ]}\n />\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMA GRAPH\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schema-graph\">Schema Graph</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The schema graph is a versioned ontology of document classes discovered across\n your workspace. Each class captures a document type's canonical fields.\n The API exposes versioned classes, diffs proposed between versions (with\n approve/reject workflow), inter-class edges, aliases, and a D3-compatible\n visualization payload.\n </p>\n\n <div id=\"list-schema-graph-classes\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes\"\n summary=\"List all schema graph classes.\"\n description=\"Requires read scope. Returns all classes in the schema graph ontology.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"name\": \"Invoice\",\n \"description\": \"Standard invoice schema\",\n \"version\": 3,\n \"field_count\": 12,\n \"created_at\": \"2024-08-01T00:00:00Z\",\n \"updated_at\": \"2024-09-14T00:00:00Z\",\n \"links\": { \"self\": \"/v1/schema-graph/classes/uuid\", \"versions\": \"/v1/schema-graph/classes/uuid/versions\" }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-schema-graph-class\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}\"\n summary=\"Get a schema graph class with its current field definitions.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"list-class-versions\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}/versions\"\n summary=\"List all versions of a schema graph class.\"\n description=\"Requires read scope. Returns all published versions of a class, ordered by version number descending.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"version\": 3,\n \"fields\": [...],\n \"created_at\": \"2024-09-01T00:00:00Z\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-class-version\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/classes/{id}/versions/{version}\"\n summary=\"Get a specific version of a schema graph class.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"list-schema-graph-diffs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/diffs\"\n summary=\"List pending, approved, and rejected diffs.\"\n description=\"Requires read scope. Returns pending and processed diffs between class versions.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"class_id\": \"uuid\",\n \"from_version\": 2,\n \"to_version\": 3,\n \"status\": \"pending\",\n \"changes\": [...],\n \"created_at\": \"2024-09-14T10:00:00Z\",\n \"decided_at\": null\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"approve-diff\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schema-graph/diffs/{id}/approve\"\n summary=\"Approve a pending diff, promoting it to the next class version.\"\n description=\"Requires write scope. Promotes the changes to the live class version.\"\n />\n </div>\n\n <div id=\"reject-diff\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/schema-graph/diffs/{id}/reject\"\n summary=\"Reject a pending diff.\"\n description=\"Requires write scope. Discards the proposed changes.\"\n />\n </div>\n\n <div id=\"list-schema-graph-edges\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/edges\"\n summary=\"List inter-class edges in the schema graph.\"\n description=\"Requires read scope. Returns all edges (relationships) between schema graph classes.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"source_class_id\": \"uuid\",\n \"target_class_id\": \"uuid\",\n \"relationship\": \"references\",\n \"weight\": 0.87\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"list-schema-graph-aliases\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/aliases\"\n summary=\"List schema graph class aliases.\"\n description=\"Requires read scope. Returns all class aliases (alternative names mapping to canonical class IDs).\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"alias\": \"Bill\", \"class_id\": \"uuid\", \"class_name\": \"Invoice\" }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"visualize-schema-graph\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/schema-graph/visualize\"\n summary=\"Get D3-compatible visualization data for the schema graph.\"\n description=\"Requires read scope. Returns nodes and edges formatted for graph visualization.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n STRUCTURING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"structuring\">Structuring</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The structuring pipeline validates extracted data through configurable checks\n and approval gates. Checks define validation rules; gates aggregate checks and\n determine whether records require manual approval before delivery. Also exposes\n per-result check outcomes, the pending-approvals queue, approve/reject actions,\n and the manual delivery trigger for an approved run.\n </p>\n\n <SubHeading id=\"structuring-checks\">Checks</SubHeading>\n\n\n <div id=\"list-structuring-checks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/checks\"\n summary=\"List validation checks.\"\n description=\"Requires read scope. Returns all configured validation checks for the customer.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Maximum number of items to return (1–100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order by creation date (asc | desc).' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"create-structuring-check\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/checks\"\n summary=\"Create a validation check.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Check name.' },\n { name: 'description', type: 'string', description: 'Optional description.' },\n { name: 'type', type: 'string', required: true, description: 'Check type: field_format, value_range, cross_field, ai_coherence.' },\n { name: 'config', type: 'object', description: 'Type-specific configuration.' },\n { name: 'enabled', type: 'boolean', default: 'true', description: 'Whether the check runs against new results.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"name\": \"Amount range check\",\n \"type\": \"value_range\",\n \"config\": {\n \"field\": \"total_amount\",\n \"min\": 0,\n \"max\": 1000000\n }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-structuring-check\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/checks/{id}\"\n summary=\"Get / update / delete a structuring check.\"\n description=\"Same path supports GET (detail, requires read scope), PUT (update — same body shape as create, requires write scope), and DELETE (requires write scope).\"\n />\n </div>\n\n <SubHeading id=\"structuring-gates\">Approval Gates</SubHeading>\n\n\n <div id=\"list-structuring-gates\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/gates\"\n summary=\"List approval gates.\"\n description=\"Requires read scope. Returns all configured approval gates for the customer.\"\n />\n </div>\n\n <div id=\"create-structuring-gate\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/gates\"\n summary=\"Create an approval gate.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'name', type: 'string', required: true, description: 'Gate name.' },\n { name: 'description', type: 'string', description: 'Optional description.' },\n { name: 'schema_id', type: 'uuid', description: 'Optional schema scope for the gate.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"get-structuring-gate\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/gates/{id}\"\n summary=\"Get / update / delete an approval gate.\"\n description=\"Same path supports GET (detail with rules, requires read scope), PUT (update, requires write scope), and DELETE (requires write scope).\"\n />\n </div>\n\n <div id=\"gate-rules\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/gates/{id}/rules\"\n summary=\"Add a rule to an approval gate.\"\n description=\"Requires write scope.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'type', type: 'string', required: true, description: 'Rule type (e.g. min_confidence, validation_pass_rate, field_coverage).' },\n { name: 'threshold', type: 'number', required: true, description: 'Numeric threshold value.' },\n ]}\n />\n </EndpointBlock>\n <EndpointBlock\n method=\"DELETE\"\n path=\"/v1/structuring/gates/{gateId}/rules/{ruleId}\"\n summary=\"Remove a rule from an approval gate.\"\n description=\"Requires write scope. Soft-deletes a rule. Both identifiers come from the path; no request body.\"\n >\n <ParamTable\n title=\"Path parameters\"\n params={[\n { name: 'gateId', type: 'uuid', required: true, description: 'Parent approval gate identifier.' },\n { name: 'ruleId', type: 'uuid', required: true, description: 'Rule identifier to remove.' },\n ]}\n />\n </EndpointBlock>\n </div>\n\n <div id=\"result-checks\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/results/{id}/checks\"\n summary=\"Get check results for a structuring result.\"\n description=\"Requires read scope. Returns the validation check outcomes for a specific structuring result.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"check_id\": \"uuid\",\n \"check_name\": \"vendor_present\",\n \"passed\": true,\n \"message\": null\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"pending-approvals\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/structuring/approvals/pending\"\n summary=\"List pending approvals.\"\n description=\"Requires read scope. Returns structuring results awaiting manual approval.\"\n />\n </div>\n\n <div id=\"approve-reject-result\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/approvals/{id}/approve\"\n summary=\"Approve / reject a structuring result.\"\n description=\"Requires write scope. POST /approve approves the result; POST /reject rejects it. Both return { id, status }.\"\n />\n </div>\n\n <div id=\"trigger-delivery\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/structuring/delivery/{runId}\"\n summary=\"Trigger delivery for a structuring run.\"\n description=\"Requires write scope. Emit delivery signals for all approved results in the run.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"delivered\": 142,\n \"skipped\": 8\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n TELEMETRY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"telemetry\">Telemetry</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Telemetry endpoints aggregate structuring metrics (capture hit rate, synthesize\n rate, strategy distribution, tier funnel) per schema or per run.\n </p>\n\n <div id=\"schema-telemetry-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/summary\"\n summary=\"Get aggregate metrics for a schema across all runs.\"\n description=\"Requires read scope. Aggregate structuring metrics for a schema — capture hit rate, synthesize rate, strategy distribution, tier funnel.\"\n />\n </div>\n\n <div id=\"schema-telemetry-trend\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/trend\"\n summary=\"Get metric trends over time for a schema.\"\n description=\"Requires read scope. Time-series telemetry data for a schema over recent runs.\"\n />\n </div>\n\n <div id=\"schema-telemetry-fields\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/schemas/{id}/fields\"\n summary=\"Get per-field structuring metrics for a schema.\"\n description=\"Requires read scope. Field-level structuring metrics — per-field state distribution, capture rates, and strategy breakdown.\"\n />\n </div>\n\n <div id=\"run-telemetry-summary\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/telemetry/runs/{id}/summary\"\n summary=\"Get structuring metrics for a single run.\"\n description=\"Requires read scope. Aggregate structuring metrics for a specific job run.\"\n />\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n VALIDATION\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"validation\">Validation</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Validation runs measure extraction accuracy against ground-truth datasets.\n Manage datasets and runs, and retrieve per-document and per-field accuracy\n results. Create a ground-truth set, then run validations to compare extracted\n values against expected values.\n </p>\n\n <SubHeading id=\"ground-truth-datasets\">Ground-Truth Datasets</SubHeading>\n\n <div id=\"list-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/ground-truth\"\n summary=\"List ground-truth datasets.\"\n description=\"Requires read scope. Returns all ground-truth datasets for the customer.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"name\": \"Invoice Validation Set\",\n \"description\": \"50 manually verified invoices\",\n \"sample_count\": 50,\n \"created_at\": \"2024-08-01T00:00:00Z\",\n \"links\": { \"self\": \"/v1/validation/ground-truth/uuid\" }\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-ground-truth\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/ground-truth/{id}\"\n summary=\"Get / delete a ground-truth dataset.\"\n description=\"Same path supports GET (detail with expected values, requires read scope) and DELETE (requires write scope).\"\n />\n </div>\n\n <SubHeading id=\"validation-runs\">Validation Runs</SubHeading>\n\n\n <div id=\"list-validation-runs\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs\"\n summary=\"List validation runs.\"\n description=\"Requires read scope.\"\n />\n </div>\n\n <div id=\"create-validation-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"POST\"\n path=\"/v1/validation/runs\"\n summary=\"Create a validation run comparing a job against a ground-truth dataset.\"\n description=\"Requires write scope. Starts a new validation run against a ground-truth dataset.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'golden_sample_id', type: 'uuid', required: true, description: 'Ground-truth dataset to validate against (column name retained for backwards compatibility).' },\n { name: 'dataspace_run_id', type: 'uuid', description: 'Optional job run to validate.' },\n { name: 'schema_id', type: 'uuid', description: 'Optional schema to scope the validation.' },\n { name: 'name', type: 'string', description: 'Optional human-readable name.' },\n ]}\n />\n <CodeBlock title=\"Request body\">\n{`{\n \"dataspace_run_id\": \"run_abc123\",\n \"golden_sample_id\": \"gs_xyz789\",\n \"name\": \"Q1 Invoice accuracy check\"\n}`}\n </CodeBlock>\n <CodeBlock title=\"Response (201)\">\n{`{\n \"id\": \"uuid\",\n \"golden_sample_id\": \"uuid\",\n \"schema_id\": \"uuid\",\n \"status\": \"pending\",\n \"created_at\": \"2024-09-14T10:32:00Z\",\n \"links\": { \"self\": \"/v1/validation/runs/uuid\", \"results\": \"/v1/validation/runs/uuid/results\" }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"get-validation-run\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs/{id}\"\n summary=\"Get / delete a validation run.\"\n description=\"Same path supports GET (detail with accuracy summary, requires read scope) and DELETE (requires write scope).\"\n />\n </div>\n\n <div id=\"get-validation-results\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/validation/runs/{id}/results\"\n summary=\"Get per-field validation results.\"\n description=\"Requires read scope. Returns per-document and per-field accuracy results for the validation run.\"\n >\n <ParamTable params={[\n { name: 'judged_only', type: 'string', required: false, description: 'Set to \"true\" to return only judged results.' },\n ]} />\n <CodeBlock title=\"Response\">\n{`{\n \"accuracy_overall\": 0.94,\n \"accuracy_by_field\": { \"vendor_name\": 0.98, \"total\": 0.91 },\n \"results\": [\n {\n \"document_id\": \"doc_abc123\",\n \"field_name\": \"invoice_number\",\n \"expected_value\": \"INV-2024-0042\",\n \"actual_value\": \"INV-2024-0042\",\n \"match_type\": \"exact\",\n \"similarity_score\": 1.0,\n \"judge_verdict\": \"correct\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n CREDITS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"credits\">Credits</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n Credit endpoints expose the current balance, transaction history, aggregate\n usage summaries, daily usage, and a per-request usage log with model and token\n counts. Track credit balance and usage breakdowns by operation type and time\n period.\n </p>\n\n <div id=\"credits-balance\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/balance\"\n summary=\"Get current credit balance.\"\n description=\"Requires read scope. Returns the current credit balance for the authenticated customer.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"balance\": 4250.00,\n \"currency\": \"USD\",\n \"as_of\": \"2026-04-27T12:00:00Z\"\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-history\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/history\"\n summary=\"Get credit transaction history.\"\n description=\"Requires read scope. Returns credit transaction history (purchases, deductions, adjustments).\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', required: false, description: 'Max items to return (default 20).' },\n { name: 'cursor', type: 'string', required: false, description: 'Pagination cursor.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"type\": \"deduction\",\n \"amount\": -0.18,\n \"description\": \"Extraction: doc_3j7x9p2q\",\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage\"\n summary=\"Get aggregate credit usage summary by feature.\"\n description=\"Requires read scope. Returns aggregate credit usage broken down by feature.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', description: 'Start of the period (ISO 8601, default 30 days ago).' },\n { name: 'to', type: 'string', description: 'End of the period (ISO 8601, default now).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"total_used\": 18.42,\n \"breakdown\": [\n { \"feature\": \"extraction\", \"credits_used\": 12.30, \"call_count\": 1842 },\n { \"feature\": \"matching\", \"credits_used\": 6.12, \"call_count\": 920 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage-daily\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage/daily\"\n summary=\"Get daily credit usage breakdown.\"\n description=\"Requires read scope. Returns per-day credit usage for the specified period (default last 30 days).\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'from', type: 'string', description: 'Start of the period (ISO 8601).' },\n { name: 'to', type: 'string', description: 'End of the period (ISO 8601).' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n { \"date\": \"2024-09-14\", \"credits_used\": 0.62, \"call_count\": 87 }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"credits-usage-log\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/credits/usage/log\"\n summary=\"Get per-request usage log with token counts and cost estimates.\"\n description=\"Requires read scope. Returns a detailed per-request usage log with model, tokens, and cost.\"\n >\n <ParamTable\n title=\"Query parameters\"\n params={[\n { name: 'limit', type: 'integer', required: false, description: 'Max items to return (default 50).' },\n { name: 'cursor', type: 'string', required: false, description: 'Pagination cursor.' },\n ]}\n />\n <CodeBlock title=\"Response\">\n{`{\n \"data\": [\n {\n \"id\": \"uuid\",\n \"operation_type\": \"extraction\",\n \"model\": \"claude-sonnet\",\n \"input_tokens\": 4280,\n \"output_tokens\": 612,\n \"cost_credits\": 0.012,\n \"created_at\": \"2024-09-14T10:32:00Z\"\n }\n ],\n \"pagination\": { \"next_cursor\": null }\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n BILLING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"billing\">Billing</SectionHeading>\n\n <SubHeading id=\"billing-settings\">Settings</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Manage auto top-up configuration. When enabled, your credit balance is automatically replenished when it falls below the threshold.\n </p>\n\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/billing/settings\"\n summary=\"Get billing settings.\"\n description=\"Returns the current auto top-up configuration for your organization.\"\n >\n <CodeBlock title=\"200 — Response\">\n{`{\n \"auto_topup_enabled\": true,\n \"auto_topup_threshold\": 1000,\n \"auto_topup_amount\": 5000\n}`}\n </CodeBlock>\n </EndpointBlock>\n\n <EndpointBlock\n method=\"PATCH\"\n path=\"/v1/billing/settings\"\n summary=\"Update billing settings.\"\n description=\"Update auto top-up configuration. All fields are optional.\"\n >\n <ParamTable\n title=\"Body parameters\"\n params={[\n { name: 'auto_topup_enabled', type: 'boolean', description: 'Enable or disable automatic top-up.' },\n { name: 'auto_topup_threshold', type: 'number', description: 'Credit balance threshold that triggers a top-up. Minimum: 1000.' },\n { name: 'auto_topup_amount', type: 'number', description: 'Number of credits to add on each top-up. Minimum: 1000.' },\n ]}\n />\n </EndpointBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n AGENT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"agent\">Agent</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-6\">\n The Agent API provides programmatic access to the same AI assistant capabilities\n available in the Talonic platform UI. Use the context endpoint to retrieve a\n comprehensive workspace snapshot, and the tools endpoint to discover all available\n agent capabilities.\n </p>\n\n <div id=\"agent-context\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/agent/context\"\n summary=\"Returns a comprehensive workspace overview including document stats, schemas, active runs, field registry summary, and recent activity.\"\n description=\"Requires read scope. Use this endpoint to build dashboards or provide context to external AI integrations.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"organizationName\": \"Phoenix\",\n \"documents\": {\n \"total\": 810,\n \"completedThisWeek\": 155,\n \"completedLast24h\": 42,\n \"processing\": 3\n },\n \"documentTypes\": [\n { \"id\": \"uuid\", \"name\": \"Invoice\", \"documentCount\": 320 }\n ],\n \"schemas\": [\n { \"id\": \"uuid\", \"name\": \"Invoice Header\", \"fieldCount\": 12, \"version\": 3 }\n ],\n \"activeRuns\": [\n { \"id\": \"uuid\", \"name\": \"Schema_V13\", \"status\": \"extraction\", \"documentCount\": 142 }\n ],\n \"fieldRegistry\": {\n \"totalFields\": 245,\n \"tier1\": 80,\n \"tier2\": 120,\n \"tier3\": 45\n },\n \"recentActivity\": [\n {\n \"type\": \"user_uploaded\",\n \"message\": \"42 documents uploaded\",\n \"timestamp\": \"2026-04-25T09:30:00Z\",\n \"actor\": \"Avi\"\n }\n ]\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n <div id=\"agent-tools\" className=\"scroll-mt-6\">\n <EndpointBlock\n method=\"GET\"\n path=\"/v1/agent/tools\"\n summary=\"Lists all tools available to the embedded agent, including their impact level and description.\"\n description=\"Requires read scope. Each tool declares whether it performs a read or write operation.\"\n >\n <CodeBlock title=\"Response\">\n{`{\n \"tools\": [\n {\n \"name\": \"list_schemas\",\n \"impact\": \"read\",\n \"description\": \"Lists all user-defined schemas.\"\n }\n ],\n \"totalCount\": 35\n}`}\n </CodeBlock>\n </EndpointBlock>\n </div>\n\n {/* ═══════════════════════════════════════════════════════════════\n DATA PRODUCTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"data-products\">Data Products</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Data products are the final assembled output of the structuring pipeline. They combine\n extraction results with resolution rules, validation, and approval gates into a\n deliverable dataset. Use these endpoints to list, inspect, and export your structured data.\n </p>\n\n <SubHeading id=\"list-data-products\">List Data Products</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-products\" summary=\"List data products with cursor-based pagination.\">\n <ParamTable title=\"Query parameters\" params={[\n { name: 'status', type: 'string', description: 'Filter by status (draft, ready, published, archived).' },\n { name: 'limit', type: 'integer', default: '20', description: 'Items per page (1-100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order (asc | desc).' },\n ]} />\n <CodeBlock title=\"curl\">\n{`curl https://api.talonic.com/v1/data-products?status=ready \\\\\n -H \"Authorization: Bearer tlnc_YOUR_KEY\"`}\n </CodeBlock>\n </EndpointBlock>\n\n <SubHeading id=\"get-data-product\">Get Data Product</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-products/{id}\" summary=\"Get a single data product by ID.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Data product UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"delete-data-product\">Delete Data Product</SubHeading>\n <EndpointBlock method=\"DELETE\" path=\"/v1/data-products/{id}\" summary=\"Delete a data product. Requires write scope.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Data product UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"get-data-product-results\">Get Data Product Results</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-products/{id}/results\" summary=\"Get paginated result rows for a data product.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Data product UUID.' },\n ]} />\n <ParamTable title=\"Query parameters\" params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Items per page (1-100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n ]} />\n <CodeBlock title=\"curl\">\n{`curl https://api.talonic.com/v1/data-products/DP_ID/results \\\\\n -H \"Authorization: Bearer tlnc_YOUR_KEY\"`}\n </CodeBlock>\n </EndpointBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n DATA POLICIES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"data-policies\">Data Policies</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Data policies define transformation rules that normalize and enrich extracted field values.\n They power the resolution pipeline with lookup cascades, deterministic compute, format\n constraints, and optional Lua scripting. Policies are versioned — publish a version to\n lock it for production use.\n </p>\n\n <SubHeading id=\"list-data-policies\">List Policies</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-policies\" summary=\"List all data policies with cursor-based pagination.\">\n <ParamTable title=\"Query parameters\" params={[\n { name: 'limit', type: 'integer', default: '20', description: 'Items per page (1-100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order (asc | desc).' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"create-data-policy\">Create Policy</SubHeading>\n <EndpointBlock method=\"POST\" path=\"/v1/data-policies\" summary=\"Create a new data policy. Requires write scope.\">\n <ParamTable title=\"Body parameters\" params={[\n { name: 'name', type: 'string', required: true, description: 'Policy name.' },\n { name: 'description', type: 'string', description: 'Optional description.' },\n ]} />\n <CodeBlock title=\"curl\">\n{`curl -X POST https://api.talonic.com/v1/data-policies \\\\\n -H \"Authorization: Bearer tlnc_YOUR_KEY\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"name\": \"Invoice Normalization\"}'`}\n </CodeBlock>\n </EndpointBlock>\n\n <SubHeading id=\"get-data-policy\">Get Policy</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-policies/{id}\" summary=\"Get a policy with its fields and rules inlined.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Policy UUID.' },\n ]} />\n <Callout type=\"info\">\n The response includes <InlineCode>fields</InlineCode> and <InlineCode>rules</InlineCode> arrays\n inlined in the policy object for convenience.\n </Callout>\n </EndpointBlock>\n\n <SubHeading id=\"update-data-policy\">Update Policy</SubHeading>\n <EndpointBlock method=\"PATCH\" path=\"/v1/data-policies/{id}\" summary=\"Update policy name or description. Requires write scope.\">\n <ParamTable title=\"Body parameters\" params={[\n { name: 'name', type: 'string', description: 'New policy name.' },\n { name: 'description', type: 'string', description: 'New description.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"delete-data-policy\">Delete Policy</SubHeading>\n <EndpointBlock method=\"DELETE\" path=\"/v1/data-policies/{id}\" summary=\"Delete a data policy. Requires write scope.\" />\n\n <SubHeading id=\"list-data-policy-versions\">List Versions</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-policies/{id}/versions\" summary=\"List all published versions of a policy.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Policy UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"list-data-policy-fields\">List Fields</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-policies/{id}/fields\" summary=\"List declared output fields for a policy.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Policy UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"list-data-policy-rules\">List Rules</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/data-policies/{id}/rules\" summary=\"List transformation rules ordered by execution priority.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Policy UUID.' },\n ]} />\n </EndpointBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n RECORD SETS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"record-sets\">Record Sets</SectionHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n Record sets are the value-plane storage layer — typed tables that hold cell values with\n confidence scores and provenance metadata. Each extraction, structuring run, or resolution\n produces a record set at the appropriate layer (capture, structured, resolved, or product).\n </p>\n\n <SubHeading id=\"list-record-sets\">List Record Sets</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/record-sets\" summary=\"List record sets with optional layer and source_type filters.\">\n <ParamTable title=\"Query parameters\" params={[\n { name: 'layer', type: 'string', description: 'Filter by value layer (capture, structured, resolved, product).' },\n { name: 'source_type', type: 'string', description: 'Filter by source type (e.g. extraction, job, resolution).' },\n { name: 'limit', type: 'integer', default: '20', description: 'Items per page (1-100).' },\n { name: 'cursor', type: 'string', description: 'Opaque pagination cursor.' },\n { name: 'order', type: 'string', default: 'desc', description: 'Sort order (asc | desc).' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"get-record-set\">Get Record Set</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/record-sets/{id}\" summary=\"Get a single record set with field and record counts.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Record set UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"list-record-set-fields\">List Fields</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/record-sets/{id}/fields\" summary=\"List the field schema for a record set, ordered by ordinal.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Record set UUID.' },\n ]} />\n </EndpointBlock>\n\n <SubHeading id=\"list-record-set-records\">List Records</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/record-sets/{id}/records\" summary=\"Get paginated records using offset pagination.\">\n <ParamTable title=\"Query parameters\" params={[\n { name: 'page', type: 'integer', default: '1', description: 'Page number (1-based).' },\n { name: 'limit', type: 'integer', default: '50', description: 'Records per page (max 200).' },\n ]} />\n <CodeBlock title=\"curl\">\n{`curl \"https://api.talonic.com/v1/record-sets/RS_ID/records?page=1&limit=50\" \\\\\n -H \"Authorization: Bearer tlnc_YOUR_KEY\"`}\n </CodeBlock>\n </EndpointBlock>\n\n <SubHeading id=\"export-record-set\">Export</SubHeading>\n <EndpointBlock method=\"GET\" path=\"/v1/record-sets/{id}/export\" summary=\"Export all records as a JSON array. Best for smaller datasets.\">\n <ParamTable title=\"Path parameters\" params={[\n { name: 'id', type: 'uuid', required: true, description: 'Record set UUID.' },\n ]} />\n <Callout type=\"warning\">\n For large record sets (10,000+ records), prefer the paginated <InlineCode>/records</InlineCode> endpoint\n to avoid timeouts and high memory usage.\n </Callout>\n </EndpointBlock>\n\n {/* ═══════════════════════════════════════════════════════════════\n ERRORS & RATE LIMITS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"errors-rate-limits\">Errors & Rate Limits</SectionHeading>\n\n <SubHeading id=\"error-format\">Error Format</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n All errors return a consistent JSON structure with a machine-readable code and a\n human-readable message.\n </p>\n\n <CodeBlock title=\"Error response shape\">\n{`{\n \"error\": {\n \"code\": \"invalid_schema\",\n \"message\": \"Schema definition is missing required 'type' field at path 'line_items.items'.\",\n \"status\": 400,\n \"retryable\": false,\n \"request_id\": \"req_x7y8z9a0\"\n }\n}`}\n </CodeBlock>\n\n <SubHeading id=\"error-codes\">Error Codes</SubHeading>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider w-[80px]\">Status</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Code</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n {[\n { status: '400', code: 'bad_request', desc: 'The request body is malformed or missing required fields.' },\n { status: '400', code: 'invalid_schema', desc: 'The schema definition is invalid or contains unsupported types.' },\n { status: '400', code: 'invalid_file', desc: 'The uploaded file is corrupt, empty, or in an unsupported format.' },\n { status: '401', code: 'unauthorized', desc: 'Missing or invalid API key.' },\n { status: '403', code: 'forbidden', desc: 'The API key does not have permission for this operation.' },\n { status: '404', code: 'not_found', desc: 'The requested resource does not exist.' },\n { status: '409', code: 'conflict', desc: 'The resource has been modified. Retry with the latest version.' },\n { status: '413', code: 'file_too_large', desc: 'The uploaded file exceeds the 50 MB per-request limit (up to 5 GB via source connectors).' },\n { status: '422', code: 'unprocessable', desc: 'The document could not be parsed. Try a different file format.' },\n { status: '429', code: 'rate_limited', desc: 'Rate limit exceeded. Check response headers for reset time.' },\n { status: '500', code: 'internal_error', desc: 'An unexpected error occurred. This is retryable.' },\n { status: '503', code: 'service_unavailable', desc: 'The service is temporarily unavailable. Retry with backoff.' },\n ].map((row, i) => (\n <tr key={i} className={i > 0 ? 'border-t border-void-border' : ''}>\n <td className=\"px-4 py-3 font-mono text-[13px] text-void-text-muted\">{row.status}</td>\n <td className=\"px-4 py-3 font-mono text-[13px]\">{row.code}</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">{row.desc}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n <SubHeading id=\"rate-limits\">Rate Limits</SubHeading>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-4\">\n API rate limits depend on your plan tier. Limits are applied per API key on a\n rolling daily window (UTC midnight reset).\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Plan</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Extractions / day</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Burst rate</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Max file size</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 text-[13px] font-medium\">Free</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">50</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">5 / min</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">10 MB</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px] font-medium\">Pro</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">2,000</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">30 / min</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">50 MB</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 text-[13px] font-medium\">Enterprise</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Unlimited</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Custom</td>\n <td className=\"px-4 py-3 text-[13px] text-void-text-secondary\">Custom</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <p className=\"text-[15px] text-void-text-secondary leading-relaxed mb-3\">\n Every API response includes rate limit headers:\n </p>\n\n <div className=\"border border-void-border rounded-lg overflow-hidden my-4\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-void-surface-2/50\">\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Header</th>\n <th className=\"text-left px-4 py-2.5 font-medium text-void-text-secondary text-[12px] uppercase tracking-wider\">Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Limit</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Maximum number of requests allowed in the current window.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Remaining</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Number of requests remaining in the current window.</td>\n </tr>\n <tr className=\"border-t border-void-border\">\n <td className=\"px-4 py-3 font-mono text-[13px]\">X-RateLimit-Reset</td>\n <td className=\"px-4 py-3 text-void-text-secondary text-[13px]\">Unix timestamp when the rate limit window resets.</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <CodeBlock language=\"bash\" title=\"Rate limit headers example\">\n{`HTTP/1.1 200 OK\nX-RateLimit-Limit: 2000\nX-RateLimit-Remaining: 1847\nX-RateLimit-Reset: 1726358400`}\n </CodeBlock>\n\n <Callout>\n When you receive a <InlineCode>429</InlineCode> response, wait until\n the <InlineCode>X-RateLimit-Reset</InlineCode> timestamp before retrying.\n Implement exponential backoff for the best experience.\n </Callout>\n\n {/* Footer spacer */}\n <div className=\"h-24\" />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport DownloadMarkdown from '../components/DownloadMarkdown';\nimport { Sidebar } from '../components/Sidebar';\nimport type { LinkComponent } from '../components/Sidebar';\nimport {\n SectionHeading,\n SubHeading,\n InlineCode,\n Callout,\n P,\n ParamTable,\n UiExcerpt,\n TierBadge,\n CellDot,\n MockNavItem,\n PipelineStage,\n PipelineConnector,\n} from '../components/DocPrimitives';\nimport type { NavSection } from '../components/DocPrimitives';\n\n/* ═══════════════════════════════════════════════════════════════════════════\n TALONIC PLATFORM DOCUMENTATION\n A single-file, self-contained platform guide in the same style as the\n API reference page. Includes visual UI excerpts rendered as HTML.\n ═══════════════════════════════════════════════════════════════════════════ */\n\n// ---------------------------------------------------------------------------\n// Navigation structure\n// ---------------------------------------------------------------------------\n\nconst NAV_SECTIONS: NavSection[] = [\n {\n id: 'overview',\n label: 'Overview',\n children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'core-concepts', label: 'Core Concepts' },\n { id: 'platform-flow', label: 'Platform Flow' },\n { id: 'getting-started', label: 'Getting Started' },\n ],\n },\n {\n id: 'agent',\n label: 'AI Agent',\n children: [\n { id: 'agent-capabilities', label: 'Capabilities' },\n { id: 'agent-impact', label: 'Impact Levels' },\n { id: 'agent-dashboard', label: 'Dashboard' },\n ],\n },\n {\n id: 'sources-docs',\n label: 'Inputs & Documents',\n children: [\n { id: 'uploading', label: 'Uploading Documents' },\n { id: 'supported-formats', label: 'Supported Formats' },\n { id: 'document-processing', label: 'Document Processing' },\n { id: 'document-types', label: 'Document Types' },\n { id: 'document-detail', label: 'Document Detail' },\n { id: 'routing-rules', label: 'Routing Rules' },\n ],\n },\n {\n id: 'field-intelligence',\n label: 'Field Intelligence',\n children: [\n { id: 'field-registry', label: 'Field Registry' },\n { id: 'tier-system', label: 'Tier System' },\n { id: 'semantic-clusters', label: 'Semantic Clusters' },\n { id: 'field-resolution', label: 'Field Resolution' },\n { id: 'master-instructions', label: 'Master Instructions' },\n ],\n },\n {\n id: 'schemas-templates',\n label: 'Schemas & Templates',\n children: [\n { id: 'generated-schemas', label: 'Generated Schemas' },\n { id: 'user-templates', label: 'User Templates' },\n { id: 'schema-features', label: 'Schema Features Reference' },\n { id: 'field-matching', label: 'Field Matching' },\n { id: 'reference-tables', label: 'Reference Tables' },\n { id: 'versioning-drafts', label: 'Versioning & Drafts' },\n { id: 'test-extraction', label: 'Test Extraction' },\n { id: 'dialects', label: 'Dialects' },\n { id: 'bypass-strategies', label: 'Bypass Strategies' },\n { id: 'format-constraints', label: 'Format Constraints' },\n ],\n },\n {\n id: 'extraction-jobs',\n label: 'Extraction Jobs',\n children: [\n { id: 'creating-job', label: 'Creating a Job' },\n { id: 'pipeline-overview', label: '4-Phase Pipeline' },\n { id: 'phase-1', label: 'Phase 1: Resolve' },\n { id: 'phase-2', label: 'Phase 2: Agent' },\n { id: 'phase-3', label: 'Phase 3: Validation' },\n { id: 'phase-4', label: 'Phase 4: Re-read' },\n { id: 'reviewing-results', label: 'Reviewing Results' },\n { id: 'confidence-provenance', label: 'Confidence & Provenance' },\n { id: 'corrections', label: 'Corrections' },\n ],\n },\n {\n id: 'batch-inference',\n label: 'Batch Inference',\n children: [\n { id: 'batch-overview', label: 'Overview' },\n { id: 'batch-processing', label: 'Batch Processing Mode' },\n { id: 'batch-monitoring', label: 'Monitoring Batches' },\n ],\n },\n {\n id: 'matching',\n label: 'Smart Matching',\n children: [\n { id: 'reference-data', label: 'Reference Data' },\n { id: 'matching-configs', label: 'Matching Configurations' },\n { id: 'matching-runs', label: 'Running Matches' },\n { id: 'matching-results', label: 'Match Results' },\n ],\n },\n {\n id: 'linking-cases',\n label: 'Linking & Cases',\n children: [\n { id: 'link-keys', label: 'Link Keys' },\n { id: 'entity-linking', label: 'Entity Linking' },\n { id: 'cases', label: 'Cases' },\n { id: 'document-graph', label: 'Document Graph' },\n ],\n },\n {\n id: 'data-products',\n label: 'Data Products',\n children: [\n { id: 'dataset-templates', label: 'Dataset Templates' },\n { id: 'assemblies', label: 'Assemblies' },\n ],\n },\n {\n id: 'validation-quality',\n label: 'Validation & Quality',\n children: [\n { id: 'validation-checks', label: 'Validation Checks' },\n { id: 'ground-truth', label: 'Golden Samples' },\n { id: 'approval-gates', label: 'Approval Gates' },\n { id: 'approval-queue', label: 'Approval Queue' },\n ],\n },\n {\n id: 'delivery',\n label: 'Delivery',\n children: [\n { id: 'delivery-pipeline', label: 'How Delivery Works' },\n { id: 'destinations', label: 'Destinations' },\n { id: 'bindings', label: 'Bindings' },\n { id: 'signals-catalog', label: 'Signals & Catalog' },\n { id: 'delivery-history', label: 'History & DLQ' },\n ],\n },\n {\n id: 'search-filtering',\n label: 'Search & Filtering',\n children: [\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'document-filters', label: 'Document Filters' },\n ],\n },\n {\n id: 'api-webhooks',\n label: 'API & Webhooks',\n children: [\n { id: 'api-keys', label: 'API Keys' },\n { id: 'public-api', label: 'Public API' },\n { id: 'webhooks', label: 'Webhooks' },\n ],\n },\n {\n id: 'team-admin',\n label: 'Team & Admin',\n children: [\n { id: 'team-management', label: 'Team Management' },\n { id: 'usage-registry', label: 'Usage & Registry' },\n { id: 'admin-panel', label: 'Admin Panel' },\n { id: 'shortcuts', label: 'Keyboard Shortcuts' },\n ],\n },\n];\n\n// ---------------------------------------------------------------------------\n// Main Component\n// ---------------------------------------------------------------------------\n\n/** Comprehensive platform guide covering every feature of the Talonic platform. */\nexport function PlatformGuide({ LinkComponent }: { LinkComponent?: LinkComponent }) {\n const LinkComp = LinkComponent || ((props: any) => <a {...props} />);\n\n const [activeId, setActiveId] = useState('introduction');\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const mainRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const allIds = NAV_SECTIONS.flatMap((s) => s.children ? s.children.map((c) => c.id) : [s.id]);\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n if (visible.length > 0) setActiveId(visible[0].target.id);\n },\n { rootMargin: '-80px 0px -60% 0px', threshold: 0 },\n );\n allIds.forEach((id) => { const el = document.getElementById(id); if (el) observer.observe(el); });\n return () => observer.disconnect();\n }, []);\n\n const handleNavigate = useCallback((id: string) => {\n const el = document.getElementById(id);\n if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, []);\n\n return (\n <div className=\"flex min-h-full\">\n <Sidebar\n title=\"Platform Guide\"\n sections={NAV_SECTIONS}\n activeId={activeId}\n onNavigate={handleNavigate}\n mobileOpen={mobileNavOpen}\n onMobileClose={() => setMobileNavOpen(false)}\n footerLinks={[{ label: 'API Documentation', href: '/docs' }]}\n LinkComponent={LinkComp}\n />\n\n {/* Mobile toggle */}\n <button onClick={() => setMobileNavOpen(true)} className=\"fixed bottom-5 right-5 z-30 lg:hidden p-3 rounded-full bg-void-accent text-white shadow-lg hover:shadow-xl transition-shadow\" aria-label=\"Open navigation\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" /><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" /></svg>\n </button>\n\n {/* Main content */}\n <div ref={mainRef} className=\"flex-1 min-w-0 px-6 sm:px-10 lg:px-16 py-6 max-w-[860px]\">\n\n {/* ═══════════════════════════════════════════════════════════════\n INTRODUCTION\n ═══════════════════════════════════════════════════════════════ */}\n <div id=\"introduction\" className=\"scroll-mt-6\">\n <div className=\"flex items-start justify-between gap-4\">\n <h1 className=\"text-[32px] font-bold text-void-text-primary leading-tight mb-3\" style={{ fontFamily: 'Space Grotesk, sans-serif' }}>\n Platform Guide\n </h1>\n <DownloadMarkdown contentRef={mainRef} filename=\"talonic-platform-guide.md\" />\n </div>\n <p className=\"text-[17px] text-void-text-secondary leading-relaxed max-w-[600px]\">\n Transform unstructured documents into structured, validated data — with per-cell provenance and AI reasoning traces.\n </p>\n\n <div className=\"mt-8 flex flex-col sm:flex-row gap-4\">\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Supported Formats</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">25+ file types</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Resolution</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">4-phase pipeline</span>\n </div>\n <div className=\"flex-1 border border-void-border rounded-lg px-5 py-4\">\n <div className=\"text-[11px] font-semibold text-void-text-muted uppercase tracking-widest mb-1.5\">Instant Matches</div>\n <span className=\"text-[15px] text-void-text-primary font-medium\">~30% of cells (free)</span>\n </div>\n </div>\n </div>\n\n {/* ─── CORE CONCEPTS ───────────────────────────────────────────── */}\n <SubHeading id=\"core-concepts\">Core Concepts</SubHeading>\n\n <P>\n The platform revolves around a small set of interconnected concepts. Understanding these\n will help you navigate every feature.\n </P>\n\n <ParamTable\n params={[\n { name: 'Source', type: 'entry point', description: 'Where documents come from — manual upload, folder, Google Drive, or API connection.' },\n { name: 'Document', type: 'unit of data', description: 'A single uploaded file. Talonic extracts text, classifies the type, and captures every data point.' },\n { name: 'Field', type: 'data point', description: 'A single piece of structured data discovered in a document: a date, a name, an amount, a clause.' },\n { name: 'Field Registry', type: 'knowledge graph', description: 'The unified graph of all canonical fields — organized by tier, clustered semantically, with master extraction instructions.' },\n { name: 'Schema', type: 'output definition', description: 'AI-generated per document type (Generated), or user-defined for specific output needs (Template).' },\n { name: 'Job', type: 'execution', description: 'A schema applied to a set of documents. Produces a structured grid: rows = documents, columns = fields.' },\n { name: 'Case', type: 'document group', description: 'Related documents connected through shared entities (names, reference numbers, project codes).' },\n { name: 'Provenance', type: 'audit trail', description: 'Per-cell metadata: which phase filled it, confidence score, reasoning trace, source references.' },\n ]}\n />\n\n {/* ─── PLATFORM FLOW ───────────────────────────────────────────── */}\n <SubHeading id=\"platform-flow\">Platform Flow</SubHeading>\n\n <P>Documents flow through the platform in a clear pipeline. Each stage produces outputs that feed the next.</P>\n\n <UiExcerpt title=\"Dashboard — Pipeline Progress\" caption=\"The Dashboard shows your pipeline progress across five stages. Completed stages show a purple checkmark.\">\n <div className=\"flex items-center justify-center gap-0 py-3\">\n <PipelineStage label=\"Documents\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Fields\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Schema\" state=\"done\" />\n <PipelineConnector />\n <PipelineStage label=\"Results\" state=\"active\" />\n <PipelineConnector />\n <PipelineStage label=\"Quality\" state=\"pending\" />\n </div>\n </UiExcerpt>\n\n <div className=\"my-6 space-y-2\">\n {[\n { n: '1', label: 'Upload', desc: 'Drag files or folders into Sources. 25+ formats supported. ZIP archives are unpacked automatically.' },\n { n: '2', label: 'Extract', desc: 'Each document is processed through Document AI (OCR + annotation), classified against the document type ontology, and sent to AI for exhaustive field extraction.' },\n { n: '3', label: 'Graph builds', desc: 'Extracted fields resolve into the Field Registry — canonical names, clusters, master instructions.' },\n { n: '4', label: 'Define schema', desc: 'Create a template with the fields you need. Map to registry, add reference tables.' },\n { n: '5', label: 'Run job', desc: '4-phase pipeline fills every cell. ~30% from graph matches (instant), ~70% from AI agents.' },\n { n: '6', label: 'Review & approve', desc: 'Review with confidence indicators, provenance, and validation flags. Correct any values.' },\n { n: '7', label: 'Deliver', desc: 'Push approved data to webhooks, REST APIs, SFTP, email, or cloud storage.' },\n ].map(({ n, label, desc }) => (\n <div key={n} className=\"flex gap-4\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">{n}</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary\">{label}</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">{desc}</p>\n </div>\n </div>\n ))}\n </div>\n\n {/* ─── GETTING STARTED ─────────────────────────────────────────── */}\n <SubHeading id=\"getting-started\">Getting Started</SubHeading>\n\n <P>\n Navigate using the sidebar. The platform is organized into three primary sections:\n <strong> Sources</strong> (ingest), <strong>Structuring</strong> (process & validate),\n and <strong>Outputs</strong> (deliver).\n </P>\n\n <UiExcerpt title=\"Sidebar Navigation\" caption=\"The sidebar provides access to all sections. Click the collapse button to save space. Press Cmd+K for global search.\">\n <div className=\"w-48 border border-void-border rounded-lg bg-void-bg p-3 space-y-0.5\">\n <MockNavItem label=\"Dashboard\" />\n <MockNavItem label=\"Sources\" active />\n <MockNavItem label=\"Documents\" indent />\n <MockNavItem label=\"Field Registry\" indent />\n <MockNavItem label=\"Structuring\" />\n <MockNavItem label=\"Schemas\" indent />\n <MockNavItem label=\"Cases\" indent />\n <MockNavItem label=\"Runs\" indent />\n <MockNavItem label=\"Validation\" indent />\n <MockNavItem label=\"Outputs\" />\n </div>\n </UiExcerpt>\n\n <Callout>\n The fastest path to results: upload documents in <strong>Sources</strong>, then go to{' '}\n <strong>Structuring → Runs → New</strong> to create your first extraction job.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n AI AGENT\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"agent\">AI Agent</SectionHeading>\n\n <P>\n Talonic includes an embedded AI agent accessible from every page via{' '}\n <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">⌘I</kbd>{' '}\n (<kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">Ctrl+I</kbd> on Windows).\n The agent understands your workspace context and can inspect schemas, search documents,\n analyze extraction quality, explore cases, and build schemas — all through natural language.\n </P>\n\n <SubHeading id=\"agent-capabilities\">What the Agent Can Do</SubHeading>\n\n <P>The agent has deep access to your workspace and can help with:</P>\n\n <ParamTable\n title=\"Agent capabilities\"\n params={[\n { name: 'Workspace overview', type: 'read', description: 'Document stats, recent activity, and schema health at a glance.' },\n { name: 'Schema management', type: 'read / draft', description: 'List, inspect, create drafts, add fields, and publish schemas.' },\n { name: 'Document exploration', type: 'read', description: 'Search documents, view extracted fields, and read OCR markdown.' },\n { name: 'Extraction analysis', type: 'read', description: 'Run status, telemetry (capture/resolve/synthesize rates), and grid stats.' },\n { name: 'Field registry', type: 'read', description: 'Browse discovered fields, check promotion candidates, and view semantic clusters.' },\n { name: 'Cases & linking', type: 'read', description: 'List cases, explore document connections, and view anomalies.' },\n { name: 'Quality', type: 'read', description: 'Benchmark results and regression detection between runs.' },\n { name: 'Delivery', type: 'read', description: 'Check delivery status and preview binding output.' },\n ]}\n />\n\n <SubHeading id=\"agent-impact\">Impact Levels</SubHeading>\n\n <P>\n Every agent action is classified into an impact level that determines how it executes.\n Higher-impact operations require progressively more explicit confirmation.\n </P>\n\n <ParamTable\n title=\"Impact levels\"\n params={[\n { name: 'read', type: 'impact', description: 'Executed immediately with no side effects. Queries, searches, and inspections.' },\n { name: 'draft_mutation', type: 'impact', description: 'Creates or modifies drafts. Workshop-first — nothing is published without confirmation.' },\n { name: 'live_mutation', type: 'impact', description: 'Requires explicit user confirmation before executing. Affects live data.' },\n { name: 'irreversible', type: 'impact', description: 'Requires keyword confirmation (e.g., typing \"DELETE\"). Cannot be undone.' },\n ]}\n />\n\n <Callout>\n The agent always operates workshop-first: schema changes create drafts, not live versions.\n You review and publish when ready.\n </Callout>\n\n <SubHeading id=\"agent-dashboard\">Dashboard Integration</SubHeading>\n\n <P>\n The home page (click the Talonic logo) shows smart suggested prompts based on your\n workspace state. Prompts adapt to what is happening: active runs, schema creation\n opportunities, document types waiting for extraction. The agent input field lets you\n type any question directly from the dashboard.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SOURCES & DOCUMENTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"sources-docs\">Inputs & Documents</SectionHeading>\n\n <P>\n Sources are the entry point for all data. Every document belongs to a source — whether\n uploaded manually, synced from Google Drive, or ingested via API.\n </P>\n\n <SubHeading id=\"uploading\">Uploading Documents</SubHeading>\n\n <P>\n The Sources page provides a drag-and-drop upload interface. You can upload individual\n files, multiple files, or entire folders. ZIP archives are unpacked recursively.\n When uploading folders, the original file path is preserved as a data field\n (<code>source_file_path</code>) on each document — available for downstream processing and export.\n </P>\n\n <UiExcerpt title=\"Sources — Upload Card\" caption=\"Drag files or folders onto the upload area. The progress indicator shows processing status in real-time.\">\n <div className=\"max-w-sm\">\n <div className=\"border border-void-border rounded-lg p-4\">\n <div className=\"flex items-center gap-3 mb-3\">\n <div className=\"w-10 h-10 rounded-lg bg-void-accent/10 flex items-center justify-center\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#673AB7\" strokeWidth=\"1.5\" strokeLinecap=\"round\"><path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" /><polyline points=\"17 8 12 3 7 8\" /><line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" /></svg>\n </div>\n <div>\n <div className=\"text-sm font-semibold text-void-text-primary\">Manual Uploads</div>\n <div className=\"text-xs text-void-text-muted\">47 documents · Connected today</div>\n </div>\n <div className=\"ml-auto\">\n <span className=\"inline-flex items-center gap-1 px-2 py-0.5 text-[10px] font-medium rounded-full bg-void-accent/10 text-void-accent border border-void-accent/20\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-void-accent\" />\n Active\n </span>\n </div>\n </div>\n <div className=\"border-2 border-dashed border-void-border rounded-lg p-4 text-center text-xs text-void-text-muted hover:border-void-accent/40 transition-colors cursor-pointer\">\n <div className=\"text-void-text-secondary font-medium mb-0.5\">Drop files or folders here</div>\n or click to browse\n </div>\n <div className=\"flex gap-2 mt-2.5\">\n <button className=\"inline-flex items-center gap-1 px-2.5 py-1.5 text-[11px] font-medium border border-void-border rounded-lg text-void-text-secondary hover:bg-void-surface-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z\" /></svg>\n Upload Folder\n </button>\n <button className=\"inline-flex items-center gap-1 px-2.5 py-1.5 text-[11px] font-medium border border-void-border rounded-lg text-void-text-secondary hover:bg-void-surface-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\"><path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" /><polyline points=\"7 10 12 15 17 10\" /><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" /></svg>\n Upload Archive\n </button>\n </div>\n </div>\n </div>\n </UiExcerpt>\n\n <P>\n Files are deduplicated via SHA-256 hashing — uploading the same file twice won't create\n duplicates. Processing runs asynchronously so you can continue working.\n </P>\n\n <SubHeading id=\"supported-formats\">Supported Formats</SubHeading>\n\n <ParamTable\n title=\"File processing paths\"\n params={[\n { name: 'Text fast-path', type: 'direct read', description: 'TXT, MD, HTML, XML, JSON, EML, CSV — read directly, no external API.' },\n { name: 'AI Vision', type: 'multimodal', description: 'PNG, JPG, JPEG, GIF, WEBP — sent to AI for visual extraction.' },\n { name: 'OCR', type: 'Talonic API', description: 'PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, XLSM, MSG, BMP — converted to Markdown.' },\n { name: 'Archives', type: 'recursive', description: 'ZIP — unpacked and each file processed individually.' },\n ]}\n />\n\n <SubHeading id=\"document-processing\">Document Processing</SubHeading>\n\n <P>When a document is uploaded, it flows through a multi-stage pipeline:</P>\n\n <UiExcerpt title=\"Document — Processing Log\" caption=\"Every document shows a structured processing log with per-stage timing.\">\n <div className=\"space-y-2 text-[13px]\">\n {[\n { step: 'Document AI OCR', status: 'completed', duration: '8.2s', detail: '3 pages, 7,734 chars' },\n { step: 'Document Classification', status: 'completed', duration: '1.8s', detail: 'document_ai: Employment Contract' },\n { step: 'AI Data Field Capture', status: 'completed', duration: '67.1s', detail: '52 fields' },\n ].map(({ step, status, duration, detail }) => (\n <div key={step} className=\"flex items-center gap-3 px-3 py-2 rounded bg-void-surface-2/50\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#673AB7\" strokeWidth=\"2.5\" strokeLinecap=\"round\"><polyline points=\"20 6 9 17 4 12\" /></svg>\n <span className=\"font-medium text-void-text-primary\">{step}</span>\n <span className=\"text-void-text-muted ml-auto\">{duration}</span>\n <span className=\"text-void-text-muted\">·</span>\n <span className=\"text-void-text-muted\">{detail}</span>\n </div>\n ))}\n </div>\n </UiExcerpt>\n\n <P>\n <strong>Document AI OCR</strong> converts files to Markdown and produces structured annotations\n (type, sensitivity, PII categories, jurisdiction) in a single pass. <strong>Classification</strong>{' '}\n verifies the annotation against the 529-type document ontology — if the label and content\n disagree, AI resolves the correct type from the actual text. <strong>AI Data Field Capture</strong>{' '}\n extracts every data point. Large documents are automatically chunked and processed in parallel.\n </P>\n\n <P>\n After AI extraction, the platform injects synthetic metadata fields into the result\n so that file-level context is available alongside extracted content:\n </P>\n\n <ParamTable\n params={[\n { name: 'filename', type: 'string', description: 'The original uploaded filename. Always present on every document.' },\n { name: 'source_file_path', type: 'string', description: 'The original file path from the uploaded archive or folder (e.g. contracts/2026/lease.pdf). Only present when the document was uploaded inside a ZIP archive or folder — reflects the internal directory structure.' },\n ]}\n />\n\n <P>\n Both fields appear in the <strong>Raw Extraction</strong> tab with full confidence (1.0)\n and are available for schema mapping, job resolution, filtering, and export — just like\n any AI-extracted field.\n </P>\n\n <Callout>\n Documents are marked <strong>complete</strong> after AI extraction finishes. You can start\n using them in jobs immediately — no need to wait for further processing.\n </Callout>\n\n <SubHeading id=\"document-types\">Document Types</SubHeading>\n\n <P>\n Every document is automatically classified into a canonical type from a 529-type ontology\n (e.g., \"Employment Contract\", \"Invoice\", \"Bill of Lading (Ocean)\"). Types are resolved\n automatically — you never create them manually. The classifier works across all languages:\n a German <em>Arbeitsvertrag</em> and an English <em>Employment Contract</em> map to the same type.\n </P>\n\n <P>\n Documents sharing the same ontology type are automatically merged into one document type.\n When a new canonical type appears, it is auto-created with ontology metadata. Unresolvable\n documents are assigned \"Unclassified Document\".\n </P>\n\n <SubHeading id=\"document-detail\">Document Detail</SubHeading>\n\n <P>Click any document to see its detail page with four views:</P>\n\n <ParamTable\n params={[\n { name: 'Raw Extraction', type: 'tab', description: 'Every field the AI extracted, with confidence scores and source text.' },\n { name: 'Resolved Data', type: 'tab', description: 'Fields mapped to the canonical registry with tier indicators.' },\n { name: 'Processing Log', type: 'tab', description: 'Timeline of each processing stage with timing information.' },\n { name: 'Original File', type: 'tab', description: 'View or download the source document.' },\n ]}\n />\n\n <SubHeading id=\"routing-rules\">Routing Rules</SubHeading>\n\n <P>\n Routing rules automatically assign actions to documents based on their type. Configure rules\n to auto-assign schemas, trigger jobs, or route documents to specific workflows. Manage rules\n from <strong>Documents → Routing</strong>.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n FIELD INTELLIGENCE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"field-intelligence\">Field Intelligence</SectionHeading>\n\n <P>\n The Field Registry is the heart of Talonic's intelligence. As documents are processed, AI\n discovers fields and resolves them into a unified knowledge graph that grows smarter with\n every document.\n </P>\n\n <SubHeading id=\"field-registry\">Field Registry</SubHeading>\n\n <P>\n Navigate to <strong>Sources → Field Registry</strong> to explore the registry. Every\n canonical field is displayed with its tier, data type, occurrence count, and document types.\n </P>\n\n <UiExcerpt title=\"Field Registry — Registry Table\" caption=\"Fields are organized by tier with occurrence counts, data types, and master instruction status.\">\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-[12px]\">\n <thead>\n <tr className=\"bg-void-surface-2/50 border-b border-void-border\">\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Field Name</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Tier</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Type</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Occurrences</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase tracking-wider\">Instruction</th>\n </tr>\n </thead>\n <tbody>\n {[\n { name: 'contract_start_date', tier: 1 as const, type: 'date', occ: 142, instr: true },\n { name: 'supplier_name', tier: 1 as const, type: 'string', occ: 138, instr: true },\n { name: 'total_contract_value', tier: 2 as const, type: 'number', occ: 87, instr: true },\n { name: 'payment_terms', tier: 2 as const, type: 'string', occ: 64, instr: false },\n { name: 'warranty_period', tier: 3 as const, type: 'string', occ: 3, instr: false },\n ].map((f, i) => (\n <tr key={f.name} className={`${i > 0 ? 'border-t border-void-border/40' : ''} hover:bg-void-accent/5`}>\n <td className=\"px-3 py-2 font-mono font-medium text-void-text-primary\">{f.name}</td>\n <td className=\"px-3 py-2\"><TierBadge tier={f.tier} /></td>\n <td className=\"px-3 py-2 text-void-text-muted\">{f.type}</td>\n <td className=\"px-3 py-2 font-mono text-void-text-secondary\">{f.occ}</td>\n <td className=\"px-3 py-2\">\n {f.instr ? (\n <span className=\"text-emerald-600 text-[10px] font-medium\">Synthesized</span>\n ) : (\n <span className=\"text-void-text-muted text-[10px]\">Pending</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </UiExcerpt>\n\n <SubHeading id=\"tier-system\">Tier System</SubHeading>\n\n <P>Fields are organized into three tiers based on how frequently they appear:</P>\n\n <ParamTable\n params={[\n { name: 'Tier 1', type: 'Core', description: 'Universal fields found across many document types. Most reliable and well-understood.' },\n { name: 'Tier 2', type: 'Established', description: 'Promoted from Tier 3 after meeting frequency thresholds. Stable and production-ready.' },\n { name: 'Tier 3', type: 'Emerging', description: 'Newly discovered fields from a few documents. May be promoted as more data arrives.' },\n ]}\n />\n\n <Callout>\n Tier badges appear throughout the platform as the primary quality signal. <TierBadge tier={1} /> = green,{' '}\n <TierBadge tier={2} /> = amber, <TierBadge tier={3} /> = gray.\n </Callout>\n\n <SubHeading id=\"semantic-clusters\">Semantic Clusters</SubHeading>\n\n <P>\n Fields with similar meanings are automatically grouped using AI embeddings. For example,\n \"Vendor Name\", \"Supplier Name\", and \"Company Name\" cluster together. You can manually merge\n or split clusters from the Field Map view.\n </P>\n\n <SubHeading id=\"field-resolution\">Field Resolution</SubHeading>\n\n <P>\n When a document is processed, each extracted field is resolved against the registry using a\n three-band matching model. The bands determine whether a match is accepted automatically,\n flagged for confirmation, or treated as a new field.\n </P>\n\n <ParamTable\n params={[\n { name: 'Auto band', type: '\\u2265 0.80 similarity', description: 'High-confidence match. The field is linked to the existing registry entry and its occurrence count is incremented.' },\n { name: 'Confirm band', type: '0.50 \\u2013 0.79', description: 'Candidate match. The field is linked but flagged for manual review in the reconciliation queue.' },\n { name: 'New band', type: '< 0.50', description: 'No match found. A new Tier 3 field and cluster are created in the registry.' },\n ]}\n />\n\n <P>\n Resolution runs concurrently across documents. Each document’s fields are resolved in\n an isolated transaction to prevent lock contention. Occurrence rates are updated after\n each transaction commits, keeping the registry eventually consistent without blocking\n concurrent ingestion.\n </P>\n\n <Callout>\n Pending confirmations from the confirm band appear in{' '}\n <strong>Resolution → Pending Confirmations</strong>. Accept to merge into an existing\n cluster, or reject to create a new field.\n </Callout>\n\n <SubHeading id=\"master-instructions\">Master Instructions</SubHeading>\n\n <P>\n As the same field is extracted from many documents, AI synthesizes a <strong>master instruction</strong> —\n a reusable directive that captures the best way to extract that field. Master instructions\n improve accuracy over time and are automatically used when running jobs.\n </P>\n\n <Callout>\n Click <strong>\"Synthesize All\"</strong> in the Field Registry to generate instructions for all qualifying\n fields. This runs the combined pipeline: embed → resolve → synthesize.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SCHEMAS & TEMPLATES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"schemas-templates\">Schemas & Templates</SectionHeading>\n\n <P>\n Schemas define the structure of your output data. There are two types: AI-generated schemas\n created per document type, and user templates you define yourself.\n </P>\n\n <SubHeading id=\"generated-schemas\">Generated Schemas</SubHeading>\n\n <P>\n For each document type, Talonic generates a schema containing all Tier 1 and Tier 2 fields\n with occurrences in that type. Generated schemas are versioned — new versions are created when\n the registry changes. You can diff any two versions to see what changed.\n </P>\n\n <SubHeading id=\"user-templates\">User Templates</SubHeading>\n\n <P>\n User templates are the primary way to define your output structure. Navigate to{' '}\n <strong>Structuring → Schemas</strong> to create one.\n </P>\n\n <div className=\"my-6 space-y-2\">\n {[\n { n: '1', label: 'Create template', desc: 'Give it a name and description.' },\n { n: '2', label: 'Add fields', desc: 'Specify display name, data type, and optionally extraction instructions.' },\n { n: '3', label: 'Map to registry', desc: 'Automatic matching — exact matches auto-apply, semantic matches need confirmation.' },\n { n: '4', label: 'Add reference tables', desc: 'For code fields (e.g., country name → ISO code), upload key-value pairs.' },\n { n: '5', label: 'Publish', desc: 'Create an immutable version snapshot ready for job execution.' },\n ].map(({ n, label, desc }) => (\n <div key={n} className=\"flex gap-4\">\n <div className=\"flex-shrink-0 w-7 h-7 rounded-full bg-void-accent/10 text-void-accent text-[13px] font-bold flex items-center justify-center mt-0.5\">{n}</div>\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"text-[15px] font-semibold text-void-text-primary\">{label}</h4>\n <p className=\"text-[14px] text-void-text-muted leading-relaxed\">{desc}</p>\n </div>\n </div>\n ))}\n </div>\n\n <SubHeading id=\"schema-features\">Schema Features Reference</SubHeading>\n\n <P>\n Every field in a template supports advanced features beyond the basic name and type. These features\n control how values are extracted, validated, transformed, and delivered.\n </P>\n\n <ParamTable\n title=\"Field features\"\n params={[\n { name: 'Format constraint', type: 'regex', description: 'Validates extracted values against a regex pattern. Failing values can be emptied, flagged, or replaced with a constant.' },\n { name: 'Modifiers', type: 'pipeline', description: 'Post-processing transforms applied in order: format (date/number), alias (value mapping), max_length (truncation).' },\n { name: 'Constraints', type: 'validation', description: 'Rules evaluated after modifiers: required, enum, date-format, length, cross-field expressions.' },\n { name: 'Bypass strategy', type: 'skip LLM', description: 'Fields that don\\'t need extraction: constant (fixed value), generator (auto-ID), reference (lookup from reference table).' },\n { name: 'Reference table', type: 'key-value', description: 'Inline lookup table for code mapping (e.g., country name → ISO code). Also supports multi-hop resolution chains.' },\n { name: 'Manual instruction', type: 'text', description: 'User-written extraction directive. Overrides the AI-synthesized master instruction from the field registry.' },\n { name: 'Capture submoves', type: 'array', description: 'Ordered execution: match (field matching), compute (calculation), reason (LLM inference).' },\n { name: 'Output name', type: 'string', description: 'Renamed field in export output. The internal name stays the same.' },\n ]}\n />\n\n <Callout>\n For the complete JSON Schema specification with all features, see the{' '}\n <LinkComp href=\"/docs/platform/schema-features\">Full Schema Reference</LinkComp> in the Platform Guide.\n A downloadable template is available in the{' '}\n <LinkComp href=\"https://github.com/talonicdev/platform/blob/main/packages/docs/src/schema-template.json\">repository</LinkComp>.\n </Callout>\n\n <SubHeading id=\"field-matching\">Field Matching</SubHeading>\n\n <ParamTable\n title=\"Match types\"\n params={[\n { name: 'Exact', type: 'auto', description: 'Field name directly matches a canonical registry field.' },\n { name: 'Semantic', type: 'AI', description: 'AI finds an equivalent field with a different name.' },\n { name: 'Composite', type: 'AI', description: 'Multiple registry fields combine to derive this field.' },\n { name: 'Unmapped', type: 'manual', description: 'No match found — needs manual extraction instructions.' },\n ]}\n />\n\n <SubHeading id=\"reference-tables\">Reference Tables</SubHeading>\n\n <P>\n Reference tables map human-readable values to system codes. Each table is a list of\n key-value pairs where <InlineCode>key</InlineCode> = output code and <InlineCode>value</InlineCode> = label.\n During extraction, a 3-tier lookup cascade runs:\n </P>\n\n <ParamTable\n title=\"Lookup cascade\"\n params={[\n { name: 'Tier 1', type: 'normalization', description: 'Exact match after lowercasing and suffix stripping. Free, instant. Confidence: 0.95.' },\n { name: 'Tier 2', type: 'fuzzy', description: 'Token-overlap matching for name variations (e.g., \"Certas Energy UK Ltd\" vs \"Certas Energy Trading\"). Free. Confidence: ~0.70.' },\n { name: 'Tier 3', type: 'AI fallback', description: 'AI maps value to code when fuzzy matching fails. Last resort. Confidence: 0.50.' },\n ]}\n />\n\n <Callout>\n Reference table quality directly determines lookup accuracy. A properly loaded table\n produces 90-100% accurate results within a single run.\n </Callout>\n\n <SubHeading id=\"versioning-drafts\">Versioning & Drafts</SubHeading>\n\n <P>\n Templates support a workshop system: <strong>Live</strong> (current published version, read-only),\n <strong> Workshop</strong> (mutable draft for editing), and <strong>Version History</strong>{' '}\n (timeline with diff summaries). When promoting a draft, the system detects breaking changes\n (field removals, type changes) and warns you.\n </P>\n\n <SubHeading id=\"test-extraction\">Test Extraction</SubHeading>\n\n <P>\n Before publishing a draft, run a test extraction to compare draft vs. live results side-by-side.\n Select a few documents, run the test, and see exactly how your changes affect output.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n EXTRACTION JOBS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"extraction-jobs\">Extraction Jobs</SectionHeading>\n\n <P>\n Extraction jobs are the core of the platform — where schemas meet documents and AI agents\n produce structured data. A job produces a grid: rows = documents, columns = schema fields.\n </P>\n\n <SubHeading id=\"creating-job\">Creating a Job</SubHeading>\n\n <P>\n Navigate to <strong>Structuring → Runs → New</strong>. Select your template and\n documents, then click Start. Results appear progressively as each phase completes.\n </P>\n\n <SubHeading id=\"pipeline-overview\">The 4-Phase Pipeline</SubHeading>\n\n <P>\n Every job runs through four phases. Each fills more cells in the output grid, reducing the\n problem space for the next. Results are visible as each phase completes.\n </P>\n\n <UiExcerpt title=\"Job Detail — Phase Timeline\" caption=\"The phase timeline shows progress through the pipeline. Each dot represents a stage, highlighted when active.\">\n <div className=\"flex items-center justify-center gap-0 py-3\">\n <PipelineStage label=\"Transfer\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Lookup\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Strategy\" state=\"done\" />\n <PipelineConnector done />\n <PipelineStage label=\"Execute\" state=\"active\" />\n <PipelineConnector />\n <PipelineStage label=\"Validate\" state=\"pending\" />\n <PipelineConnector />\n <PipelineStage label=\"Re-read\" state=\"pending\" />\n <PipelineConnector />\n <PipelineStage label=\"Done\" state=\"pending\" />\n </div>\n <div className=\"mt-3 flex items-center justify-center gap-4\">\n <div className=\"text-[11px] text-void-text-muted\">Fill rate:</div>\n <div className=\"w-40 h-1.5 bg-void-border rounded-full overflow-hidden\">\n <div className=\"h-full bg-void-accent rounded-full\" style={{ width: '64%' }} />\n </div>\n <div className=\"text-[11px] font-mono text-void-accent font-medium\">64%</div>\n </div>\n </UiExcerpt>\n\n <SubHeading id=\"phase-1\">Phase 1: Resolve</SubHeading>\n\n <P>\n The fastest phase (~30% of cells in seconds). For each document × each schema field,\n the system checks if the cell can be filled from existing extracted data. <strong>No AI calls</strong>{' '}\n (except rare Haiku fallback for ambiguous lookups).\n </P>\n\n <ParamTable\n title=\"Resolution methods\"\n params={[\n { name: 'Direct transfer', type: 'graph match', description: 'Field registry match found in extracted data. Confidence: extraction × match score.' },\n { name: 'Fuzzy name match', type: 'string', description: 'Handles naming variations — signature.date matches signature_date.' },\n { name: 'Concept-synonym', type: 'expansion', description: 'Maps generic field concepts to common variations (supplier → vendor.company_name).' },\n { name: 'Reference lookup', type: '3-tier cascade', description: 'For fields with reference tables: normalize → fuzzy → AI. See Reference Tables.' },\n { name: 'Description scan', type: 'keyword', description: 'Matches by meaning using field descriptions. No AI calls.' },\n ]}\n />\n\n <P>\n Values are normalized during transfer: dates → <InlineCode>YYYY/MM/DD</InlineCode>, numbers →\n 2 decimal places, strings → trim + collapse spaces.\n </P>\n\n <SubHeading id=\"phase-2\">Phase 2: Agent</SubHeading>\n\n <P>\n An AI agent reviews the grid's gap patterns and produces a typed strategy:\n </P>\n\n <UiExcerpt title=\"Job Detail — Agent Strategy Panel\" caption=\"The strategy panel shows the agent's typed action plan — visible on the job detail page.\">\n <div className=\"space-y-1.5 text-[12px]\">\n {[\n { field: 'total_amount', action: 'compute', detail: 'unit_price * quantity', color: 'bg-purple-400' },\n { field: 'vendor_code', action: 'transfer', detail: 'From: supplier_name → lookup', color: 'bg-teal-400' },\n { field: 'warranty_terms', action: 'extract', detail: 'Find warranty clause and summarize', color: 'bg-indigo-400' },\n { field: 'internal_ref', action: 'skip', detail: 'Not present in this document type', color: 'bg-gray-300' },\n ].map(({ field, action, detail, color }) => (\n <div key={field} className=\"flex items-center gap-2.5 px-3 py-2 rounded bg-void-surface-2/50\">\n <span className={`w-2 h-2 rounded-full flex-shrink-0 ${color}`} />\n <span className=\"font-mono text-void-text-primary font-medium w-32 truncate\">{field}</span>\n <span className={`px-1.5 py-0.5 text-[10px] font-semibold rounded ${\n action === 'compute' ? 'bg-purple-50 text-purple-600' :\n action === 'transfer' ? 'bg-teal-50 text-teal-600' :\n action === 'extract' ? 'bg-indigo-50 text-indigo-600' :\n 'bg-gray-50 text-gray-500'\n }`}>{action}</span>\n <span className=\"text-void-text-muted truncate\">{detail}</span>\n </div>\n ))}\n </div>\n </UiExcerpt>\n\n <ParamTable\n title=\"Agent actions\"\n params={[\n { name: 'compute', type: 'formula', description: 'Calculate from existing grid values (e.g., Total = Unit Price × Quantity). Safe expression evaluator, no eval().' },\n { name: 'transfer', type: 'copy', description: 'Copy from a semantically equivalent grid field.' },\n { name: 'extract', type: 'AI read', description: 'Re-read the source document with specific instructions. Batched, 5 concurrent.' },\n { name: 'skip', type: 'n/a', description: 'Field cannot be filled, with reasoning.' },\n ]}\n />\n\n <Callout type=\"warning\">\n If a field has a manual instruction, the agent will <strong>always</strong> use <InlineCode>extract</InlineCode>{' '}\n — never <InlineCode>skip</InlineCode>. Human-written instructions are treated as authoritative.\n </Callout>\n\n <SubHeading id=\"phase-3\">Phase 3: Validation</SubHeading>\n\n <P>\n Cross-field sanity checks. Flags are <strong>informational only</strong> — they never block output but\n help you prioritize review:\n </P>\n\n <ParamTable\n title=\"Validation flags\"\n params={[\n { name: 'date_sanity', type: 'error', description: 'End date before start date, or signature date after effective date.' },\n { name: 'amount_mismatch', type: 'warning', description: 'Total doesn\\'t match periodic amount × term (±20% tolerance).' },\n { name: 'lookup_failed', type: 'warning', description: 'Reference table field couldn\\'t find a matching code.' },\n { name: 'low_confidence_outlier', type: 'warning', description: 'Cell with <0.3 confidence in a row where average >0.7.' },\n { name: 'unexpected_empty', type: 'info', description: 'Field with >80% registry occurrence rate is empty in this document.' },\n ]}\n />\n\n <SubHeading id=\"phase-4\">Phase 4: Targeted Re-read</SubHeading>\n\n <P>\n Context-aware gap filling. For each empty cell or low-confidence value, AI re-reads the\n original document with the field instruction and full grid context. This focused approach\n often finds values missed in earlier phases.\n </P>\n\n <Callout>\n Phase 4 respects the <strong>confidence gate</strong>: it can only fill empty cells or\n upgrade cells below the confidence threshold. High-confidence values from Phase 1 are\n permanently protected.\n </Callout>\n\n <SubHeading id=\"reviewing-results\">Reviewing Results</SubHeading>\n\n <UiExcerpt title=\"Job Detail — Results Grid\" caption=\"The results grid shows per-cell resolution indicators. Colored dots indicate how each value was resolved.\">\n <div className=\"border border-void-border rounded-lg overflow-hidden\">\n <table className=\"w-full text-[12px]\">\n <thead>\n <tr className=\"bg-void-surface-2/50 border-b border-void-border\">\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase w-40\">Document</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Supplier Name</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Contract Value</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Start Date</th>\n <th className=\"text-left px-3 py-2 text-[10px] text-void-text-muted font-medium uppercase\">Org Code</th>\n </tr>\n </thead>\n <tbody>\n {[\n { doc: 'ServiceAgreement_001.pdf', vals: [\n { v: 'Certas Energy UK', dot: 'bg-blue-400' },\n { v: '£142,500.00', dot: 'bg-blue-400' },\n { v: '2025/01/15', dot: 'bg-blue-400' },\n { v: 'ORG-7421', dot: 'bg-teal-400' },\n ]},\n { doc: 'PurchaseOrder_042.pdf', vals: [\n { v: 'Acme Industries', dot: 'bg-blue-400' },\n { v: '€89,200.00', dot: 'bg-purple-400' },\n { v: '2025/03/01', dot: 'bg-blue-400' },\n { v: 'ORG-1138', dot: 'bg-indigo-400' },\n ]},\n { doc: 'Contract_Renewal_15.pdf', vals: [\n { v: 'Global Logistics Ltd', dot: 'bg-blue-400' },\n { v: '$215,000.00', dot: 'bg-blue-400' },\n { v: '2025/06/01', dot: 'bg-indigo-400' },\n { v: '', dot: '' },\n ]},\n ].map(({ doc, vals }, ri) => (\n <tr key={doc} className={`${ri > 0 ? 'border-t border-void-border/40' : ''} hover:bg-void-accent/5`}>\n <td className=\"px-3 py-2 font-medium text-void-text-primary truncate max-w-[160px]\">{doc}</td>\n {vals.map((cell, ci) => (\n <td key={ci} className=\"px-3 py-2 text-void-text-secondary\">\n <span className=\"flex items-center gap-1.5\">\n {cell.dot && <span className={`w-1.5 h-1.5 rounded-full flex-shrink-0 ${cell.dot}`} />}\n {cell.v || <span className=\"text-void-text-muted italic\">empty</span>}\n </span>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"flex flex-wrap mt-2.5 gap-x-4\">\n <CellDot color=\"bg-blue-400\" label=\"Graph match\" />\n <CellDot color=\"bg-purple-400\" label=\"Computed\" />\n <CellDot color=\"bg-teal-400\" label=\"Agent transfer\" />\n <CellDot color=\"bg-indigo-400\" label=\"Agent extract\" />\n <CellDot color=\"bg-amber-400\" label=\"Lookup\" />\n </div>\n </UiExcerpt>\n\n <P>\n The job detail page provides: a <strong>progress bar</strong> with fill rate, a <strong>phase timeline</strong>,\n the <strong>strategy panel</strong> (agent actions), a <strong>filter bar</strong>{' '}\n (Show All / Clean / Flagged), and <strong>CSV export</strong> (clean or full with metadata).\n </P>\n\n <SubHeading id=\"confidence-provenance\">Confidence & Provenance</SubHeading>\n\n <P>Every cell carries detailed provenance. Hover a cell for confidence; click for full detail.</P>\n\n <ParamTable\n title=\"Cell provenance fields\"\n params={[\n { name: 'confidence', type: '0.0–1.0', description: 'How certain the system is about the value.' },\n { name: 'resolution_type', type: 'enum', description: 'graph_match | agent_derived | source_reread | unresolved.' },\n { name: 'phase', type: '1–4', description: 'Which pipeline phase produced the value.' },\n { name: 'reasoning', type: 'text', description: 'Human-readable explanation (agent-derived and re-read cells).' },\n { name: 'source_reference', type: 'object', description: 'Document, page, and field that contributed the data.' },\n ]}\n />\n\n <Callout type=\"warning\">\n <strong>Confidence Gate</strong>: the single most important pipeline rule. Once a cell is filled\n with confidence ≥ 0.7, no later phase can overwrite it. This prevents lookup results (0.95)\n from being replaced by lower-confidence agent extractions (0.65).\n </Callout>\n\n <SubHeading id=\"corrections\">Corrections</SubHeading>\n\n <P>\n Click any cell to edit its value. Corrections are logged with the original value, timestamp,\n and user. Choose a propagation scope: <InlineCode>this_document_only</InlineCode> or{' '}\n <InlineCode>all_similar</InlineCode> (same field + method + source field across all documents).\n Corrections feed back as training signals for future runs.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n LINKING & CASES\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"linking-cases\">Linking & Cases</SectionHeading>\n\n <P>\n Document linking discovers relationships between documents by identifying shared entities.\n Related documents are grouped into cases for holistic review.\n </P>\n\n <SubHeading id=\"link-keys\">Link Keys</SubHeading>\n\n <P>\n Registry fields can be classified as <strong>link keys</strong> — values that connect documents:\n </P>\n\n <ParamTable\n title=\"Link key categories\"\n params={[\n { name: 'Identity', type: 'entity', description: 'Names: company names, supplier names, person names.' },\n { name: 'Transaction', type: 'reference', description: 'Numbers: contract numbers, PO numbers, invoice numbers.' },\n { name: 'Reference', type: 'shared ID', description: 'Other identifiers: project codes, cost centers.' },\n ]}\n />\n\n <P>\n Most link keys are auto-classified by name patterns. Remaining ambiguous fields are classified\n by AI. High-frequency entities (>30% of documents) are automatically excluded from case\n formation.\n </P>\n\n <SubHeading id=\"entity-linking\">Entity Linking</SubHeading>\n\n <P>\n After extraction, the linking pipeline runs automatically: extracts link key values,\n normalizes them (lowercasing, stripping suffixes like \"Ltd\", \"Inc\"), and builds a bipartite\n graph of documents ↔ entities.\n </P>\n\n <SubHeading id=\"cases\">Cases</SubHeading>\n\n <P>\n A <strong>case</strong> = 2+ documents connected through transaction/reference entities.\n An <strong>entity group</strong> = 2+ documents connected through identity-only entities.\n </P>\n\n <P>Each case detail page shows: documents, shared entities, evidence chain (which field keys\n produced each connection), timeline, and auto-generated AI narration.</P>\n\n <SubHeading id=\"document-graph\">Document Graph</SubHeading>\n\n <P>\n The Document Graph provides a visual D3-force layout of the bipartite graph. Toggle between\n graph and list views from the Cases page. Case templates are auto-discovered after 3+ cases\n form — they identify recurring document type patterns.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DATA PRODUCTS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"data-products\">Data Products</SectionHeading>\n\n <P>\n Data Products package your extraction and resolution outputs into reusable,\n shareable artifacts. Dataset Templates define the shape; Assemblies combine\n sources into a single structured dataset.\n </P>\n\n <SubHeading id=\"dataset-templates\">Dataset Templates</SubHeading>\n\n <P>\n A dataset template defines a reusable output specification: which schema to use,\n which document types to include, column mappings, and default transforms. Templates\n ensure consistent data product generation across teams and time periods.\n </P>\n\n <P>\n Navigate to <strong>Data Products → Dataset Templates</strong> to manage templates.\n Each template is linked to a user schema and can be versioned independently. When\n creating a new job, select a template instead of configuring the output from scratch.\n </P>\n\n <SubHeading id=\"assemblies\">Assemblies</SubHeading>\n\n <P>\n An assembly combines documents from one or more sources into a single structured\n dataset based on a template. Assemblies track their constituent documents, source\n counts, and processing status.\n </P>\n\n <P>\n Navigate to <strong>Data Products → Assemblies</strong> to view and create\n assemblies. Each assembly shows its document count, linked schema, processing\n status, and the date it was created.\n </P>\n\n <Callout>\n Assemblies are the recommended way to produce production datasets. They provide a\n single audit trail from source documents through extraction, resolution, and\n validation to the final output.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n VALIDATION & QUALITY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"validation-quality\">Validation & Quality</SectionHeading>\n\n <P>\n Multiple layers of quality assurance: automated validation checks, ground truth\n benchmarking, and configurable approval gates.\n </P>\n\n <SubHeading id=\"validation-checks\">Validation Checks</SubHeading>\n\n <P>\n Schema-level quality rules run during Phase 3 of every job. Rule types: field format,\n value range, cross-field consistency, and AI-proposed coherence rules. Rules can be\n AI-proposed after a job completes, then reviewed and approved before activation.\n </P>\n\n <SubHeading id=\"ground-truth\">Golden Samples</SubHeading>\n\n <P>\n Manually-created reference datasets with known-correct values. Create from{' '}\n <strong>Validation → Golden Samples</strong>. Benchmark runs compare extraction results\n against golden samples for per-field accuracy scoring with AI judge verdicts.\n </P>\n\n <SubHeading id=\"approval-gates\">Approval Gates</SubHeading>\n\n <P>\n Threshold-based rules for auto-approving or flagging results. Configure per schema with\n criteria: minimum confidence, validation pass rate, field coverage. Results meeting all\n thresholds are auto-approved; others go to the manual review queue.\n </P>\n\n <Callout>\n Approval gates feed the delivery pipeline — bind a{' '}\n <InlineCode>result.approved</InlineCode> signal to a destination to only ship approved\n rows to your downstream systems.\n </Callout>\n\n <SubHeading id=\"approval-queue\">Approval Queue</SubHeading>\n\n <P>\n Results that do not meet auto-approval thresholds are routed to the Approval Queue.\n Navigate to <strong>Review → Approval Queue</strong> to see all pending items.\n Each row shows the source document, schema, confidence score, and whether the result\n has been flagged by a validation rule.\n </P>\n\n <P>\n Filter the queue by status (pending, flagged), schema, or confidence range. Click\n “Review” on any row to inspect the extracted values, provenance trails,\n and validation check results before approving or rejecting.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DELIVERY\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"delivery\">Delivery</SectionHeading>\n\n <P>\n Push extracted, resolved, and reviewed data to any downstream system. Delivery is a typed,\n at-least-once pipeline with idempotency keys on the wire, append-only history, and a\n dead-letter queue for terminal failures.\n </P>\n\n <SubHeading id=\"delivery-pipeline\">How Delivery Works</SubHeading>\n\n <P>\n Every delivery flows through a five-stage pipeline:\n </P>\n\n <ParamTable\n title=\"The delivery pipeline\"\n params={[\n { name: '1. Signal', type: 'event', description: 'A producer emits a typed event (e.g. document.extracted, result.approved) into the outbox. Producers are stateless — they only publish.' },\n { name: '2. Binding', type: 'match', description: 'A poller drains the outbox and matches each event against active bindings. A binding joins a signal filter to a deliverable + destination + serializer.' },\n { name: '3. Resolver', type: 'load', description: 'The deliverable resolver loads the payload (document metadata, a record snapshot, an extraction run, …) at delivery time using only entity IDs from the signal.' },\n { name: '4. Serializer', type: 'encode', description: 'The serializer encodes the payload into the wire format — json, ndjson, csv, csv_file, xlsx, rows, graph, raw, md, or txt — after an optional field_map projection.' },\n { name: '5. Connector', type: 'transport', description: 'The connector ships the encoded bytes through the TransportWrapper (SSRF guard, payload cap, rate limit, retry ladder). Slice-1 connector is webhook.' },\n ]}\n />\n\n <P>\n Every attempt is logged in <InlineCode>delivery_items</InlineCode>. Terminal failures\n (retry exhausted or permanent 4xx) write a <InlineCode>delivery_dead_letter</InlineCode>{' '}\n row, which is replayable. The outbox, history, DLQ, and catalog are all accessible via the{' '}\n <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\"><InlineCode>/v1/delivery/*</InlineCode> API</LinkComp>.\n </P>\n\n <SubHeading id=\"destinations\">Destinations</SubHeading>\n\n <P>\n A destination is a connector + configuration + optional credentials. Slice-1 ships the\n webhook connector; S3, Google Sheets, Drive, SFTP, and Email arrive in later slices.\n Use <strong>Delivery → Destinations</strong> to manage them from the dashboard, or{' '}\n <InlineCode>POST /v1/delivery/destinations</InlineCode> via the API. Every destination\n supports a live-ping <InlineCode>POST /v1/delivery/destinations/:id/test</InlineCode>{' '}\n that exercises the full transport envelope with a tiny test payload.\n </P>\n\n <ParamTable\n title=\"Supported connectors\"\n params={[\n { name: 'webhook', type: 'HTTP POST', description: 'Slice 1. HMAC-SHA256 signed payloads with idempotency keys, 30s timeout, SSRF guard, 5 MiB payload cap (overridable per destination).' },\n { name: 's3', type: 'object storage', description: 'Slice 2+. AWS S3 or Cloudflare R2 with per-destination prefix and partitioning.' },\n { name: 'sheets', type: 'api', description: 'Slice 2+. Google Sheets append/upsert via connected accounts (OAuth).' },\n { name: 'drive', type: 'api', description: 'Slice 2+. Google Drive file upload via connected accounts.' },\n { name: 'sftp', type: 'file', description: 'Slice 2+. SFTP file upload with key or password auth.' },\n { name: 'email', type: 'smtp', description: 'Slice 2+. Structured data as email attachment.' },\n ]}\n />\n\n <SubHeading id=\"bindings\">Bindings</SubHeading>\n\n <P>\n A binding is the routing rule: it joins a <strong>signal filter</strong> (which events?)\n to a <strong>deliverable type</strong> (what payload shape?) to a <strong>destination</strong>{' '}\n (ship where?) via a <strong>serializer</strong> (encoded how?). On create, the backend\n validates all four pieces form a compatible triangle — the serializer must support the\n resolver's shape, and the connector must support the serializer format.\n </P>\n\n <P>\n Optional <InlineCode>field_map</InlineCode> (rename/drop/static rules) lets you reshape\n the payload without custom code. Optional <InlineCode>delivery_policy</InlineCode>{' '}\n overrides the default retry ladder (6 attempts at{' '}\n <InlineCode>5s, 30s, 2min, 10min, 1h</InlineCode>) and timeout.\n </P>\n\n <SubHeading id=\"signals-catalog\">Signals & Catalog</SubHeading>\n\n <P>\n The catalog API (<InlineCode>/v1/delivery/catalog/*</InlineCode>) exposes the four\n registries that drive the binding picker. Use it to populate dropdowns rather than\n hardcoding lists — it always reflects the running registry contents.\n </P>\n\n <ParamTable\n title=\"Core signal types\"\n params={[\n { name: 'document.extracted', type: 'signal', description: 'Fired when a document completes extraction with structured fields.' },\n { name: 'document.extraction_failed', type: 'signal', description: 'Fired when extraction fails terminally.' },\n { name: 'run.dataspace.completed', type: 'signal', description: 'Fired when a dataspace job run completes.' },\n { name: 'run.structuring.completed', type: 'signal', description: 'Fired when a structuring run completes.' },\n { name: 'run.resolution.completed', type: 'signal', description: 'Fired when a resolution run (field normalization + transforms) completes.' },\n { name: 'run.extraction.completed', type: 'signal', description: 'Fired when a multi-document extraction (batch-inference) run completes.' },\n { name: 'result.approved', type: 'signal', description: 'Fired when a reviewer approves a record.' },\n { name: 'result.rejected', type: 'signal', description: 'Fired when a reviewer rejects a record.' },\n { name: 'result.flagged', type: 'signal', description: 'Fired when validation flags fire on a record.' },\n { name: 'delivery.item.completed', type: 'meta', description: 'Fired after a successful delivery. Meta-signal — the poller prevents re-binding loops.' },\n { name: 'delivery.item.failed', type: 'meta', description: 'Fired after a terminal delivery failure.' },\n ]}\n />\n\n <SubHeading id=\"delivery-history\">History & DLQ</SubHeading>\n\n <P>\n Every delivery attempt writes a row to <InlineCode>/v1/delivery/items</InlineCode> with\n its status, HTTP code, error code, and request/response bodies. Terminal failures (retry\n ladder exhausted or permanent 4xx) escalate to{' '}\n <InlineCode>/v1/delivery/dlq</InlineCode>. Both are fully replayable — replay enqueues a\n new attempt with a fresh idempotency key. Nothing in history is ever mutated; the log is\n strictly append-only.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SEARCH & FILTERING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"search-filtering\">Search & Filtering</SectionHeading>\n\n <SubHeading id=\"omnisearch\">Omnisearch</SubHeading>\n\n <P>\n Press <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">⌘K</kbd>{' '}\n (or <kbd className=\"px-1.5 py-0.5 text-[11px] font-mono bg-void-surface-2 border border-void-border rounded\">Ctrl+K</kbd>)\n from any page to open global search. Searches across documents, extracted values, field\n names, schema names, and sources simultaneously.\n </P>\n\n <SubHeading id=\"document-filters\">Document Filters</SubHeading>\n\n <P>\n The Documents page supports advanced filtering by extracted field values. Build conditions\n with field autocomplete, comparison operators (eq, contains, gt, between, is_empty, etc.),\n and combine multiple conditions. Filter state is URL-serializable so you can share filtered\n views. Save frequently-used filters as presets.\n </P>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n API & WEBHOOKS\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"api-webhooks\">API & Webhooks</SectionHeading>\n\n <P>\n Talonic provides a full REST API for programmatic access and webhooks for event-driven\n integrations. See the <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\">API Documentation</LinkComp>{' '}\n for complete endpoint documentation.\n </P>\n\n <SubHeading id=\"api-keys\">API Keys</SubHeading>\n\n <P>\n Manage API keys from <strong>Settings → API Keys</strong>. Keys are prefixed with{' '}\n <InlineCode>tlnc_</InlineCode> and passed via <InlineCode>Authorization: Bearer</InlineCode>.\n Keys are SHA-256 hashed — the full key is only shown once at creation.\n </P>\n\n <ParamTable\n title=\"API key scopes\"\n params={[\n { name: 'extract', type: 'scope', description: 'Use the extraction API (POST /v1/extract).' },\n { name: 'read', type: 'scope', description: 'Read documents, extractions, schemas, and jobs.' },\n { name: 'write', type: 'scope', description: 'Create and modify resources.' },\n ]}\n />\n\n <SubHeading id=\"public-api\">Public API</SubHeading>\n\n <ParamTable\n title=\"API namespaces\"\n params={[\n { name: '/v1/extract', type: 'POST', description: 'Synchronous and asynchronous document extraction.' },\n { name: '/v1/documents', type: 'CRUD', description: 'Document listing, detail, and deletion with cursor pagination.' },\n { name: '/v1/extractions', type: 'CRUD', description: 'Extraction results and field corrections.' },\n { name: '/v1/schemas', type: 'CRUD', description: 'Schema management — create, update, delete.' },\n { name: '/v1/jobs', type: 'CRUD', description: 'Async job tracking, results, and N-Shot comparisons with override and judge decisions.' },\n { name: '/v1/sources', type: 'CRUD', description: 'API source management and document ingest.' },\n { name: '/v1/delivery', type: 'CRUD', description: 'Outbound delivery: destinations, bindings, history, DLQ, outbox, catalog.' },\n { name: '/v1/resolutions', type: 'CRUD', description: 'Resolution runs — field normalization, transforms, and lookup cascades.' },\n { name: '/v1/linking', type: 'mixed', description: 'Document linking: link keys, document links, entity graph, classification, backfill, and document-case mapping.' },\n { name: '/v1/schema-graph', type: 'mixed', description: 'Schema class ontology: versioned classes, diffs with approval workflow, edges, aliases, and visualization.' },\n { name: '/v1/structuring', type: 'CRUD', description: 'Validation checks, approval gates with rules, result checks, pending approvals, and delivery triggers.' },\n { name: '/v1/telemetry', type: 'GET', description: 'Structuring metrics: per-schema and per-run summaries, trends, and field-level breakdowns.' },\n { name: '/v1/validation', type: 'CRUD', description: 'Golden samples and validation runs for measuring extraction accuracy against ground truth.' },\n { name: '/v1/credits', type: 'GET', description: 'Credit balance, transaction history, usage summaries, daily breakdown, and per-request usage log.' },\n { name: '/v1/cases', type: 'CRUD', description: 'Cases: status updates, edge confirmation/rejection, split/merge, completeness, document pinning.' },\n { name: '/v1/batches', type: 'mixed', description: 'Batch inference: listing, detail, provider sync, and cancellation.' },\n { name: '/v1/matching', type: 'CRUD', description: 'Smart matching: configurations, strategies, smart runs, AI resolution, results, progress, and review.' },\n { name: '/v1/review', type: 'mixed', description: 'Review queue: assignment, actions, batch operations, and statistics.' },\n { name: '/v1/quality', type: 'CRUD', description: 'Ground truth datasets with entries, benchmarks with results and comparison.' },\n { name: '/v1/reference-data', type: 'CRUD', description: 'Reference datasets: file and JSON upload, row browsing, and management.' },\n ]}\n />\n\n <SubHeading id=\"webhooks\">Webhooks</SubHeading>\n\n <P>\n Webhooks push real-time notifications when events occur. All payloads are HMAC-SHA256 signed.\n Failed deliveries retry with exponential backoff.\n </P>\n\n <P>\n The webhook connector is configured as a <strong>delivery destination</strong>. Bind any\n of the signal types below to a webhook destination to receive real-time notifications.\n See <InlineCode>/v1/delivery/catalog/signals</InlineCode> for the exhaustive list.\n </P>\n\n <ParamTable\n title=\"Delivery signal types (webhook-compatible)\"\n params={[\n { name: 'document.extracted', type: 'event', description: 'A document extraction has finished successfully.' },\n { name: 'document.extraction_failed', type: 'event', description: 'A document extraction has failed terminally.' },\n { name: 'run.dataspace.completed', type: 'event', description: 'A dataspace job run completed.' },\n { name: 'run.structuring.completed', type: 'event', description: 'A structuring run completed.' },\n { name: 'run.resolution.completed', type: 'event', description: 'A resolution run (field normalization + transforms) completed.' },\n { name: 'run.extraction.completed', type: 'event', description: 'A multi-document extraction (batch-inference) run completed.' },\n { name: 'result.approved', type: 'event', description: 'A reviewer approved a record.' },\n { name: 'result.rejected', type: 'event', description: 'A reviewer rejected a record.' },\n { name: 'result.flagged', type: 'event', description: 'Validation flags fired on a record.' },\n { name: 'delivery.item.completed', type: 'meta', description: 'A delivery succeeded. Meta-signal — not re-delivered to avoid loops.' },\n { name: 'delivery.item.failed', type: 'meta', description: 'A delivery failed terminally.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n TEAM & ADMIN\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"team-admin\">Team & Admin</SectionHeading>\n\n <SubHeading id=\"team-management\">Team Management</SubHeading>\n\n <P>Organizations support role-based access control:</P>\n\n <ParamTable\n title=\"Roles\"\n params={[\n { name: 'Viewer', type: 'read-only', description: 'Read-only access to all resources.' },\n { name: 'Member', type: 'full access', description: 'Create, edit, and delete resources.' },\n { name: 'Admin', type: 'management', description: 'Member permissions plus team management and settings.' },\n { name: 'Owner', type: 'full control', description: 'Billing, API keys, organization settings, and all management.' },\n ]}\n />\n\n <P>\n New members are added via domain matching: company email domains auto-match to your org\n with <strong>pending</strong> status requiring admin approval. Manage from the Team page.\n </P>\n\n <SubHeading id=\"usage-registry\">Usage & Registry</SubHeading>\n\n <P>\n The Usage & Registry page replaces the legacy credits view with a comprehensive cost\n breakdown. It shows per-feature cost (extraction, OCR, batch, matching), a daily cost\n chart, and a full call log with model, tokens, and cost per request. The{' '}\n <strong>Master view</strong> (admin only) shows per-customer breakdowns and platform-wide\n statistics.\n </P>\n\n <ParamTable\n title=\"Usage views\"\n params={[\n { name: 'Per-feature costs', type: 'breakdown', description: 'Extraction, OCR, batch inference, matching, and other features listed with total cost.' },\n { name: 'Daily cost chart', type: 'visualization', description: 'Bar chart showing daily spend over the past 30 days.' },\n { name: 'Call log', type: 'audit', description: 'Every API call with model, token count, latency, and cost.' },\n { name: 'Master view', type: 'admin', description: 'Per-customer breakdown and platform-wide aggregates. Accessible only in master (all-tenant) mode.' },\n ]}\n />\n\n <SubHeading id=\"admin-panel\">Admin Panel</SubHeading>\n\n <P>\n Accessible from the user menu for admins and superadmins. Provides: customer management,\n user management, usage statistics, data clear & rebuild, and cross-tenant master\n registry view.\n </P>\n\n <SubHeading id=\"shortcuts\">Keyboard Shortcuts</SubHeading>\n\n <ParamTable\n title=\"Shortcuts\"\n params={[\n { name: '⌘K / Ctrl+K', type: 'global', description: 'Open Omnisearch from any page.' },\n { name: '⌘J / Ctrl+J', type: 'global', description: 'Quick extract — upload and process a document.' },\n { name: 'Escape', type: 'global', description: 'Close overlays, modals, and search.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n BATCH INFERENCE\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"batch-inference\">Batch Inference</SectionHeading>\n\n <SubHeading id=\"batch-overview\">Overview</SubHeading>\n\n <P>\n Documents can be processed in <strong>batch mode</strong> at 50% cost with a 48-hour\n delivery window. Toggle batch mode on the upload screen or set it via the API. Batch\n processing is ideal for large backlog ingestion where real-time results are not required.\n </P>\n\n <Callout>\n Batch mode cuts extraction cost in half. Stage 1 (OCR + classify) still runs immediately\n — only Stage 2 (Claude extraction) is deferred.\n </Callout>\n\n <SubHeading id=\"batch-processing\">Batch Processing Mode</SubHeading>\n\n <P>\n Set <InlineCode>processing_mode=batch</InlineCode> on upload (API) or toggle the\n “Batch” switch in the upload UI. Stage 1 (OCR + classification) runs\n immediately so documents appear in your library right away. Stage 2 (Claude extraction)\n is deferred to the provider’s batch API for asynchronous processing.\n </P>\n\n <ParamTable\n title=\"Batch stages\"\n params={[\n { name: 'Stage 1', type: 'immediate', description: 'OCR, classification, and triage run in real-time. Documents are visible in your library immediately.' },\n { name: 'Stage 2', type: 'deferred', description: 'Claude extraction is queued for batch processing. Items accumulate, then submit to the batch API on a timer or threshold.' },\n ]}\n />\n\n <SubHeading id=\"batch-monitoring\">Monitoring Batches</SubHeading>\n\n <P>\n The Batches page at <InlineCode>/sources/batches</InlineCode> shows the status of all\n batch jobs. Each batch progresses through three states:{' '}\n <strong>accumulating</strong> (items collecting), <strong>submitted</strong> (sent to\n provider), and <strong>completed</strong> (results applied). The page live-syncs with the\n provider for real-time status updates.\n </P>\n\n <ParamTable\n title=\"Batch statuses\"\n params={[\n { name: 'Accumulating', type: 'status', description: 'Items are being collected. The batch has not yet been submitted to the provider.' },\n { name: 'Submitted', type: 'status', description: 'The batch has been sent to the provider. Polled hourly for completion.' },\n { name: 'Completed', type: 'status', description: 'All results have been received and applied to the corresponding documents.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n SMART MATCHING\n ═══════════════════════════════════════════════════════════════ */}\n <SectionHeading id=\"matching\">Smart Matching</SectionHeading>\n\n <SubHeading id=\"reference-data\">Reference Data</SubHeading>\n\n <P>\n Upload CSV or Excel files as lookup tables. These reference datasets are used by the\n matching engine and by reference strategies in schemas. Each reference dataset is\n versioned and can be shared across multiple schemas.\n </P>\n\n <SubHeading id=\"matching-configs\">Matching Configurations</SubHeading>\n\n <P>\n Define field-to-field comparisons between extracted data and reference datasets. Each\n comparison uses a weighted strategy to score matches:\n </P>\n\n <ParamTable\n title=\"Matching strategies\"\n params={[\n { name: 'exact', type: 'strategy', description: 'Case-insensitive exact string match. Weight determines contribution to overall score.' },\n { name: 'fuzzy', type: 'strategy', description: 'Token-based fuzzy matching with configurable similarity threshold.' },\n { name: 'date_range', type: 'strategy', description: 'Matches dates within a configurable tolerance window (e.g. +/- 7 days).' },\n { name: 'numeric_range', type: 'strategy', description: 'Matches numbers within a configurable percentage or absolute tolerance.' },\n ]}\n />\n\n <P>\n You can also use <strong>AI strategy generation</strong> to let the platform suggest\n field mappings and strategies automatically based on the schema and reference data\n structure.\n </P>\n\n <SubHeading id=\"matching-runs\">Running Matches</SubHeading>\n\n <P>\n Execute a matching run against a reference dataset. Matching runs are processed\n asynchronously via BullMQ. You can monitor progress from the matching page and\n cancel running jobs if needed.\n </P>\n\n <SubHeading id=\"matching-results\">Match Results</SubHeading>\n\n <P>\n Results are presented per document with the top 5 match candidates. Each candidate\n includes a confidence score and field-level evidence showing which comparisons\n contributed to the match and how each field scored.\n </P>\n\n <ParamTable\n title=\"Result fields\"\n params={[\n { name: 'Confidence', type: 'score', description: 'Weighted aggregate score across all field comparisons (0-100%).' },\n { name: 'Evidence', type: 'detail', description: 'Per-field breakdown showing strategy used, individual score, and matched values.' },\n { name: 'Top 5', type: 'candidates', description: 'The five highest-scoring reference records for each document.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n DIALECTS\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"dialects\">Dialects</SubHeading>\n\n <P>\n Dialects define the output format for structured data. They control how values are\n serialized when delivered or exported. A dialect can be shared across schemas or\n defined inline for a specific schema. Configure dialects in the{' '}\n <strong>Schema → Delivery</strong> tab.\n </P>\n\n <ParamTable\n title=\"Dialect settings\"\n params={[\n { name: 'date_format', type: 'string', description: 'Date output format, e.g. DD-MM-YYYY, YYYY/MM/DD, MM.DD.YYYY.' },\n { name: 'number_locale', type: 'locale', description: 'Number formatting locale, e.g. fr-FR (1 234,56), en-US (1,234.56).' },\n { name: 'delimiter', type: 'char', description: 'CSV column delimiter. Default comma; use semicolon (;) for European locales.' },\n { name: 'null_representation', type: 'string', description: 'How null/empty values are serialized: empty string, \"N/A\", \"null\", etc.' },\n { name: 'boolean_format', type: 'string', description: 'Boolean output: true/false, 1/0, yes/no, Y/N.' },\n { name: 'encoding', type: 'string', description: 'Output file encoding: UTF-8 (default), UTF-8-BOM, ISO-8859-1, etc.' },\n ]}\n />\n\n\n {/* ═══════════════════════════════════════════════════════════════\n BYPASS STRATEGIES\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"bypass-strategies\">Bypass Strategies</SubHeading>\n\n <P>\n Bypass strategies determine how a schema field is populated when it should not go\n through LLM extraction. Each strategy provides a deterministic value without consuming\n AI credits.\n </P>\n\n <ParamTable\n title=\"Strategy types\"\n params={[\n { name: 'none', type: 'strategy', description: 'Field is always left blank. Use for fields you want to skip entirely.' },\n { name: 'constant', type: 'strategy', description: 'Field is set to a literal value you specify (e.g. \"USD\", \"pending\").' },\n { name: 'generator', type: 'strategy', description: 'Deterministic value generators: deterministic-id (hash-based ID) or context-fallback (derive from other fields).' },\n { name: 'reference', type: 'strategy', description: 'Look up a value from a reference table using a key_expression to match against uploaded reference data.' },\n ]}\n />\n\n <Callout>\n When a <InlineCode>generator</InlineCode> strategy fails to produce a value, the field\n falls through to LLM extraction as a safety net. Strategy values are normalized via\n generator mappings in Phase 4 of the pipeline.\n </Callout>\n\n\n {/* ═══════════════════════════════════════════════════════════════\n FORMAT CONSTRAINTS\n ═══════════════════════════════════════════════════════════════ */}\n <SubHeading id=\"format-constraints\">Format Constraints</SubHeading>\n\n <P>\n Format constraints apply regex-based validation to schema fields. They are evaluated\n post-extraction in Phase 4 of the pipeline, after all transforms have been applied.\n Original values are preserved for audit in <InlineCode>original_extractions</InlineCode>.\n </P>\n\n <ParamTable\n title=\"Mismatch behaviors\"\n params={[\n { name: 'empty', type: 'default', description: 'If the extracted value does not match the regex, the cell is cleared. The original is preserved for audit.' },\n { name: 'flag', type: 'behavior', description: 'The value is kept but flagged with a format_applied indicator. Visible as an amber dot in the results grid.' },\n { name: 'constant', type: 'behavior', description: 'The value is replaced with a constant you specify (e.g. \"INVALID\", \"N/A\").' },\n ]}\n />\n\n <P>\n Define format constraints in the schema field editor. The pattern uses standard regex\n syntax. The editor provides a live test input so you can verify the pattern before\n saving.\n </P>\n\n\n {/* ─── FOOTER ─────────────────────────────────────────────────── */}\n <div className=\"mt-16 pt-8 border-t border-void-border\">\n <div className=\"flex flex-wrap items-center justify-between gap-4 text-[13px] text-void-text-muted\">\n <div>\n <LinkComp href=\"/docs\" className=\"text-void-accent hover:underline\">API Documentation</LinkComp>\n <span className=\"mx-2\">·</span>\n <LinkComp href=\"/settings/api\" className=\"text-void-accent hover:underline\">API Keys</LinkComp>\n <span className=\"mx-2\">·</span>\n <LinkComp href=\"/\" className=\"text-void-accent hover:underline\">Dashboard</LinkComp>\n </div>\n <span>Talonic Platform Guide</span>\n </div>\n </div>\n\n <div className=\"h-20\" />\n </div>\n </div>\n );\n}\n","/**\n * SEO metadata, navigation data, and machine-readable content exports\n * for @talonic/docs consumers to build sitemaps, JSON-LD, llms.txt, etc.\n */\n\nimport type { NavSection } from './components/DocPrimitives';\n\n// ---------------------------------------------------------------------------\n// Navigation sections (mirrors the data inside the page components)\n// ---------------------------------------------------------------------------\n\nexport const API_NAV_SECTIONS: NavSection[] = [\n { id: 'overview', label: 'Overview', children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'authentication', label: 'Authentication' },\n { id: 'base-url', label: 'Base URL' },\n { id: 'quick-start', label: 'Quick Start' },\n { id: 'pagination', label: 'Pagination' },\n { id: 'idempotency', label: 'Idempotency' },\n ]},\n { id: 'extract', label: 'Extract', children: [\n { id: 'post-extract', label: 'POST /v1/extract' },\n { id: 'extract-schemas', label: 'Schema Formats' },\n { id: 'extract-include-markdown', label: 'Options' },\n { id: 'extract-processing-mode', label: 'Responses' },\n ]},\n { id: 'documents', label: 'Documents', children: [\n { id: 'list-documents', label: 'List Documents' },\n { id: 'get-document', label: 'Get Document' },\n { id: 'delete-document', label: 'Delete Document' },\n ]},\n { id: 'extractions', label: 'Extractions', children: [\n { id: 'list-extractions', label: 'List Extractions' },\n { id: 'get-extraction', label: 'Get Extraction' },\n { id: 'get-extraction-fields', label: 'Get Extraction Data' },\n { id: 'get-extraction-markdown', label: 'Correct Fields' },\n ]},\n { id: 'schemas', label: 'Schemas', children: [\n { id: 'list-schemas', label: 'List Schemas' },\n { id: 'create-schema', label: 'Create Schema' },\n { id: 'get-schema', label: 'Get Schema' },\n { id: 'update-schema', label: 'Update Schema' },\n { id: 'delete-schema', label: 'Delete Schema' },\n ]},\n { id: 'jobs', label: 'Jobs', children: [\n { id: 'list-jobs', label: 'List Jobs' },\n { id: 'create-job', label: 'Create Job' },\n { id: 'get-job', label: 'Get Job' },\n ]},\n { id: 'sources', label: 'Sources', children: [\n { id: 'list-sources', label: 'List Inputs' },\n { id: 'create-source', label: 'Create Input' },\n { id: 'get-source', label: 'Get / Update / Delete' },\n { id: 'update-source', label: 'Source Documents' },\n ]},\n { id: 'filter-search', label: 'Filter & Search', children: [\n { id: 'field-autocomplete', label: 'Field Autocomplete' },\n { id: 'field-values', label: 'Field Values' },\n { id: 'filter-documents', label: 'Filter Documents' },\n { id: 'filter-documents-export', label: 'Omnisearch' },\n { id: 'omnisearch', label: 'Saved Filters' },\n { id: 'saved-filters', label: 'Document Counts' },\n { id: 'document-counts', label: 'Materialize' },\n { id: 'materialized-index', label: 'Materialized Index' },\n ]},\n { id: 'webhooks', label: 'Webhooks', children: [\n { id: 'webhook-events', label: 'Events' },\n { id: 'webhook-management', label: 'Delivery Format' },\n { id: 'webhook-security', label: 'Signature Verification' },\n { id: 'webhook-retry', label: 'Retry Policy' },\n { id: 'list-webhook-configs', label: 'List Configs' },\n { id: 'create-webhook-config', label: 'Create Config' },\n { id: 'manage-webhook-config', label: 'Manage Config' },\n ]},\n { id: 'resolutions', label: 'Resolutions', children: [\n { id: 'list-resolutions', label: 'List Resolutions' },\n { id: 'create-resolution', label: 'Create Resolution' },\n { id: 'get-resolution', label: 'Get Resolution' },\n { id: 'get-resolution-results', label: 'Get Results' },\n { id: 'execute-resolution', label: 'Execute Resolution' },\n { id: 'cancel-resolution', label: 'Delete Resolution' },\n ]},\n { id: 'linking', label: 'Linking', children: [\n { id: 'list-link-keys', label: 'Link Keys' },\n { id: 'reclassify-link-key', label: 'Classify' },\n { id: 'list-entities', label: 'Document Links' },\n { id: 'list-linked-documents', label: 'Full Graph' },\n { id: 'list-cases', label: 'Backfill' },\n { id: 'get-case', label: 'Cases' },\n { id: 'refresh-cases', label: 'Document-Case Map' },\n ]},\n { id: 'nshot', label: 'N-Shot', children: [\n { id: 'nshot-summary', label: 'Summary' },\n { id: 'nshot-list-shots', label: 'Comparisons' },\n { id: 'nshot-compare', label: 'Single Comparison' },\n { id: 'nshot-select', label: 'Override' },\n { id: 'nshot-judge-decision', label: 'Judge Decision' },\n ]},\n { id: 'schema-graph', label: 'Schema Graph', children: [\n { id: 'list-schema-graph-classes', label: 'List Classes' },\n { id: 'get-schema-graph-class', label: 'Get Class' },\n { id: 'list-class-versions', label: 'List Versions' },\n { id: 'get-class-version', label: 'Get Version' },\n { id: 'list-schema-graph-diffs', label: 'List Diffs' },\n { id: 'approve-diff', label: 'Approve Diff' },\n { id: 'reject-diff', label: 'Reject Diff' },\n { id: 'list-schema-graph-edges', label: 'Edges' },\n { id: 'list-schema-graph-aliases', label: 'Aliases' },\n { id: 'visualize-schema-graph', label: 'Visualize' },\n ]},\n { id: 'structuring', label: 'Structuring', children: [\n { id: 'list-structuring-checks', label: 'List Checks' },\n { id: 'create-structuring-check', label: 'Create Check' },\n { id: 'get-structuring-check', label: 'Get / Update / Delete Check' },\n { id: 'list-structuring-gates', label: 'List Gates' },\n { id: 'create-structuring-gate', label: 'Create Gate' },\n { id: 'get-structuring-gate', label: 'Get / Update / Delete Gate' },\n { id: 'gate-rules', label: 'Gate Rules' },\n { id: 'result-checks', label: 'Result Checks' },\n { id: 'pending-approvals', label: 'Pending Approvals' },\n { id: 'approve-reject-result', label: 'Approve / Reject Result' },\n { id: 'trigger-delivery', label: 'Trigger Delivery' },\n ]},\n { id: 'telemetry', label: 'Telemetry', children: [\n { id: 'schema-telemetry-summary', label: 'Schema Summary' },\n { id: 'schema-telemetry-trend', label: 'Schema Trend' },\n { id: 'schema-telemetry-fields', label: 'Schema Fields' },\n { id: 'run-telemetry-summary', label: 'Run Summary' },\n ]},\n { id: 'validation', label: 'Validation', children: [\n { id: 'list-ground-truth', label: 'List Ground-Truth Datasets' },\n { id: 'get-ground-truth', label: 'Get / Delete Ground-Truth Dataset' },\n { id: 'list-validation-runs', label: 'List Validation Runs' },\n { id: 'create-validation-run', label: 'Create Validation Run' },\n { id: 'get-validation-run', label: 'Get / Delete Validation Run' },\n { id: 'get-validation-results', label: 'Validation Results' },\n ]},\n { id: 'credits', label: 'Credits', children: [\n { id: 'credits-balance', label: 'Balance' },\n { id: 'credits-history', label: 'History' },\n { id: 'credits-usage', label: 'Usage Summary' },\n { id: 'credits-usage-daily', label: 'Daily Usage' },\n { id: 'credits-usage-log', label: 'Usage Log' },\n ]},\n { id: 'agent', label: 'Agent', children: [\n { id: 'agent-context', label: 'Get Workspace Context' },\n { id: 'agent-tools', label: 'List Agent Tools' },\n ]},\n { id: 'matching', label: 'Matching', children: [\n { id: 'list-matching-configs', label: 'List Configs' },\n { id: 'create-matching-config', label: 'Create Config' },\n { id: 'get-matching-config', label: 'Get / Update / Delete Config' },\n { id: 'run-matching', label: 'Run Matching' },\n { id: 'get-matching-run', label: 'Get Run' },\n { id: 'get-matching-results', label: 'Get Results' },\n { id: 'generate-strategy', label: 'Generate Strategy' },\n { id: 'list-matching-runs', label: 'List Runs' },\n { id: 'review-match-result', label: 'Review Result' },\n { id: 'manage-matching-strategy', label: 'Manage Strategy' },\n ]},\n { id: 'delivery', label: 'Delivery', children: [\n { id: 'list-delivery-destinations', label: 'List Destinations' },\n { id: 'create-delivery-destination', label: 'Create Destination' },\n { id: 'manage-delivery-destination', label: 'Manage Destination' },\n { id: 'list-delivery-bindings', label: 'List Bindings' },\n { id: 'create-delivery-binding', label: 'Create Binding' },\n { id: 'manage-delivery-binding', label: 'Manage Binding' },\n { id: 'delivery-history', label: 'History' },\n { id: 'delivery-dlq', label: 'Dead Letter Queue' },\n { id: 'delivery-catalog', label: 'Catalog' },\n ]},\n { id: 'batches', label: 'Batches', children: [\n { id: 'list-batches', label: 'List Batches' },\n { id: 'get-batch', label: 'Get Batch' },\n { id: 'sync-batch', label: 'Sync Batch' },\n { id: 'cancel-batch', label: 'Cancel Batch' },\n ]},\n { id: 'cases', label: 'Cases', children: [\n { id: 'list-cases', label: 'List Cases' },\n { id: 'get-case', label: 'Get Case' },\n { id: 'case-anomalies', label: 'Anomalies' },\n { id: 'case-operations', label: 'Operations' },\n { id: 'case-edges', label: 'Edges' },\n { id: 'case-documents', label: 'Documents' },\n { id: 'case-merge-split', label: 'Merge & Split' },\n ]},\n { id: 'review', label: 'Review', children: [\n { id: 'list-review-items', label: 'List Items' },\n { id: 'review-stats', label: 'Stats' },\n { id: 'get-review-item', label: 'Get Item' },\n { id: 'review-action', label: 'Take Action' },\n { id: 'review-batch', label: 'Batch Action' },\n { id: 'review-assign', label: 'Assign' },\n ]},\n { id: 'quality', label: 'Quality', children: [\n { id: 'list-quality-datasets', label: 'List Datasets' },\n { id: 'create-quality-dataset', label: 'Create Dataset' },\n { id: 'get-quality-dataset', label: 'Get / Delete Dataset' },\n { id: 'quality-entries', label: 'Entries' },\n { id: 'list-benchmarks', label: 'List Benchmarks' },\n { id: 'create-benchmark', label: 'Create Benchmark' },\n { id: 'get-benchmark-results', label: 'Results & Compare' },\n ]},\n { id: 'routing-rules', label: 'Routing Rules', children: [\n { id: 'list-routing-rules', label: 'List Rules' },\n { id: 'create-routing-rule', label: 'Create Rule' },\n { id: 'manage-routing-rule', label: 'Manage Rule' },\n { id: 'reorder-routing-rules', label: 'Reorder' },\n ]},\n { id: 'reference-data', label: 'Reference Data', children: [\n { id: 'list-reference-data', label: 'List & Create' },\n { id: 'get-reference-data', label: 'Get & Delete' },\n { id: 'reference-data-rows', label: 'Rows & Export' },\n ]},\n { id: 'dialects', label: 'Dialects', children: [\n { id: 'list-dialects', label: 'List & Create' },\n { id: 'manage-dialect', label: 'Manage Dialect' },\n ]},\n { id: 'fields', label: 'Fields', children: [\n { id: 'list-fields', label: 'List Fields' },\n { id: 'field-harmonization', label: 'Harmonization' },\n { id: 'get-field', label: 'Get Field' },\n ]},\n { id: 'registry', label: 'Registry', children: [\n { id: 'registry-query', label: 'Query' },\n ]},\n { id: 'data-products', label: 'Data Products', children: [\n { id: 'list-data-products', label: 'List Data Products' },\n { id: 'get-data-product', label: 'Get Data Product' },\n { id: 'delete-data-product', label: 'Delete Data Product' },\n { id: 'get-data-product-results', label: 'Get Results' },\n ]},\n { id: 'data-policies', label: 'Data Policies', children: [\n { id: 'list-data-policies', label: 'List Policies' },\n { id: 'create-data-policy', label: 'Create Policy' },\n { id: 'get-data-policy', label: 'Get Policy' },\n { id: 'update-data-policy', label: 'Update Policy' },\n { id: 'delete-data-policy', label: 'Delete Policy' },\n { id: 'list-data-policy-versions', label: 'List Versions' },\n { id: 'list-data-policy-fields', label: 'List Fields' },\n { id: 'list-data-policy-rules', label: 'List Rules' },\n ]},\n { id: 'record-sets', label: 'Record Sets', children: [\n { id: 'list-record-sets', label: 'List Record Sets' },\n { id: 'get-record-set', label: 'Get Record Set' },\n { id: 'list-record-set-fields', label: 'List Fields' },\n { id: 'list-record-set-records', label: 'List Records' },\n { id: 'export-record-set', label: 'Export' },\n ]},\n { id: 'billing', label: 'Billing', children: [\n { id: 'billing-settings', label: 'Settings' },\n { id: 'billing-topup', label: 'Auto Top-Up' },\n { id: 'cost-headers', label: 'Cost Headers' },\n ]},\n { id: 'usage', label: 'Usage', children: [\n { id: 'usage-overview', label: 'Overview' },\n ]},\n { id: 'document-types', label: 'Document Types', children: [\n { id: 'list-document-types', label: 'Document Types' },\n ]},\n { id: 'errors-rate-limits', label: 'Errors & Rate Limits', children: [\n { id: 'error-format', label: 'Error Format' },\n { id: 'error-codes', label: 'Error Codes' },\n { id: 'rate-limits', label: 'Rate Limits' },\n ]},\n];\n\nexport const PLATFORM_NAV_SECTIONS: NavSection[] = [\n { id: 'overview', label: 'Overview', children: [\n { id: 'introduction', label: 'Introduction' },\n { id: 'core-concepts', label: 'Core Concepts' },\n { id: 'platform-flow', label: 'Platform Flow' },\n { id: 'getting-started', label: 'Getting Started' },\n ]},\n { id: 'agent', label: 'AI Agent', children: [\n { id: 'agent-capabilities', label: 'Capabilities' },\n { id: 'agent-impact', label: 'Impact Levels' },\n { id: 'agent-dashboard', label: 'Dashboard' },\n ]},\n { id: 'sources-docs', label: 'Inputs & Documents', children: [\n { id: 'uploading', label: 'Uploading Documents' },\n { id: 'supported-formats', label: 'Supported Formats' },\n { id: 'document-processing', label: 'Document Processing' },\n { id: 'document-types', label: 'Document Types' },\n { id: 'document-detail', label: 'Document Detail' },\n { id: 'routing-rules', label: 'Routing Rules' },\n { id: 'source-connectors', label: 'Source Connectors' },\n ]},\n { id: 'field-intelligence', label: 'Field Intelligence', children: [\n { id: 'field-registry', label: 'Field Registry' },\n { id: 'tier-system', label: 'Tier System' },\n { id: 'semantic-clusters', label: 'Semantic Clusters' },\n { id: 'field-resolution', label: 'Field Resolution' },\n { id: 'master-instructions', label: 'Master Instructions' },\n ]},\n { id: 'schemas-templates', label: 'Schemas & Templates', children: [\n { id: 'generated-schemas', label: 'Generated Schemas' },\n { id: 'user-templates', label: 'User Templates' },\n { id: 'schema-features', label: 'Schema Features Reference' },\n { id: 'field-matching', label: 'Field Matching' },\n { id: 'reference-tables', label: 'Reference Tables' },\n { id: 'versioning-drafts', label: 'Versioning & Drafts' },\n { id: 'test-extraction', label: 'Test Extraction' },\n { id: 'dialects', label: 'Dialects' },\n { id: 'bypass-strategies', label: 'Bypass Strategies' },\n { id: 'format-constraints', label: 'Format Constraints' },\n ]},\n { id: 'extraction-jobs', label: 'Extraction Jobs', children: [\n { id: 'creating-job', label: 'Creating a Job' },\n { id: 'pipeline-overview', label: '4-Phase Pipeline' },\n { id: 'phase-1', label: 'Phase 1: Resolve' },\n { id: 'phase-2', label: 'Phase 2: Agent' },\n { id: 'phase-3', label: 'Phase 3: Validation' },\n { id: 'phase-4', label: 'Phase 4: Re-read' },\n { id: 'reviewing-results', label: 'Reviewing Results' },\n { id: 'confidence-provenance', label: 'Confidence & Provenance' },\n { id: 'corrections', label: 'Corrections' },\n ]},\n { id: 'linking-cases', label: 'Linking & Cases', children: [\n { id: 'link-keys', label: 'Link Keys' },\n { id: 'entity-linking', label: 'Entity Linking' },\n { id: 'cases', label: 'Cases' },\n { id: 'document-graph', label: 'Document Graph' },\n { id: 'anomaly-detection', label: 'Anomaly Detection' },\n { id: 'evidence-validation', label: 'Evidence Validation' },\n ]},\n { id: 'batch-inference', label: 'Batch Inference', children: [\n { id: 'batch-overview', label: 'Overview' },\n { id: 'batch-processing', label: 'Batch Processing Mode' },\n { id: 'batch-monitoring', label: 'Monitoring Batches' },\n ]},\n { id: 'matching', label: 'Smart Matching', children: [\n { id: 'reference-data', label: 'Reference Data' },\n { id: 'matching-configs', label: 'Matching Configurations' },\n { id: 'matching-runs', label: 'Running Matches' },\n { id: 'matching-results', label: 'Match Results' },\n ]},\n { id: 'data-products', label: 'Data Products', children: [\n { id: 'dataset-templates', label: 'Dataset Templates' },\n { id: 'assemblies', label: 'Assemblies' },\n { id: 'id-dispensers', label: 'ID Dispensers' },\n { id: 'data-product-sharing', label: 'Sharing & Export' },\n ]},\n { id: 'validation-quality', label: 'Validation & Quality', children: [\n { id: 'validation-checks', label: 'Validation Checks' },\n { id: 'ground-truth', label: 'Golden Samples' },\n { id: 'approval-gates', label: 'Approval Gates' },\n { id: 'approval-queue', label: 'Approval Queue' },\n ]},\n { id: 'delivery', label: 'Outputs', children: [\n { id: 'delivery-pipeline', label: 'How Delivery Works' },\n { id: 'destinations', label: 'Destinations' },\n { id: 'bindings', label: 'Bindings' },\n { id: 'signals-catalog', label: 'Signals & Catalog' },\n { id: 'delivery-history', label: 'History & DLQ' },\n ]},\n { id: 'workspace-settings', label: 'Workspace Settings', children: [\n { id: 'shared-dialects', label: 'Shared Dialects' },\n { id: 'reference-primitives', label: 'Reference Primitives' },\n { id: 'change-review', label: 'Change Review' },\n ]},\n { id: 'search-filtering', label: 'Search & Filtering', children: [\n { id: 'omnisearch', label: 'Omnisearch' },\n { id: 'document-filters', label: 'Document Filters' },\n ]},\n { id: 'api-webhooks', label: 'API & Webhooks', children: [\n { id: 'api-keys', label: 'API Keys' },\n { id: 'public-api', label: 'Public API' },\n { id: 'webhooks', label: 'Webhooks' },\n ]},\n { id: 'team-admin', label: 'Team & Admin', children: [\n { id: 'team-management', label: 'Team Management' },\n { id: 'usage-registry', label: 'Usage & Registry' },\n { id: 'admin-panel', label: 'Admin Panel' },\n { id: 'shortcuts', label: 'Keyboard Shortcuts' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// Section SEO metadata (title + description for each top-level section)\n// ---------------------------------------------------------------------------\n\nexport interface SectionMeta {\n id: string;\n title: string;\n description: string;\n}\n\nexport const API_SECTION_META: SectionMeta[] = [\n { id: 'overview', title: 'API Overview', description: 'Introduction, authentication, base URL, and quick start guide for the Talonic document extraction API.' },\n { id: 'extract', title: 'Extract Endpoint', description: 'POST /v1/extract — send a document and schema, receive structured validated data. Supports PDF, DOCX, images, and 25+ formats.' },\n { id: 'documents', title: 'Documents API', description: 'List, retrieve, and delete documents. Each document retains its original file, extracted text, and metadata.' },\n { id: 'extractions', title: 'Extractions API', description: 'Query extraction results, retrieve structured data with confidence scores, and submit field corrections.' },\n { id: 'schemas', title: 'Schemas API', description: 'Create, update, and manage reusable extraction schemas. Supports JSON Schema, simplified fields, and flat key-type maps.' },\n { id: 'dialects', title: 'Dialects API', description: 'Create, update, and manage shared output formatting configurations — date format, delimiter, encoding, number locale, and boolean format.' },\n { id: 'references', title: 'References API', description: 'Manage workspace-level reference primitives (lookup tables) with automatic versioning, multi-hop resolution, and key binding.' },\n { id: 'telemetry', title: 'Telemetry API', description: 'Aggregate structuring metrics — capture hit rate, synthesize rate, strategy distribution, and tier funnel breakdowns per schema or run.' },\n { id: 'provenance', title: 'Provenance API', description: 'Per-cell audit trails showing tier, strategy, sub-move, confidence score, and reasoning trace for every value in a record.' },\n { id: 'jobs', title: 'Jobs API', description: 'Track asynchronous extraction jobs with progress, phase status, and grid fill rate statistics.' },\n { id: 'sources', title: 'Inputs API', description: 'Manage document sources for programmatic ingestion. Each source has its own API key and supports batch processing.' },\n { id: 'filter-search', title: 'Filter & Search API', description: 'Field autocomplete, document filtering with composable conditions, global omnisearch, and saved filter management.' },\n { id: 'webhooks', title: 'Webhooks', description: 'Real-time event notifications with HMAC-SHA256 signed payloads, delivery tracking, and exponential backoff retries.' },\n { id: 'resolutions', title: 'Resolutions API', description: 'Resolution runs — apply field normalization, transforms, and lookup cascades to extracted data. List, create, execute, and delete resolution runs.' },\n { id: 'linking', title: 'Linking API', description: 'Document linking graph — link keys, document links, entity graph, classification, backfill operations, and document-case mapping.' },\n { id: 'nshot', title: 'N-Shot API', description: 'N-Shot comparison endpoints for job runs — summary, field comparisons, overrides, and AI/human judge decisions.' },\n { id: 'schema-graph', title: 'Schema Graph API', description: 'Schema class ontology — versioned classes, diffs with approval/rejection workflow, inter-class edges, aliases, and D3-compatible visualization.' },\n { id: 'structuring', title: 'Structuring API', description: 'Validation checks CRUD, approval gates with configurable rules, result check outcomes, pending approvals queue, and delivery triggers.' },\n { id: 'validation', title: 'Validation API', description: 'Golden sample management and validation runs for measuring extraction accuracy against ground truth datasets.' },\n { id: 'credits', title: 'Credits API', description: 'Credit balance, transaction history, aggregate usage summaries, daily usage breakdown, and per-request usage log.' },\n { id: 'agent', title: 'Agent API', description: 'Workspace context snapshot and agent tool discovery endpoints for programmatic access to embedded AI assistant capabilities.' },\n { id: 'matching', title: 'Matching API', description: 'Reference data matching — create configs with weighted field strategies, run matches, get top-5 candidates per document, and AI-generate strategies.' },\n { id: 'delivery', title: 'Delivery API', description: 'Outbound delivery pipeline — destinations, bindings, delivery history, dead letter queue, and catalog discovery for signals, deliverables, serializers, and connectors.' },\n { id: 'batches', title: 'Batches API', description: 'Batch extraction processing at 50% cost — list, get, sync with provider, and cancel batches.' },\n { id: 'cases', title: 'Cases API', description: 'Case management — list, get, anomalies, status lifecycle, edge confirmation, document pinning, merge and split operations.' },\n { id: 'review', title: 'Review API', description: 'Review queue for validation records — list items, stats, take action (approve/reject/flag), batch operations, and assignment.' },\n { id: 'quality', title: 'Quality API', description: 'Ground truth datasets, entries management with CSV import, benchmark runs, per-field accuracy results, and benchmark comparison.' },\n { id: 'routing-rules', title: 'Routing Rules API', description: 'Document routing rules — create, manage, and reorder priority-based rules for automatic document workflow assignment.' },\n { id: 'reference-data', title: 'Reference Data API', description: 'Upload, list, and manage reference data tables used as lookup targets for matching configurations. Supports JSON upload, paginated row access, and CSV export.' },\n { id: 'fields', title: 'Fields API', description: 'Read-only access to the field registry — list fields with filters, cross-schema harmonization analysis, field detail with occurrences, and embedding-based similarity search.' },\n { id: 'usage', title: 'Usage API', description: 'AI token usage tracking — aggregate stats by operation type and model, per-document usage breakdown with cost estimates.' },\n { id: 'document-types', title: 'Document Types API', description: 'Document type classification — list workspace document types by frequency and retrieve the 529-type ontology taxonomy.' },\n { id: 'registry', title: 'Registry API', description: 'Query previously-extracted field values across all documents — ingest once, query forever. Zero re-extraction, zero AI calls.' },\n { id: 'billing', title: 'Billing API', description: 'Billing settings, auto top-up for AI agents, and cost response headers on extraction requests.' },\n { id: 'errors-rate-limits', title: 'Errors & Rate Limits', description: 'Error response format, error codes, rate limit tiers by plan, and rate limit headers.' },\n];\n\nexport const PLATFORM_SECTION_META: SectionMeta[] = [\n { id: 'overview', title: 'Platform Overview', description: 'Core concepts, platform flow, and getting started guide for the Talonic document structuring platform.' },\n { id: 'agent', title: 'AI Agent', description: 'Embedded AI assistant accessible via Cmd+I from any page. Inspects schemas, searches documents, analyzes extraction quality, explores cases, and builds schemas through natural language.' },\n { id: 'sources-docs', title: 'Inputs & Documents', description: 'Upload documents via drag-and-drop, API, or connectors. 25+ formats supported with automatic OCR and classification.' },\n { id: 'field-intelligence', title: 'Field Intelligence', description: 'Unified field registry with tier system, semantic clustering, and AI-synthesized master extraction instructions.' },\n { id: 'schemas-templates', title: 'Schemas & Templates', description: 'AI-generated schemas per document type and user-defined templates with field matching, reference tables, and versioning.' },\n { id: 'structuring', title: 'Structuring', description: 'Vocabulary-driven structuring system with seven field strategies, four processing tiers, capture sub-moves, modifiers, constraints, and synthesize fallback.' },\n { id: 'extraction-jobs', title: 'Extraction Jobs', description: 'The 4-phase pipeline: Resolve, Agent, Validation, Re-read. Progressive grid filling with per-cell provenance and confidence.' },\n { id: 'linking-cases', title: 'Linking & Cases', description: 'Document linking discovers relationships through shared entities. Related documents grouped into cases with evidence chains.' },\n { id: 'batch-inference', title: 'Batch Inference', description: 'Batch processing mode defers Claude extraction to the provider batch API at 50% cost with 48-hour delivery. Monitor batch progress and results.' },\n { id: 'matching', title: 'Smart Matching', description: 'Upload reference datasets and configure weighted field-to-field matching strategies. Run matches asynchronously and review top-5 candidates per document.' },\n { id: 'data-products', title: 'Data Products', description: 'Dataset templates for reusable output specifications and assemblies for combining multi-source documents into structured datasets.' },\n { id: 'validation-quality', title: 'Validation & Quality', description: 'Automated validation checks, golden sample benchmarking, configurable approval gates, and a manual review queue for flagged results.' },\n { id: 'delivery', title: 'Outputs & Delivery', description: 'Push structured data to webhooks, REST APIs, SFTP, email, or cloud storage with field mappings, triggers, delivery configuration, and telemetry.' },\n { id: 'workspace-settings', title: 'Workspace Settings', description: 'Shared dialects for output formatting, reference primitives for lookup tables, and change review governance for production workspaces.' },\n { id: 'search-filtering', title: 'Search & Filtering', description: 'Global omnisearch (Cmd+K) and advanced document filtering by extracted field values with saved presets.' },\n { id: 'api-webhooks', title: 'API & Webhooks', description: 'API key management, public REST API overview, and webhook configuration for event-driven integrations.' },\n { id: 'team-admin', title: 'Team & Admin', description: 'Role-based access control, credit usage tracking, admin panel, and keyboard shortcuts.' },\n];\n\n// ---------------------------------------------------------------------------\n// OpenAPI spec (full spec from openapi.json, bundled at build time by tsup)\n//\n// Consumers import it unchanged:\n// import { OPENAPI_SPEC } from '@talonic/docs/seo'\n//\n// Or import the raw JSON directly:\n// import spec from '@talonic/docs/openapi.json'\n// ---------------------------------------------------------------------------\n\n// Loaded at build time by tsup (esbuild json loader). The 440KB spec is\n// bundled into seo.js so consumers get it as a plain import with no I/O.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore — JSON import handled by esbuild at build time\nimport _openapiSpec from '../openapi.json';\nexport const OPENAPI_SPEC: Record<string, unknown> = _openapiSpec as Record<string, unknown>;\n\n// ---------------------------------------------------------------------------\n// FAQ data (for JSON-LD FAQPage schema)\n// ---------------------------------------------------------------------------\n\nexport const API_FAQ = [\n { question: 'What file formats does the Talonic API support?', answer: 'PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, XLSM, PNG, JPG, JPEG, GIF, WEBP, TXT, MD, HTML, XML, JSON, EML, CSV, MSG, BMP, and ZIP archives.' },\n { question: 'How does authentication work?', answer: 'All API requests require a Bearer token in the Authorization header. API keys carry the tlnc_ prefix and are scoped to a source. Create and manage keys from Settings → API Keys.' },\n { question: 'What schema formats are supported?', answer: 'Three formats: JSON Schema (full control), simplified fields (recommended), and flat key-type maps (quick prototyping). Supported types: string, number, integer, boolean, date, array, object, enum.' },\n { question: 'What are the rate limits?', answer: 'Per-key rate limits: 100 req/s extraction, 1,000 req/s read, 200 req/s write. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included on every response.' },\n { question: 'How do webhooks work?', answer: 'Webhooks deliver POST requests with HMAC-SHA256 signed JSON payloads. Events: extraction.complete, extraction.failed, document.ingested. Failed deliveries retry with exponential backoff (1min, 5min, 30min, 4hr).' },\n { question: 'Can I extract data asynchronously?', answer: 'Yes. Set async: true or provide a webhook_url in the extract request. Returns a 202 with a job ID that you can poll at /v1/jobs/:id.' },\n];\n\n// ---------------------------------------------------------------------------\n// SDK navigation sections\n// ---------------------------------------------------------------------------\n\nexport const SDK_NAV_SECTIONS: NavSection[] = [\n { id: 'sdk-overview', label: 'Overview', children: [\n { id: 'sdk-introduction', label: 'Introduction' },\n { id: 'sdk-installation', label: 'Installation' },\n { id: 'sdk-authentication', label: 'Authentication' },\n { id: 'sdk-quickstart', label: 'Quick Start' },\n ]},\n { id: 'sdk-client', label: 'Client', children: [\n { id: 'sdk-configuration', label: 'Configuration' },\n { id: 'sdk-extract', label: 'Extract' },\n ]},\n { id: 'sdk-resources', label: 'Resources', children: [\n { id: 'sdk-documents', label: 'Documents' },\n { id: 'sdk-extractions', label: 'Extractions' },\n { id: 'sdk-schemas', label: 'Schemas' },\n { id: 'sdk-jobs', label: 'Jobs' },\n ]},\n { id: 'sdk-cli', label: 'CLI', children: [\n { id: 'sdk-cli-usage', label: 'Usage' },\n ]},\n { id: 'sdk-errors', label: 'Error Handling', children: [\n { id: 'sdk-error-classes', label: 'Error Classes' },\n { id: 'sdk-retries', label: 'Retries' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// MCP navigation sections\n// ---------------------------------------------------------------------------\n\nexport const MCP_NAV_SECTIONS: NavSection[] = [\n { id: 'mcp-overview', label: 'Overview', children: [\n { id: 'mcp-introduction', label: 'Introduction' },\n { id: 'mcp-installation', label: 'Installation' },\n { id: 'mcp-authentication', label: 'Authentication' },\n ]},\n { id: 'mcp-clients', label: 'Client Setup', children: [\n { id: 'mcp-claude-desktop', label: 'Claude Desktop' },\n { id: 'mcp-cursor', label: 'Cursor' },\n { id: 'mcp-cline', label: 'Cline' },\n { id: 'mcp-continue', label: 'Continue' },\n { id: 'mcp-cowork', label: 'Cowork' },\n ]},\n { id: 'mcp-tools', label: 'Tools', children: [\n { id: 'mcp-talonic-extract', label: 'talonic_extract' },\n { id: 'mcp-talonic-search', label: 'talonic_search' },\n { id: 'mcp-talonic-filter', label: 'talonic_filter' },\n { id: 'mcp-talonic-get-document', label: 'talonic_get_document' },\n { id: 'mcp-talonic-to-markdown', label: 'talonic_to_markdown' },\n { id: 'mcp-talonic-list-schemas', label: 'talonic_list_schemas' },\n { id: 'mcp-talonic-save-schema', label: 'talonic_save_schema' },\n ]},\n { id: 'mcp-resources', label: 'Resources', children: [\n { id: 'mcp-schemas-resource', label: 'talonic://schemas' },\n ]},\n { id: 'mcp-advanced', label: 'Advanced', children: [\n { id: 'mcp-drag-drop', label: 'Drag & Drop in Chat' },\n { id: 'mcp-architecture', label: 'Architecture' },\n { id: 'mcp-configuration', label: 'Configuration' },\n { id: 'mcp-troubleshooting', label: 'Troubleshooting' },\n ]},\n];\n\n// ---------------------------------------------------------------------------\n// SDK + MCP section SEO metadata\n// ---------------------------------------------------------------------------\n\nexport const SDK_SECTION_META: SectionMeta[] = [\n { id: 'sdk-overview', title: 'Node SDK Overview', description: 'Install and configure the official Talonic Node.js SDK. Extract structured data from any document with a single function call.' },\n { id: 'sdk-client', title: 'SDK Client', description: 'Configure the Talonic client with API key, base URL, timeout, retries, and custom fetch. Top-level extract method for single-call extraction.' },\n { id: 'sdk-resources', title: 'SDK Resources', description: 'Documents, extractions, schemas, and jobs resource APIs in the Talonic Node SDK.' },\n { id: 'sdk-cli', title: 'SDK CLI', description: 'The talonic CLI binary for command-line extraction, schema management, and document operations.' },\n { id: 'sdk-errors', title: 'SDK Error Handling', description: 'Typed error classes, automatic retries with exponential backoff, and rate limit handling in the Talonic Node SDK.' },\n];\n\nexport const MCP_SECTION_META: SectionMeta[] = [\n { id: 'mcp-overview', title: 'MCP Server Overview', description: 'Install the official Talonic MCP server to give AI agents structured document extraction via the Model Context Protocol.' },\n { id: 'mcp-clients', title: 'MCP Client Setup', description: 'Step-by-step setup for Claude Desktop, Cursor, Cline, Continue, and Cowork MCP clients.' },\n { id: 'mcp-tools', title: 'MCP Tools', description: 'Seven MCP tools: extract, search, filter, get document, to markdown, list schemas, and save schema.' },\n { id: 'mcp-resources', title: 'MCP Resources', description: 'The talonic://schemas MCP resource for browsing saved schemas in compatible clients.' },\n { id: 'mcp-advanced', title: 'MCP Advanced', description: 'Drag-and-drop file handling, architecture overview, configuration options, and troubleshooting for the Talonic MCP server.' },\n];\n\nexport const SDK_FAQ = [\n { question: 'How do I install the Talonic Node SDK?', answer: 'Run npm install @talonic/node. Requires Node.js 18 or newer. Zero runtime dependencies.' },\n { question: 'How do I extract data from a document with the SDK?', answer: 'Call talonic.extract() with a file_path (or file_url/buffer) and a schema defining the fields you want. Returns structured JSON with confidence scores.' },\n { question: 'Does the SDK retry on errors?', answer: 'Yes. The SDK retries automatically on 429, 500, 502, 503, 504, network errors, and timeouts with exponential backoff capped at 16s. The API can mark errors as non-retryable.' },\n { question: 'What error types does the SDK throw?', answer: 'TalonicAuthError (401/403), TalonicNotFoundError (404), TalonicValidationError (400/409/413/422), TalonicRateLimitError (429), TalonicServerError (5xx), TalonicNetworkError, and TalonicTimeoutError.' },\n];\n\nexport const MCP_FAQ = [\n { question: 'What is the Talonic MCP server?', answer: 'An official Model Context Protocol server that gives AI agents seven tools for document extraction, search, filtering, and schema management via the Talonic API.' },\n { question: 'How do I install the Talonic MCP server?', answer: 'Add a one-line npx invocation to your MCP client config: {\"command\": \"npx\", \"args\": [\"-y\", \"@talonic/mcp@latest\"], \"env\": {\"TALONIC_API_KEY\": \"tlnc_...\"}}. No clone or build required.' },\n { question: 'Which MCP clients are supported?', answer: 'Claude Desktop, Cursor, Cline, Continue, and Cowork. Any MCP-compliant client can connect.' },\n { question: 'How does file upload work in chat clients?', answer: 'From v0.1.4, agents can pass file_data (base64) + filename instead of a file path. This handles drag-and-drop in sandboxed chat clients like Claude Desktop.' },\n];\n\nexport const PLATFORM_FAQ = [\n { question: 'What is the Field Registry?', answer: 'The unified knowledge graph of all canonical fields discovered across documents. Fields are organized into three tiers based on frequency: Tier 1 (core), Tier 2 (established), Tier 3 (emerging).' },\n { question: 'How does the 4-phase extraction pipeline work?', answer: 'Phase 1 (Resolve) fills ~30% of cells from graph matches — no AI needed. Phase 2 (Agent) uses AI strategies. Phase 3 (Validation) runs cross-field checks. Phase 4 (Re-read) fills remaining gaps with targeted document re-reading.' },\n { question: 'What are cases in Talonic?', answer: 'Cases are groups of 2+ documents connected through shared entities (names, reference numbers, project codes). They are automatically discovered by the linking pipeline and include evidence chains and AI narration.' },\n { question: 'How does the confidence gate work?', answer: 'Once a cell is filled with confidence ≥ 0.7, no later pipeline phase can overwrite it. This prevents high-confidence lookup results (0.95) from being replaced by lower-confidence agent extractions (0.65).' },\n { question: 'What file formats are supported?', answer: '25+ formats across three paths: text fast-path (TXT, MD, HTML, JSON, CSV), AI Vision (PNG, JPG, GIF, WEBP), and OCR (PDF, DOCX, PPTX, XLSX, MSG, BMP). ZIP archives are unpacked automatically.' },\n];\n\n// ---------------------------------------------------------------------------\n// llms.txt content (plain text summary for AI agents)\n// ---------------------------------------------------------------------------\n\nexport const LLMS_TXT = `# Talonic\n\n> The data registry for unstructured documents. Agents extract once, query forever. 529 document types, 25+ file formats, per-cell provenance. Co-author of DIN SPEC 91491.\n\n## For Agents\n\n- [MCP Server](https://mcp.talonic.com/mcp): Hosted MCP endpoint — zero install, native Model Context Protocol\n- [MCP Setup Guide](https://talonic.com/docs/mcp): Claude Desktop, Cursor, Cline, Continue, Cowork configuration\n- [Cost Headers](https://talonic.com/developers#billing): X-Talonic-Cost-Credits and X-Talonic-Balance-Credits on every response\n- [Credit Balance & Runway](https://talonic.com/docs/api/credits): GET /v1/credits/balance — check remaining budget before calls\n- [Idempotency-Key](https://talonic.com/docs/api#idempotency): Safe retries — pass Idempotency-Key header to deduplicate requests\n- [Auto Top-Up](https://talonic.com/developers#billing): Human-gated credit replenishment — agents can check, humans approve\n- [Sync/Async Contract](https://talonic.com/docs/api/extract): ≤5 pages → 200 sync response; larger → 202 with poll_url\n\n## Three Modes\n\n- [Mode 1 — Extract Everything](https://talonic.com/developers#trio): POST /v1/extract with no schema — discover all fields in any document\n- [Mode 2 — Extract a Shape](https://talonic.com/developers#trio): POST /v1/extract with a schema — get exactly the fields you define\n- [Mode 3 — Query Without Re-extracting](https://talonic.com/developers#trio): POST /v1/documents/filter — query the Field Registry across previously extracted documents\n\n## API Quickstart\n\n- [Getting Started](https://talonic.com/docs/getting-started): Authentication, first extraction, schema creation\n- [POST /v1/extract](https://talonic.com/docs/api/extract): Primary extraction endpoint — sync, async, and batch modes\n- [Documents](https://talonic.com/docs/api/documents): List, retrieve, delete documents and get markdown\n- [Extractions](https://talonic.com/docs/api/extractions): Query extraction results and submit corrections\n- [Schemas](https://talonic.com/docs/api/schemas): Create, update, list, and delete extraction schemas\n- [Jobs](https://talonic.com/docs/api/jobs): Track async extraction jobs and results\n- [Webhooks](https://talonic.com/docs/api/webhooks): Event-driven flow — HMAC-SHA256 signed, exponential backoff retries\n- [Search & Filter](https://talonic.com/docs/api/search): Omnisearch, document filtering, field autocomplete\n- [OpenAPI 3.1 Spec](https://talonic.com/openapi.json): Machine-readable API specification\n\n## Concepts\n\n- [Field Registry](https://talonic.com/docs/concepts/field-registry): Unified knowledge graph of all extracted fields — tiers, clusters, master instructions\n- [Provenance & Confidence](https://talonic.com/docs/concepts/provenance): Per-cell confidence scores (0.0–1.0), resolution types, reasoning traces\n- [Cases & Document Linking](https://talonic.com/docs/concepts/cases): Entity matching, case formation, evidence chains\n- [4-Phase Pipeline](https://talonic.com/docs/concepts/pipeline): Resolve → Agent → Validation → Re-read\n- [Document Ontology](https://talonic.com/docs/concepts/ontology): 529-type classification across 10 categories\n- [Schemas](https://talonic.com/docs/concepts/schemas): Generated schemas vs. user templates, field matching, versioning\n\n## SDKs\n\n- [Node SDK](https://talonic.com/docs/sdk): Official Node.js/TypeScript SDK — extract, documents, schemas, jobs\n- [MCP Server Docs](https://talonic.com/docs/mcp): 7 tools — extract, search, filter, get_document, to_markdown, list_schemas, save_schema\n- [Authentication](https://talonic.com/docs/authentication): API key creation, scopes, Bearer token usage\n- [Error Codes](https://talonic.com/docs/errors): Error response format and code reference\n- [Rate Limits](https://talonic.com/docs/rate-limits): Rate limit tiers by plan and headers\n\n## Platform Guide\n\n- [Platform Overview](https://talonic.com/docs/platform): Core concepts, platform flow, supported formats\n- [Field Intelligence](https://talonic.com/docs/platform/tier-system): Tier system, semantic clusters, master instructions\n- [Schemas & Templates](https://talonic.com/docs/platform/generated-schemas): Schema creation, field matching, versioning, dialects\n- [Extraction Jobs](https://talonic.com/docs/platform/creating-job): Creating jobs, reviewing results, confidence and provenance\n- [Linking & Cases](https://talonic.com/docs/platform/entity-linking): Entity linking, link keys, cases, anomaly detection\n- [Validation & Quality](https://talonic.com/docs/platform/validation-checks): Golden samples, approval gates, ground truth benchmarks\n- [Delivery](https://talonic.com/docs/platform/destinations): Webhooks, REST, SFTP, email, S3/R2, field mappings, triggers\n\n## Document Types\n\n- [Financial & Tax](https://talonic.com/document-types/financial-tax): Schedule K-1, VAT Returns, Balance Sheets, SWIFT MT103, and 49 more\n- [Procurement & Invoicing](https://talonic.com/document-types/procurement-invoicing): Purchase Orders, Commercial Invoices, RFPs, and 50 more\n- [Trade & Logistics](https://talonic.com/document-types/trade-logistics): Bills of Lading, Air Waybills, Customs Declarations, and 50 more\n- [Legal & Contracts](https://talonic.com/document-types/legal-contracts): NDAs, MSAs, Loan Agreements, DPAs, and 48 more\n- [Corporate & Governance](https://talonic.com/document-types/corporate-governance): KYC Packages, Board Resolutions, ESG Reports, and 50 more\n- [Healthcare & Life Sciences](https://talonic.com/document-types/healthcare-life-sciences): Discharge Summaries, Clinical Trials, 510(k), and 50 more\n- [Manufacturing & Quality](https://talonic.com/document-types/manufacturing-quality): Certificates of Analysis, FMEA, BOM, PPAP, and 49 more\n- [Insurance & Claims](https://talonic.com/document-types/insurance-claims): FNOL Reports, Policy Declarations, Reinsurance, and 50 more\n- [Real Estate & Construction](https://talonic.com/document-types/real-estate-construction): Property Deeds, AIA G702, Lien Waivers, and 50 more\n- [HR & Employee Records](https://talonic.com/document-types/hr-employee-records): I-9 Forms, FMLA Certifications, Payroll Registers, and 49 more\n\n## Company\n\n- [Product](https://talonic.com/product): Full platform walkthrough for technical evaluation\n- [Pricing](https://talonic.com/pricing): Free (5,000 credits/mo), Pro (€49/mo), Enterprise (custom)\n- [Developers](https://talonic.com/developers): Three Modes, API, SDK, MCP server overview\n- [DIN SPEC 91491](https://talonic.com/din-91491): Europe's first standard for AI-ready data\n- [Security](https://talonic.com/security): GDPR, HIPAA, ISO 27001, ISO 42001, EU data residency\n- [Contact](https://talonic.com/contact): Book a demo or request a schema audit\n\n## Optional\n\n- [Full Documentation for AI Models](https://talonic.com/llms-full.txt): Concatenated full reference — API, platform, pricing, compliance\n- [Talonic vs Reducto](https://talonic.com/vs/reducto): Schema-first vs. parse-first comparison\n- [Talonic vs Instabase](https://talonic.com/vs/instabase): Platform architecture comparison\n`;\n\nexport const LLMS_FULL_TXT_HEADER = `# Talonic — Full Documentation\n\n> This file contains the complete Talonic documentation for LLM consumption.\n> For a summary, see llms.txt.\n\n`;\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","useCallback","jsx","jsxs","useState","useCallback","useState","useEffect","useRef","useCallback","jsx","jsxs","NAV_SECTIONS","useState","useRef","useEffect","useCallback"]}
|