@talonic/docs 0.6.2 → 0.8.0

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/seo.js CHANGED
@@ -57,6 +57,77 @@ var API_NAV_SECTIONS = [
57
57
  { id: "webhook-verification", label: "Signature Verification" },
58
58
  { id: "webhook-retries", label: "Retry Policy" }
59
59
  ] },
60
+ { id: "resolutions", label: "Resolutions", children: [
61
+ { id: "list-resolutions", label: "List Resolutions" },
62
+ { id: "create-resolution", label: "Create Resolution" },
63
+ { id: "get-resolution", label: "Get Resolution" },
64
+ { id: "get-resolution-results", label: "Get Results" },
65
+ { id: "execute-resolution", label: "Execute Resolution" },
66
+ { id: "delete-resolution", label: "Delete Resolution" }
67
+ ] },
68
+ { id: "linking", label: "Linking", children: [
69
+ { id: "list-link-keys", label: "Link Keys" },
70
+ { id: "get-document-links", label: "Document Links" },
71
+ { id: "get-linking-graph", label: "Full Graph" },
72
+ { id: "get-document-graph", label: "Document Graph" },
73
+ { id: "classify-link-keys", label: "Classify" },
74
+ { id: "backfill-linking", label: "Backfill" },
75
+ { id: "backfill-progress", label: "Backfill Progress" },
76
+ { id: "document-case-map", label: "Document-Case Map" }
77
+ ] },
78
+ { id: "nshot", label: "N-Shot", children: [
79
+ { id: "nshot-summary", label: "Summary" },
80
+ { id: "nshot-comparisons", label: "Comparisons" },
81
+ { id: "nshot-comparison", label: "Single Comparison" },
82
+ { id: "nshot-override", label: "Override" },
83
+ { id: "nshot-judge-decision", label: "Judge Decision" }
84
+ ] },
85
+ { id: "schema-graph", label: "Schema Graph", children: [
86
+ { id: "list-schema-graph-classes", label: "List Classes" },
87
+ { id: "get-schema-graph-class", label: "Get Class" },
88
+ { id: "list-class-versions", label: "List Versions" },
89
+ { id: "get-class-version", label: "Get Version" },
90
+ { id: "list-schema-graph-diffs", label: "List Diffs" },
91
+ { id: "approve-diff", label: "Approve Diff" },
92
+ { id: "reject-diff", label: "Reject Diff" },
93
+ { id: "list-schema-graph-edges", label: "Edges" },
94
+ { id: "list-schema-graph-aliases", label: "Aliases" },
95
+ { id: "visualize-schema-graph", label: "Visualize" }
96
+ ] },
97
+ { id: "structuring", label: "Structuring", children: [
98
+ { id: "list-structuring-checks", label: "List Checks" },
99
+ { id: "create-structuring-check", label: "Create Check" },
100
+ { id: "get-structuring-check", label: "Get / Update / Delete Check" },
101
+ { id: "list-structuring-gates", label: "List Gates" },
102
+ { id: "create-structuring-gate", label: "Create Gate" },
103
+ { id: "get-structuring-gate", label: "Get / Update / Delete Gate" },
104
+ { id: "gate-rules", label: "Gate Rules" },
105
+ { id: "result-checks", label: "Result Checks" },
106
+ { id: "pending-approvals", label: "Pending Approvals" },
107
+ { id: "approve-reject-result", label: "Approve / Reject Result" },
108
+ { id: "trigger-delivery", label: "Trigger Delivery" }
109
+ ] },
110
+ { id: "telemetry", label: "Telemetry", children: [
111
+ { id: "schema-telemetry-summary", label: "Schema Summary" },
112
+ { id: "schema-telemetry-trend", label: "Schema Trend" },
113
+ { id: "schema-telemetry-fields", label: "Schema Fields" },
114
+ { id: "run-telemetry-summary", label: "Run Summary" }
115
+ ] },
116
+ { id: "validation", label: "Validation", children: [
117
+ { id: "list-golden-samples", label: "List Golden Samples" },
118
+ { id: "get-golden-sample", label: "Get / Delete Golden Sample" },
119
+ { id: "list-validation-runs", label: "List Validation Runs" },
120
+ { id: "create-validation-run", label: "Create Validation Run" },
121
+ { id: "get-validation-run", label: "Get / Delete Validation Run" },
122
+ { id: "get-validation-results", label: "Validation Results" }
123
+ ] },
124
+ { id: "credits", label: "Credits", children: [
125
+ { id: "credits-balance", label: "Balance" },
126
+ { id: "credits-history", label: "History" },
127
+ { id: "credits-usage", label: "Usage Summary" },
128
+ { id: "credits-usage-daily", label: "Daily Usage" },
129
+ { id: "credits-usage-log", label: "Usage Log" }
130
+ ] },
60
131
  { id: "errors-rate-limits", label: "Errors & Rate Limits", children: [
61
132
  { id: "error-format", label: "Error Format" },
62
133
  { id: "error-codes", label: "Error Codes" },
@@ -156,6 +227,13 @@ var API_SECTION_META = [
156
227
  { id: "sources", title: "Inputs API", description: "Manage document sources for programmatic ingestion. Each source has its own API key and supports batch processing." },
157
228
  { id: "filter-search", title: "Filter & Search API", description: "Field autocomplete, document filtering with composable conditions, global omnisearch, and saved filter management." },
158
229
  { id: "webhooks", title: "Webhooks", description: "Real-time event notifications with HMAC-SHA256 signed payloads, delivery tracking, and exponential backoff retries." },
230
+ { id: "resolutions", title: "Resolutions API", description: "Resolution runs \u2014 apply field normalization, transforms, and lookup cascades to extracted data. List, create, execute, and delete resolution runs." },
231
+ { id: "linking", title: "Linking API", description: "Document linking graph \u2014 link keys, document links, entity graph, classification, backfill operations, and document-case mapping." },
232
+ { id: "nshot", title: "N-Shot API", description: "N-Shot comparison endpoints for job runs \u2014 summary, field comparisons, overrides, and AI/human judge decisions." },
233
+ { id: "schema-graph", title: "Schema Graph API", description: "Schema class ontology \u2014 versioned classes, diffs with approval/rejection workflow, inter-class edges, aliases, and D3-compatible visualization." },
234
+ { id: "structuring", title: "Structuring API", description: "Validation checks CRUD, approval gates with configurable rules, result check outcomes, pending approvals queue, and delivery triggers." },
235
+ { id: "validation", title: "Validation API", description: "Golden sample management and validation runs for measuring extraction accuracy against ground truth datasets." },
236
+ { id: "credits", title: "Credits API", description: "Credit balance, transaction history, aggregate usage summaries, daily usage breakdown, and per-request usage log." },
159
237
  { id: "errors-rate-limits", title: "Errors & Rate Limits", description: "Error response format, error codes, rate limit tiers by plan, and rate limit headers." }
160
238
  ];
161
239
  var PLATFORM_SECTION_META = [
@@ -272,6 +350,265 @@ var OPENAPI_SPEC = {
272
350
  "/v1/sources/{id}/documents": {
273
351
  get: { operationId: "listSourceDocuments", summary: "List documents in a source", tags: ["Sources"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Paginated documents" } } },
274
352
  post: { operationId: "ingestDocument", summary: "Ingest a document into a source", tags: ["Sources"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Ingested document" } } }
353
+ },
354
+ // Resolutions
355
+ "/v1/resolutions": {
356
+ get: { operationId: "listResolutions", summary: "List resolution runs", tags: ["Resolutions"], responses: { "200": { description: "Paginated list of resolution runs" } } },
357
+ post: { operationId: "createResolution", summary: "Create a resolution run", tags: ["Resolutions"], responses: { "201": { description: "Resolution run created" } } }
358
+ },
359
+ "/v1/resolutions/{id}": {
360
+ get: { operationId: "getResolution", summary: "Get a resolution run", tags: ["Resolutions"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Resolution run detail" } } },
361
+ delete: { operationId: "deleteResolution", summary: "Delete a resolution run", tags: ["Resolutions"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Resolution run deleted" } } }
362
+ },
363
+ "/v1/resolutions/{id}/results": {
364
+ get: { operationId: "getResolutionResults", summary: "Get resolution run results", tags: ["Resolutions"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Resolution results" } } }
365
+ },
366
+ "/v1/resolutions/{id}/execute": {
367
+ post: { operationId: "executeResolution", summary: "Execute a resolution run", tags: ["Resolutions"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Resolution execution started" } } }
368
+ },
369
+ // Linking
370
+ "/v1/linking/link-keys": {
371
+ get: { operationId: "listLinkKeys", summary: "List link keys", tags: ["Linking"], responses: { "200": { description: "List of link keys" } } }
372
+ },
373
+ "/v1/linking/documents/{id}/links": {
374
+ get: { operationId: "getDocumentLinks", summary: "Get links for a document", tags: ["Linking"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Document links" } } }
375
+ },
376
+ "/v1/linking/graph": {
377
+ get: { operationId: "getLinkingGraph", summary: "Get the full linking graph", tags: ["Linking"], responses: { "200": { description: "Full linking graph" } } }
378
+ },
379
+ "/v1/linking/graph/documents/{id}": {
380
+ get: { operationId: "getDocumentGraph", summary: "Get graph neighbourhood for a document", tags: ["Linking"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Document-centric subgraph" } } }
381
+ },
382
+ "/v1/linking/classify": {
383
+ post: { operationId: "classifyLinkKeys", summary: "Classify link keys", tags: ["Linking"], responses: { "200": { description: "Classification results" } } }
384
+ },
385
+ "/v1/linking/backfill": {
386
+ post: { operationId: "backfillLinking", summary: "Backfill linking data", tags: ["Linking"], responses: { "202": { description: "Backfill started" } } }
387
+ },
388
+ "/v1/linking/backfill/progress": {
389
+ get: { operationId: "getBackfillProgress", summary: "Get backfill progress", tags: ["Linking"], responses: { "200": { description: "Backfill progress" } } }
390
+ },
391
+ "/v1/linking/document-case-map": {
392
+ get: { operationId: "getDocumentCaseMap", summary: "Get document-to-case mapping", tags: ["Linking"], responses: { "200": { description: "Document-case mapping" } } }
393
+ },
394
+ // N-Shot
395
+ "/v1/jobs/runs/{runId}/nshot/summary": {
396
+ get: { operationId: "getNshotSummary", summary: "Get N-Shot summary for a run", tags: ["N-Shot"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "N-Shot summary" } } }
397
+ },
398
+ "/v1/jobs/runs/{runId}/nshot/comparisons": {
399
+ get: { operationId: "listNshotComparisons", summary: "List N-Shot comparisons", tags: ["N-Shot"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "List of comparisons" } } }
400
+ },
401
+ "/v1/jobs/runs/{runId}/nshot/comparison": {
402
+ get: { operationId: "getNshotComparison", summary: "Get a specific N-Shot comparison", tags: ["N-Shot"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Single comparison result" } } }
403
+ },
404
+ "/v1/jobs/runs/{runId}/nshot/override": {
405
+ post: { operationId: "nshotOverride", summary: "Override an N-Shot value", tags: ["N-Shot"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Override applied" } } }
406
+ },
407
+ "/v1/jobs/runs/{runId}/nshot/judge-decision": {
408
+ post: { operationId: "nshotJudgeDecision", summary: "Submit a judge decision for N-Shot", tags: ["N-Shot"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Judge decision recorded" } } }
409
+ },
410
+ // Schema Graph
411
+ "/v1/schema-graph/classes": {
412
+ get: { operationId: "listSchemaGraphClasses", summary: "List schema graph classes", tags: ["Schema Graph"], responses: { "200": { description: "List of schema graph classes" } } }
413
+ },
414
+ "/v1/schema-graph/classes/{id}": {
415
+ get: { operationId: "getSchemaGraphClass", summary: "Get a schema graph class", tags: ["Schema Graph"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Schema graph class detail" } } }
416
+ },
417
+ "/v1/schema-graph/classes/{id}/versions": {
418
+ get: { operationId: "listSchemaGraphClassVersions", summary: "List versions of a schema graph class", tags: ["Schema Graph"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "List of class versions" } } }
419
+ },
420
+ "/v1/schema-graph/classes/{id}/versions/{version}": {
421
+ get: { operationId: "getSchemaGraphClassVersion", summary: "Get a specific class version", tags: ["Schema Graph"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }, { name: "version", in: "path", required: true, schema: { type: "integer" } }], responses: { "200": { description: "Class version detail" } } }
422
+ },
423
+ "/v1/schema-graph/diffs": {
424
+ get: { operationId: "listSchemaGraphDiffs", summary: "List schema graph diffs", tags: ["Schema Graph"], responses: { "200": { description: "List of diffs" } } }
425
+ },
426
+ "/v1/schema-graph/diffs/{id}/approve": {
427
+ post: { operationId: "approveSchemaGraphDiff", summary: "Approve a schema graph diff", tags: ["Schema Graph"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Diff approved" } } }
428
+ },
429
+ "/v1/schema-graph/diffs/{id}/reject": {
430
+ post: { operationId: "rejectSchemaGraphDiff", summary: "Reject a schema graph diff", tags: ["Schema Graph"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Diff rejected" } } }
431
+ },
432
+ "/v1/schema-graph/edges": {
433
+ get: { operationId: "listSchemaGraphEdges", summary: "List schema graph edges", tags: ["Schema Graph"], responses: { "200": { description: "List of edges" } } }
434
+ },
435
+ "/v1/schema-graph/aliases": {
436
+ get: { operationId: "listSchemaGraphAliases", summary: "List schema graph aliases", tags: ["Schema Graph"], responses: { "200": { description: "List of aliases" } } }
437
+ },
438
+ "/v1/schema-graph/visualize": {
439
+ get: { operationId: "visualizeSchemaGraph", summary: "Get schema graph visualization data", tags: ["Schema Graph"], responses: { "200": { description: "Visualization data" } } }
440
+ },
441
+ // Structuring
442
+ "/v1/structuring/checks": {
443
+ get: { operationId: "listStructuringChecks", summary: "List structuring checks", tags: ["Structuring"], responses: { "200": { description: "Paginated list of structuring checks" } } },
444
+ post: { operationId: "createStructuringCheck", summary: "Create a structuring check", tags: ["Structuring"], responses: { "201": { description: "Structuring check created" } } }
445
+ },
446
+ "/v1/structuring/checks/{id}": {
447
+ get: { operationId: "getStructuringCheck", summary: "Get a structuring check", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Structuring check detail" } } },
448
+ put: { operationId: "updateStructuringCheck", summary: "Update a structuring check", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Structuring check updated" } } },
449
+ delete: { operationId: "deleteStructuringCheck", summary: "Delete a structuring check", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Structuring check deleted" } } }
450
+ },
451
+ "/v1/structuring/gates": {
452
+ get: { operationId: "listStructuringGates", summary: "List approval gates", tags: ["Structuring"], responses: { "200": { description: "Paginated list of approval gates" } } },
453
+ post: { operationId: "createStructuringGate", summary: "Create an approval gate", tags: ["Structuring"], responses: { "201": { description: "Approval gate created" } } }
454
+ },
455
+ "/v1/structuring/gates/{id}": {
456
+ get: { operationId: "getStructuringGate", summary: "Get an approval gate", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Approval gate detail" } } },
457
+ put: { operationId: "updateStructuringGate", summary: "Update an approval gate", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Approval gate updated" } } },
458
+ delete: { operationId: "deleteStructuringGate", summary: "Delete an approval gate", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Approval gate deleted" } } }
459
+ },
460
+ "/v1/structuring/gates/{id}/rules": {
461
+ post: { operationId: "addStructuringGateRule", summary: "Add a rule to an approval gate", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "201": { description: "Rule added" } } },
462
+ delete: { operationId: "deleteStructuringGateRule", summary: "Remove a rule from an approval gate", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Rule removed" } } }
463
+ },
464
+ "/v1/structuring/results/{id}/checks": {
465
+ get: { operationId: "getStructuringResultChecks", summary: "Get check results for a structuring result", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Check results" } } }
466
+ },
467
+ "/v1/structuring/approvals/pending": {
468
+ get: { operationId: "listPendingApprovals", summary: "List pending approvals", tags: ["Structuring"], responses: { "200": { description: "Paginated list of pending approvals" } } }
469
+ },
470
+ "/v1/structuring/approvals/{id}/approve": {
471
+ post: { operationId: "approveStructuringResult", summary: "Approve a structuring result", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Result approved" } } }
472
+ },
473
+ "/v1/structuring/approvals/{id}/reject": {
474
+ post: { operationId: "rejectStructuringResult", summary: "Reject a structuring result", tags: ["Structuring"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Result rejected" } } }
475
+ },
476
+ "/v1/structuring/delivery/{runId}": {
477
+ post: { operationId: "triggerStructuringDelivery", summary: "Trigger delivery for a structuring run", tags: ["Structuring"], parameters: [{ name: "runId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Delivery triggered" } } }
478
+ },
479
+ // Telemetry
480
+ "/v1/telemetry/schemas/{id}/summary": {
481
+ get: { operationId: "getTelemetrySchemaSummary", summary: "Get telemetry summary for a schema", tags: ["Telemetry"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Schema telemetry summary" } } }
482
+ },
483
+ "/v1/telemetry/schemas/{id}/trend": {
484
+ get: { operationId: "getTelemetrySchemaTrend", summary: "Get telemetry trend for a schema", tags: ["Telemetry"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Schema telemetry trend" } } }
485
+ },
486
+ "/v1/telemetry/schemas/{id}/fields": {
487
+ get: { operationId: "getTelemetrySchemaFields", summary: "Get per-field telemetry for a schema", tags: ["Telemetry"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Per-field telemetry" } } }
488
+ },
489
+ "/v1/telemetry/runs/{id}/summary": {
490
+ get: { operationId: "getTelemetryRunSummary", summary: "Get telemetry summary for a run", tags: ["Telemetry"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Run telemetry summary" } } }
491
+ },
492
+ // Validation
493
+ "/v1/validation/golden-samples": {
494
+ get: { operationId: "listGoldenSamples", summary: "List golden samples", tags: ["Validation"], responses: { "200": { description: "Paginated list of golden samples" } } }
495
+ },
496
+ "/v1/validation/golden-samples/{id}": {
497
+ get: { operationId: "getGoldenSample", summary: "Get a golden sample", tags: ["Validation"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Golden sample detail" } } },
498
+ delete: { operationId: "deleteGoldenSample", summary: "Delete a golden sample", tags: ["Validation"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Golden sample deleted" } } }
499
+ },
500
+ "/v1/validation/runs": {
501
+ get: { operationId: "listValidationRuns", summary: "List validation runs", tags: ["Validation"], responses: { "200": { description: "Paginated list of validation runs" } } },
502
+ post: { operationId: "createValidationRun", summary: "Create a validation run", tags: ["Validation"], responses: { "201": { description: "Validation run created" } } }
503
+ },
504
+ "/v1/validation/runs/{id}": {
505
+ get: { operationId: "getValidationRun", summary: "Get a validation run", tags: ["Validation"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Validation run detail" } } },
506
+ delete: { operationId: "deleteValidationRun", summary: "Delete a validation run", tags: ["Validation"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Validation run deleted" } } }
507
+ },
508
+ "/v1/validation/runs/{id}/results": {
509
+ get: { operationId: "getValidationRunResults", summary: "Get validation run results", tags: ["Validation"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Validation run results" } } }
510
+ },
511
+ // Credits
512
+ "/v1/credits/balance": {
513
+ get: { operationId: "getCreditsBalance", summary: "Get credit balance", tags: ["Credits"], responses: { "200": { description: "Credit balance" } } }
514
+ },
515
+ "/v1/credits/history": {
516
+ get: { operationId: "getCreditsHistory", summary: "Get credit history", tags: ["Credits"], responses: { "200": { description: "Paginated credit history" } } }
517
+ },
518
+ "/v1/credits/usage": {
519
+ get: { operationId: "getCreditsUsage", summary: "Get credit usage summary", tags: ["Credits"], responses: { "200": { description: "Credit usage summary" } } }
520
+ },
521
+ "/v1/credits/usage/daily": {
522
+ get: { operationId: "getCreditsUsageDaily", summary: "Get daily credit usage", tags: ["Credits"], responses: { "200": { description: "Daily credit usage" } } }
523
+ },
524
+ "/v1/credits/usage/log": {
525
+ get: { operationId: "getCreditsUsageLog", summary: "Get credit usage log", tags: ["Credits"], responses: { "200": { description: "Paginated usage log" } } }
526
+ },
527
+ // Expanded: Cases
528
+ "/v1/cases/{key}/status": {
529
+ patch: { operationId: "updateCaseStatus", summary: "Update case status", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Case status updated" } } }
530
+ },
531
+ "/v1/cases/{key}/edges": {
532
+ get: { operationId: "getCaseEdges", summary: "Get case edges", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Case edges" } } }
533
+ },
534
+ "/v1/cases/edges/confirm": {
535
+ post: { operationId: "confirmCaseEdge", summary: "Confirm a case edge", tags: ["Cases"], responses: { "200": { description: "Edge confirmed" } } }
536
+ },
537
+ "/v1/cases/edges/reject": {
538
+ post: { operationId: "rejectCaseEdge", summary: "Reject a case edge", tags: ["Cases"], responses: { "200": { description: "Edge rejected" } } }
539
+ },
540
+ "/v1/cases/{key}/split": {
541
+ post: { operationId: "splitCase", summary: "Split a case", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Case split" } } }
542
+ },
543
+ "/v1/cases/{key}/merge": {
544
+ post: { operationId: "mergeCases", summary: "Merge cases", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Cases merged" } } }
545
+ },
546
+ "/v1/cases/{key}/completeness": {
547
+ get: { operationId: "getCaseCompleteness", summary: "Get case completeness", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Completeness assessment" } } }
548
+ },
549
+ "/v1/cases/{key}/pin": {
550
+ post: { operationId: "pinCaseDocuments", summary: "Pin documents to a case", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Documents pinned" } } }
551
+ },
552
+ "/v1/cases/{key}/documents": {
553
+ delete: { operationId: "removeCaseDocuments", summary: "Remove documents from a case", tags: ["Cases"], parameters: [{ name: "key", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Documents removed" } } }
554
+ },
555
+ // Expanded: Batches
556
+ "/v1/batches/{id}/sync": {
557
+ post: { operationId: "syncBatch", summary: "Sync batch status with provider", tags: ["Batches"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Batch synced" } } }
558
+ },
559
+ "/v1/batches/{id}/cancel": {
560
+ post: { operationId: "cancelBatch", summary: "Cancel a batch inference run", tags: ["Batches"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Batch cancelled" } } }
561
+ },
562
+ // Expanded: Matching
563
+ "/v1/matching/smart-run": {
564
+ post: { operationId: "triggerSmartMatchingRun", summary: "Trigger a smart matching run", tags: ["Matching"], responses: { "201": { description: "Smart matching run queued" } } }
565
+ },
566
+ "/v1/matching/ai-resolve": {
567
+ post: { operationId: "aiResolveMatching", summary: "AI-resolve ambiguous matches", tags: ["Matching"], responses: { "200": { description: "AI resolution results" } } }
568
+ },
569
+ "/v1/matching/strategies": {
570
+ get: { operationId: "listMatchingStrategies", summary: "List matching strategies", tags: ["Matching"], responses: { "200": { description: "List of matching strategies" } } },
571
+ post: { operationId: "createMatchingStrategy", summary: "Create a matching strategy", tags: ["Matching"], responses: { "201": { description: "Matching strategy created" } } }
572
+ },
573
+ "/v1/matching/strategies/{id}": {
574
+ get: { operationId: "getMatchingStrategy", summary: "Get a matching strategy", tags: ["Matching"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Matching strategy detail" } } },
575
+ put: { operationId: "updateMatchingStrategy", summary: "Update a matching strategy", tags: ["Matching"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Matching strategy updated" } } },
576
+ delete: { operationId: "deleteMatchingStrategy", summary: "Delete a matching strategy", tags: ["Matching"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Matching strategy deleted" } } }
577
+ },
578
+ "/v1/matching/runs/{id}/results": {
579
+ get: { operationId: "getMatchingRunResults", summary: "Get matching run results", tags: ["Matching"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Matching run results" } } }
580
+ },
581
+ "/v1/matching/runs/{id}/progress": {
582
+ get: { operationId: "getMatchingRunProgress", summary: "Get matching run progress", tags: ["Matching"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Matching run progress" } } }
583
+ },
584
+ "/v1/matching/review": {
585
+ post: { operationId: "submitMatchingReview", summary: "Submit matching review decisions", tags: ["Matching"], responses: { "200": { description: "Review decisions applied" } } }
586
+ },
587
+ // Expanded: Review
588
+ "/v1/review/assign": {
589
+ post: { operationId: "assignReview", summary: "Assign review records", tags: ["Review"], responses: { "200": { description: "Records assigned" } } }
590
+ },
591
+ "/v1/review/stats": {
592
+ get: { operationId: "getReviewStats", summary: "Get review queue statistics", tags: ["Review"], responses: { "200": { description: "Review statistics" } } }
593
+ },
594
+ // Expanded: Quality
595
+ "/v1/quality/ground-truth/{id}/entries": {
596
+ get: { operationId: "listGroundTruthEntries", summary: "List ground truth entries", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Paginated list of entries" } } },
597
+ post: { operationId: "createGroundTruthEntry", summary: "Add a ground truth entry", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "201": { description: "Entry created" } } }
598
+ },
599
+ "/v1/quality/ground-truth/{id}/entries/{entryId}": {
600
+ put: { operationId: "updateGroundTruthEntry", summary: "Update a ground truth entry", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }, { name: "entryId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Entry updated" } } },
601
+ delete: { operationId: "deleteGroundTruthEntry", summary: "Delete a ground truth entry", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }, { name: "entryId", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Entry deleted" } } }
602
+ },
603
+ "/v1/quality/benchmarks/{id}/results": {
604
+ get: { operationId: "getBenchmarkResults", summary: "Get benchmark results", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Benchmark results" } } }
605
+ },
606
+ "/v1/quality/benchmarks/{id}/compare": {
607
+ get: { operationId: "compareBenchmarks", summary: "Compare two benchmark runs", tags: ["Quality"], parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }], responses: { "200": { description: "Benchmark comparison" } } }
608
+ },
609
+ // Expanded: Reference Data
610
+ "/v1/reference-data/create": {
611
+ post: { operationId: "createReferenceDataJson", summary: "Create reference data from JSON", tags: ["Reference Data"], responses: { "201": { description: "Reference dataset created" } } }
275
612
  }
276
613
  }
277
614
  };
@@ -292,52 +629,147 @@ var PLATFORM_FAQ = [
292
629
  ];
293
630
  var LLMS_TXT = `# Talonic
294
631
 
295
- > Extract any document into schema-validated data with a single API call.
632
+ > AI-powered document structuring platform that turns unstructured files into schema-validated, provenance-tracked structured data.
296
633
 
297
- Talonic is an AI-powered document structuring platform. It ingests unstructured documents (PDFs, scans, images, spreadsheets), discovers fields through semantic clustering, and produces structured datasets with per-cell provenance, confidence scores, and reasoning traces.
634
+ Talonic ingests documents in 25+ formats (PDFs, scans, images, spreadsheets, emails, archives), discovers every data field through AI extraction and semantic clustering, and produces structured datasets with per-cell confidence scores, reasoning traces, and source provenance. It runs a single deployable stack with Postgres + pgvector, Anthropic Claude for extraction, and Mistral Document AI for OCR.
298
635
 
299
- ## Documentation
636
+ ## How It Works
300
637
 
301
- - [API Documentation](https://talonic.com/docs): Complete REST API reference
302
- - [Platform Guide](https://talonic.com/docs/platform): Product documentation and feature guide
303
- - [OpenAPI Spec](https://talonic.com/docs/openapi.json): Machine-readable API specification
638
+ 1. **Upload** \u2014 Drag files/folders into Inputs or ingest via API. ZIP archives unpack automatically. Files are deduplicated via SHA-256 hashing.
639
+ 2. **Extract** \u2014 Each document goes through Document AI OCR (converts to Markdown), classification against a 529-type ontology, and AI field extraction (discovers every data point with confidence and source text).
640
+ 3. **Build Schema** \u2014 Extracted fields resolve into the Field Registry (canonical names, semantic clusters, master instructions). Define a user template selecting the fields you need.
641
+ 4. **Run Job** \u2014 A 4-phase pipeline fills every cell in a documents \xD7 fields grid. ~30% filled instantly from graph matches, ~70% from AI agents.
642
+ 5. **Deliver** \u2014 Push approved data to webhooks, REST APIs, SFTP, email, or S3/R2 cloud storage.
643
+
644
+ ## Sources & Documents
645
+
646
+ Supported formats across three processing paths:
647
+ - **Text fast-path** (direct read): TXT, MD, HTML, XML, JSON, EML, CSV
648
+ - **AI Vision** (multimodal): PNG, JPG, JPEG, GIF, WEBP
649
+ - **OCR** (Mistral Document AI \u2192 Markdown): PDF, DOCX, DOC, PPTX, PPT, XLSX, XLS, XLSM, MSG, BMP
650
+ - **Archives**: ZIP (recursive unpack)
651
+
652
+ Upload methods: drag-and-drop UI, folder upload (preserves file paths), API upload (single, batch up to 200 files, or archive up to 500 MB). Batch mode available at 50% cost with 48-hour delivery window.
653
+
654
+ Every document is classified into a canonical type from the 529-type ontology (e.g., "Employment Contract", "Invoice", "Bill of Lading"). Classification is language-agnostic \u2014 a German Arbeitsvertrag maps to the same type as an English Employment Contract. Unresolvable documents get "Unclassified Document".
655
+
656
+ Document detail tabs: Raw Extraction (every field with confidence), Resolved Data (mapped to registry), Processing Log (per-stage timing), Original File.
657
+
658
+ ## Field Registry
659
+
660
+ The unified knowledge graph of all canonical fields, growing smarter with every document processed.
661
+
662
+ - **Tier 1 (Core)**: Universal fields across many document types. Most reliable.
663
+ - **Tier 2 (Established)**: Promoted from Tier 3 after frequency thresholds. Production-ready.
664
+ - **Tier 3 (Emerging)**: Newly discovered from a few documents. May promote as more data arrives.
665
+
666
+ Fields with similar meanings cluster automatically via AI embeddings (e.g., "Vendor Name", "Supplier Name", "Company Name" \u2192 same cluster). Master instructions are AI-synthesized extraction directives that improve accuracy over time.
667
+
668
+ ## Schemas
304
669
 
305
- ## API Quick Start
670
+ Two types: **Generated schemas** (auto-created per document type from Tier 1+2 fields) and **User templates** (user-defined output structures).
306
671
 
307
- Base URL: https://api.talonic.com
308
- Auth: Bearer token (tlnc_ prefix)
672
+ Template workflow: name it \u2192 add fields (display name, data type, extraction instructions) \u2192 map to registry (exact/semantic/composite matching) \u2192 add reference tables \u2192 publish an immutable version.
309
673
 
310
- Extract a document:
311
- \`\`\`
312
- curl -X POST https://api.talonic.com/v1/extract \\
313
- -H "Authorization: Bearer tlnc_sk_live_..." \\
314
- -F "file=@document.pdf" \\
315
- -F 'schema={"vendor_name":"string","total":"number"}'
316
- \`\`\`
674
+ Field features: format constraints (regex validation with empty/flag/constant fallback), modifiers (date/number format, alias mapping, max_length), bypass strategies (constant, generator, reference lookup \u2014 skip LLM), capture submoves (match \u2192 compute \u2192 reason), output name remapping.
317
675
 
318
- ## Key Endpoints
676
+ Versioning: Live (published, read-only), Workshop (mutable draft), Version History (timeline with diff). Test extraction compares draft vs. live results before publishing.
319
677
 
320
- - POST /v1/extract \u2014 Extract structured data from a document
321
- - GET /v1/documents \u2014 List and manage documents
322
- - GET /v1/extractions \u2014 Query extraction results
323
- - POST /v1/schemas \u2014 Create reusable extraction schemas
324
- - GET /v1/jobs \u2014 Track async extraction jobs
325
- - POST /v1/sources \u2014 Manage document sources with API keys
678
+ ## Extraction Jobs (Runs)
326
679
 
327
- ## Platform Features
680
+ A job applies a schema to documents, producing a grid (rows = documents, columns = fields). Navigate to Structuring \u2192 Runs \u2192 New.
328
681
 
329
- - 25+ file format support (PDF, DOCX, images, spreadsheets, archives)
330
- - Field Registry: unified knowledge graph of canonical fields with tier system
331
- - 4-phase extraction pipeline: Resolve \u2192 Agent \u2192 Validate \u2192 Re-read
332
- - Document linking and case discovery through shared entities
333
- - Validation checks, golden samples, and approval gates
334
- - Export to webhooks, REST APIs, SFTP, email, cloud storage
335
- - HMAC-SHA256 signed webhooks with retry policy
682
+ **4-phase pipeline:**
683
+ 1. **Resolve** \u2014 ~30% of cells in seconds. Graph matches, fuzzy name matching, concept-synonym expansion, 3-tier reference lookup (normalize \u2192 fuzzy \u2192 AI), description scan. No AI calls (except rare Haiku fallback). Values normalized: dates \u2192 YYYY/MM/DD, numbers \u2192 2 decimal places.
684
+ 2. **Agent** \u2014 AI reviews gap patterns and produces typed strategy per field: compute (formula from grid values), transfer (copy from equivalent field), extract (re-read document with instructions, 5 concurrent), skip (with reasoning). Fields with manual instructions are always extracted, never skipped.
685
+ 3. **Validation** \u2014 Cross-field sanity checks: date_sanity, amount_mismatch, lookup_failed, low_confidence_outlier, unexpected_empty. Flags are informational only \u2014 never block output.
686
+ 4. **Re-read** \u2014 Context-aware gap filling. For each empty/low-confidence cell, AI re-reads the original document with field instruction + full grid context. Respects the confidence gate: cells \u2265 0.7 confidence are permanently protected.
336
687
 
337
- ## Optional
688
+ Per-cell provenance: confidence (0.0\u20131.0), resolution_type (graph_match | agent_derived | source_reread | unresolved), phase (1\u20134), reasoning trace, source reference (document, page, field).
338
689
 
339
- - [API Documentation (Markdown)](https://talonic.com/docs/api.md)
340
- - [Platform Guide (Markdown)](https://talonic.com/docs/platform.md)
690
+ ## Cases & Document Linking
691
+
692
+ Registry fields can be link keys: Identity (company/person names), Transaction (contract/PO/invoice numbers), Reference (project codes, cost centers). The linking pipeline normalizes values and builds a bipartite graph of documents \u2194 entities.
693
+
694
+ A **case** = 2+ documents connected through transaction/reference entities. An **entity group** = 2+ documents connected through identity-only entities. High-frequency entities (>30% of documents) are auto-excluded from case formation.
695
+
696
+ Case detail: documents, shared entities, evidence chain, timeline, AI-generated narration. Document Graph provides a D3-force visual layout. Case templates auto-discovered after 3+ cases form.
697
+
698
+ ## Smart Matching
699
+
700
+ Upload CSV/Excel as reference datasets. Define field-to-field comparisons with weighted strategies: exact (case-insensitive), fuzzy (token-based with similarity threshold), date_range (configurable tolerance), numeric_range (percentage or absolute tolerance). AI can auto-suggest field mappings.
701
+
702
+ Results: top 5 candidates per document with confidence scores and per-field evidence breakdown.
703
+
704
+ ## Validation & Quality
705
+
706
+ - **Validation checks**: Schema-level rules (field format, value range, cross-field consistency, AI-proposed coherence). Run during Phase 3.
707
+ - **Golden samples**: Manually-created reference datasets. Benchmark runs compare extraction vs. golden for per-field accuracy with AI judge verdicts.
708
+ - **Approval gates**: Threshold-based auto-approve/flag (minimum confidence, validation pass rate, field coverage). Failed rows go to manual review queue.
709
+
710
+ ## Delivery
711
+
712
+ Destinations: Webhook (HMAC-SHA256 signed), REST API (configurable headers), SFTP, Email (attachments), S3/R2 (cloud storage).
713
+
714
+ Field mappings transform output fields to match destination format. Triggers: auto on approval (stage/push), scheduled (cron), or manual. Failed exports retry with exponential backoff.
715
+
716
+ Dialects control serialization: date_format, number_locale, CSV delimiter, null representation, boolean format, encoding (UTF-8, UTF-8-BOM, ISO-8859-1).
717
+
718
+ ## Search & Navigation
719
+
720
+ **Omnisearch** (Cmd+K / Ctrl+K): searches across documents, extracted values, field names, schema names, and sources simultaneously.
721
+
722
+ Document filters: field-value conditions with autocomplete, comparison operators (eq, contains, gt, between, is_empty), combinable. URL-serializable and saveable as presets.
723
+
724
+ Keyboard shortcuts: Cmd+K (search), Cmd+J (quick extract), Escape (close overlays).
725
+
726
+ ## Team & Settings
727
+
728
+ 4 roles: Viewer (read-only), Member (full CRUD), Admin (+ team management), Owner (+ billing, API keys, org settings). New members auto-match by email domain with pending approval.
729
+
730
+ Usage & Registry: per-feature cost breakdown, daily cost chart, call log with model/tokens/cost. Admin master view for cross-tenant stats.
731
+
732
+ ## API
733
+
734
+ Base URL: \`https://api.talonic.com\`. Auth: \`Authorization: Bearer tlnc_...\` (SHA-256 hashed, shown once at creation). Scopes: extract, read, write.
735
+
736
+ Key endpoints:
737
+ - POST /v1/extract \u2014 Synchronous/async document extraction (\`include_markdown=true\` returns OCR text, \`processing_mode=batch\` for 50% cost)
738
+ - GET /v1/documents \u2014 List with cursor pagination; GET /v1/documents/:id/markdown for OCR text
739
+ - GET /v1/extractions \u2014 Query results and field corrections
740
+ - POST /v1/schemas \u2014 Create/manage extraction schemas
741
+ - GET /v1/jobs \u2014 Track async jobs and results; N-Shot comparisons, overrides, judge decisions
742
+ - POST /v1/sources \u2014 Manage API sources and document ingest
743
+ - POST /v1/webhooks \u2014 Configure webhook endpoints
744
+ - /v1/resolutions \u2014 Resolution runs: list, create, get, execute, delete, results
745
+ - /v1/linking \u2014 Link keys, document links, entity graph, classify, backfill, document-case map
746
+ - /v1/schema-graph \u2014 Schema classes, versions, diffs (approve/reject), edges, aliases, visualize
747
+ - /v1/structuring \u2014 Validation checks CRUD, approval gates CRUD with rules, result checks, pending approvals, approve/reject, delivery trigger
748
+ - /v1/telemetry \u2014 Per-schema and per-run summaries, trends, field-level breakdowns
749
+ - /v1/validation \u2014 Golden samples (list, get, delete), validation runs (list, create, get, delete, results)
750
+ - /v1/credits \u2014 Balance, history, usage summary, daily usage, per-request usage log
751
+ - /v1/cases \u2014 Status updates, edges, edge confirm/reject, split/merge, completeness, pin/remove documents
752
+ - /v1/batches \u2014 Sync with provider, cancel
753
+ - /v1/matching \u2014 Smart run, AI resolve, strategies CRUD, run results/progress, review
754
+ - /v1/review \u2014 Assign, stats
755
+ - /v1/quality \u2014 Ground truth entries CRUD, benchmark results, benchmark comparison
756
+ - /v1/reference-data \u2014 JSON upload (POST create)
757
+
758
+ Webhook events: extraction.completed, job.completed, export.completed, validation.completed. All HMAC-SHA256 signed with retry on failure.
759
+
760
+ ## Agent
761
+
762
+ The embedded AI assistant accessible from any page. Two modes:
763
+ - **Chat mode** \u2014 Ask questions about the platform, your documents, extraction results, schemas, or workflows. Grounded in platform documentation.
764
+ - **Planning mode** \u2014 Request actions (create schemas, run jobs, configure exports). The agent builds a plan, confirms with you, then executes.
765
+
766
+ Document upload flow: Cmd+J or the upload button opens quick extract. Drop a file, select a schema (or let AI discover fields), and get structured results.
767
+
768
+ ## Documentation
769
+
770
+ - [API Documentation](https://talonic.com/docs): Complete REST API reference
771
+ - [Platform Guide](https://talonic.com/docs/platform): Product documentation and feature guide
772
+ - [OpenAPI Spec](https://talonic.com/docs/openapi.json): Machine-readable API specification
341
773
  `;
342
774
  var LLMS_FULL_TXT_HEADER = `# Talonic \u2014 Full Documentation
343
775
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talonic/docs",
3
- "version": "0.6.2",
3
+ "version": "0.8.0",
4
4
  "description": "Talonic documentation components — API Reference & Platform Guide",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,