Lint a spreadsheet document, or inspect workbook bytes, without modifying either.
Use describe("xlsx.validate") when your code needs the complete live JSON Schemas.
At a glance
| Property | Value |
|---|---|
| Package | @runstamp/xlsx |
| Domain / verb | xlsx / validate |
| Customer jobs | validate |
| Deterministic | Yes |
| Side effects | none |
Availability
| Local | SDK | CLI | MCP | Managed API |
|---|---|---|---|---|
| public ga | public ga | public ga | public ga | public ga |
Managed API route: POST /api/v2/operations/xlsx/validate. Managed execution requires a free-trial workspace or an active Platform or Enterprise workspace, and an environment-bound API key.
Input and result
| Schema | Required fields | Optional fields |
|---|---|---|
| Input | none | none |
| Options | none | deterministic, deterministicSeed, timeoutMs, locale, lossPolicy, limits |
| Result value | valid, summary | none |
Every success also carries losses, diagnostics, and a hash-bound receipt.
Defaults, limits, and format constraints
Defaults
| Path | Default |
|---|---|
$.deterministic | default=true |
$.lossPolicy | default="collect" |
Formats and profiles
| Path | Constraint |
|---|---|
$.anyOf[0].sheets[].conditionalFormatting[].ref | minLength=1 |
$.anyOf[0].sheets[].conditionalFormatting[].rules | minItems=1 |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].type | const="cellIs" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].operator | oneOf="between","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notBetween","notEqual" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.size | exclusiveMinimum=0 |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.underline.anyOf[1] | oneOf="single","double","singleAccounting","doubleAccounting" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.vertAlign | oneOf="superscript","subscript" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].font.charset | minimum=0maximum=255 |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].fill.type | oneOf="solid","pattern" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].fill.patternType | oneOf="solid","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.top.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.bottom.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.left.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.right.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.diagonal.style | oneOf="thin","medium","thick","double","dotted","dashed","dashDot","dashDotDot","hair","mediumDashed","mediumDashDot","mediumDashDotDot","slantDashDot" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].border.diagonal.direction | oneOf="up","down","both" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.horizontal | oneOf="left","center","right","fill","justify","centerContinuous","distributed","general" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.vertical | oneOf="top","center","bottom","justify","distributed" |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.textRotation | minimum=0maximum=255 |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.indent | minimum=0maximum=250 |
$.anyOf[0].sheets[].conditionalFormatting[].rules[].oneOf[0].style.anyOf[1].alignment.readingOrder.anyOf[0] | const=0 |
Showing 24 of 109 constraints. Use describe() or the machine-readable reference for the complete schema.
Other limits
| Path | Constraint |
|---|---|
$.anyOf[0].defaults.font.family | minLength=1 |
$.anyOf[0].defaults.font.size | exclusiveMinimum=0 |
$.anyOf[0].defaults.columnWidth | minimum=0 |
$.anyOf[0].defaults.rowHeight | minimum=0maximum=409 |
$.anyOf[0].namedRanges[].name | minLength=1maxLength=255 |
$.anyOf[0].namedRanges[].ref | minLength=1 |
$.anyOf[0].sheets | minItems=1maxItems=255 |
$.anyOf[0].sheets[].name | minLength=1maxLength=31 |
$.anyOf[0].sheets[].columns | maxItems=16384 |
$.anyOf[0].sheets[].columns[].width | minimum=0 |
$.anyOf[0].sheets[].rows | maxItems=1048576 |
$.anyOf[0].sheets[].rows[].height | minimum=0maximum=409 |
$.anyOf[0].sheets[].rows[].cells | maxItems=16384 |
$.anyOf[0].sheets[].rows[].cells[].value.anyOf[5] | minItems=1 |
$.anyOf[0].sheets[].rows[].cells[].value.anyOf[5][].font.size | exclusiveMinimum=0 |
$.anyOf[0].sheets[].rows[].cells[].value.anyOf[5][].font.charset | minimum=0maximum=255 |
$.anyOf[0].sheets[].rows[].cells[].style.anyOf[1].font.size | exclusiveMinimum=0 |
$.anyOf[0].sheets[].rows[].cells[].style.anyOf[1].font.charset | minimum=0maximum=255 |
$.anyOf[0].sheets[].rows[].cells[].style.anyOf[1].alignment.textRotation | minimum=0maximum=255 |
$.anyOf[0].sheets[].rows[].cells[].style.anyOf[1].alignment.indent | minimum=0maximum=250 |
$.anyOf[0].sheets[].rows[].cells[].formula.anyOf[0] | minLength=1 |
$.anyOf[0].sheets[].rows[].cells[].formula.anyOf[1].expression | minLength=1 |
$.anyOf[0].sheets[].rows[].cells[].formula.anyOf[1].cachedValue.anyOf[5] | minItems=1 |
Showing 32 of 209 constraints. Use describe() or the machine-readable reference for the complete schema.
Invoke
const input = await fetch("https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.validate/input.json").then((response) => response.json());
const result = await runstamp.run("xlsx.validate", input);
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.remediation}`);
console.log(result.value, result.losses, result.diagnostics, result.receipt);curl -fsS https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.validate/input.json -o input.json
npx -p @runstamp/sdk runstamp ops invoke xlsx.validate --input input.json{
"tool": "runstamp_invoke_operation",
"arguments": {
"operation": "xlsx.validate",
"input": "<JSON from https://runstamp.com/demo-evidence/operation-evidence/xlsx/xlsx.validate/input.json>",
"execution_mode": "local"
}
}Errors and losses
Declared errors (10)
common/SCHEMA_REJECTEDcommon/CONTRACT_VIOLATIONcommon/OPERATION_CANCELLEDcommon/OPERATION_TIMEOUTcommon/RESOURCE_LIMIT_EXCEEDEDcommon/INPUT_CORRUPTxlsx/TEMPLATE_PARSE_FAILEDxlsx/TEMPLATE_ASSEMBLY_FAILEDxlsx/XLSX_XML_UNSAFExlsx/LOSS_POLICY_VIOLATED
Declared losses (0)
- None.
SDK AbortSignal, CLI exit 130, and MCP cancellation return the typed common/OPERATION_CANCELLED failure envelope.
Verified example and exact contract
- Fixture:
icp-workflow(xlsx-tracker-compliance-remediation.json). - Example input — SHA-256
57ed61c3dde8935152aea4a115153c6f75e47d2bbe78024ef0e3c5133563095e. - Example result — SHA-256
00772d8647696cc5ca43c9504f8141d5cb8175442ae505c89a3b782c6dd34a91. - Verified result SHA-256:
b82e2cb71c11b5e621c1fc28ee938364fbe18fabc4e5d6b20c30d485de62ceef. - Qualification lane:
11-pdf-xlsx.
Contract fingerprints
- Descriptor:
b26e2ca6a401ea108936ef0ed4e09da8f062b729749d0a3593fd561003082252. - Input schema:
4a7e379953ac9cdd410db2566e029e66a2e63a1d2c3c9f42226e0121725c4a32. - Options schema:
fdfd7767a0e2fe0da1244a2af2b1ff6b98afc16ecea71968651a31d5feaa8c74. - Result value schema:
1fe6152477b4cdff64eda524a941fb92d1016759e8e50ffedaec232b19f93bc0.
The machine-readable operation reference publishes the complete schemas, qualification results, and evidence bindings for every operation.