# Input-error code `'unknown-field'`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts`, `tables/problems.json` and `services/onsite-scripter/scripts/contract-docs-what-to-do.json` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

A member of [`InputErrorCode`](../api/InputErrorCode.md) · stable · since 2.0.0

A field the spec or schema of the page's declared `contract` doesn't have, or an [`applyPatch`](../api/Writer.applyPatch.md) node field path whose field the stored node format doesn't have and the node doesn't carry; `didYouMean` names close fields.

## What to do

Use the field the member's page declares; `didYouMean` is only a spelling guess. Names agents often guess wrong: material `color` → `baseColor`, `opacity` → `alpha`, `metalness` → `metallic`, `roughnessFactor` → `roughness`, `emissiveIntensity` → `emissiveStrength`; angles and times carry their unit ([`CameraLimits.minAzimuthDeg`](../api/CameraLimits.minAzimuthDeg.md), `maxAzimuthDeg`, `fovDeg`, `durationMs`); a query's `meshName` → `name`; and a part write ([`PartState`](../api/PartState.md)) takes only `visible`, `pose`, `material`, `shadows`, `pickable` and `outline`, so a recorded, priced change such as a node's `enabled` is a scene-model write, [`session.applyPatch`](../api/Writer.applyPatch.md).

```ts
await session.find({ name: 'Seat' }).set({ material: { baseColor: '#ff0000', metallic: 0, roughness: 0.6 } });
await session.camera.limits({ minAzimuthDeg: -70, maxAzimuthDeg: 70 });
await session.applyPatch([{ op: 'replace', path: `/model/node/${shelfId}/enabled`, value: false }]);
```

## Where the declaration names it

- [`DecalSpec.image`](../api/DecalSpec.image.md): Of a [`TextureSpec`](../api/TextureSpec.md) only `url`, `image`, `optimizedUrl` and `colorSpace` apply: the image spans `size` once, its top along world +Y, so a placement or sampling field (`uv`, `scale`, `offset`, `rotationDeg`, `sizeM`, `wrap`, `sampling`, `enabled`) rejects HoloInputError `'unknown-field'`; turn the image itself (draw it on a canvas) to turn the decal.
- [`IConfiguratorNode`](../api/IConfiguratorNode.md): An [`applyPatch`](../api/Writer.applyPatch.md) field path writes an undeclared field only when the node already carries it ('unknown-field' otherwise; section 8.1).
- [`Issue.code`](../api/Issue.code.md): 'unknown-field'; see [`IssueCode`](../api/IssueCode.md).
- [`JsonPatchOp`](../api/JsonPatchOp.md): [`applyPatch`](../api/Writer.applyPatch.md) writes these: - `/model/node/{nodeId}/{field}`: a scene-model node wherever it sits in the tree; `field` is a field of the stored node format or one the node already carries ('unknown-field' otherwise), and a `defaultNodeId` written here names one of its children, or is null or '' ('unknown-id' otherwise); - `/model/node/{nodeId}/children` and `/model/root`: ordered lists of child …
- [`Session.export`](../api/Session.export.md): `extra` (since 2.0.0, additive): `{ signal }` as [`capture`](../api/Session.capture.md), [`idle`](../api/Session.idle.md) and [`applyDocument`](../api/Session.applyDocument.md) take it, honoured as `options.signal`; a signal in both places rejects 'invalid-input' (pass it once), and another key 'unknown-field'.
- [`TryOnOptions.overlayRoot`](../api/TryOnOptions.overlayRoot.md): 1.6 named it `root`, which 2.0 refuses as 'unknown-field' with `didYouMean` naming this.
- [`Writer.applyPatch`](../api/Writer.applyPatch.md): Errors: rejects HoloInputError on a bad path (a collection, stage-order or named-material path among them: the feed names those, another member writes them, and `fix` says which; see [`JsonPatchOp`](../api/JsonPatchOp.md)), or 'invalid-input' on a node `scale` with a 0 or non-finite component, or a non-finite number anywhere in a value (spec section 3.4); or 'unknown-field' on a node field path the stored format doesn't…
- [`testing.createFakeSession`](../api/testing.createFakeSession.md): Errors: the options are checked at the call, nested ones included (`profile`, each `models` entry with its nodes, clips and load, each `assets` entry): a field the declaration doesn't have throws HoloInputError 'unknown-field' with `didYouMean`, a malformed value (a node without a string `name`, a `parent` naming no entry or a name two entries share, a `tier` or AR mode the profile doesn't know)…

The set is open: handle a code you don't know (`'other'`).
