# `IConfigurator`

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

Interface · `import type { IConfigurator } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 21. Stored data (vendored; replaces @holo/interfaces)

The stored configurator document.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="_id"></a>[`_id?`](IConfigurator._id.md) | property | The backend's id: the saved configuration's identity. |
| <a id="accountid"></a>[`accountId`](IConfigurator.accountId.md) | property | The owning account. |
| <a id="name"></a>[`name`](IConfigurator.name.md) | property | The configurator's name. |
| <a id="type"></a>[`type`](IConfigurator.type.md) | property | The backend's document type. |
| <a id="version"></a>[`version`](IConfigurator.version.md) | property | The backend's document version. |
| <a id="hdrurl"></a>[`hdrUrl?`](IConfigurator.hdrUrl.md) | property | Stored environment HDR, storage only: the runtime never reads it, as 1.4 didn't. |
| <a id="hdrname"></a>[`hdrName?`](IConfigurator.hdrName.md) | property | The stored HDR's name, storage only, as `hdrUrl`. |
| <a id="thumbnailurl"></a>[`thumbnailUrl?`](IConfigurator.thumbnailUrl.md) | property |  |
| <a id="tonemapping"></a>[`toneMapping?`](IConfigurator.toneMapping.md) | property | Stored tone-mapping name, storage only: the runtime never reads it, as 1.4 didn't, and maps no name. |
| <a id="backgroundcolor"></a>[`backgroundColor?`](IConfigurator.backgroundColor.md) | property | The stored backdrop: the runtime draws a non-null value as the scene model's background layer ([`BackgroundValue`](BackgroundValue.md)). |
| <a id="status"></a>[`status`](IConfigurator.status.md) | property | The backend's publication state. |
| <a id="defaultview"></a>[`defaultView`](IConfigurator.defaultView.md) | property | The initial camera view, which the app converts with [`cameraViewFromStored`](cameraViewFromStored.md), then applies with [`camera.set`](Camera.set.md): the runtime never reads it (see [`IDefaultView`](IDefaultView.md)). |
| <a id="defaultcurrency"></a>[`defaultCurrency`](IConfigurator.defaultCurrency.md) | property | The default ISO 4217 currency for `prices`. |
| <a id="createdat"></a>[`createdAt?`](IConfigurator.createdAt.md) | property |  |
| <a id="updatedat"></a>[`updatedAt?`](IConfigurator.updatedAt.md) | property |  |
| <a id="root"></a>[`root`](IConfigurator.root.md) | property | The node tree. |
| <a id="defaultnodeid"></a>[`defaultNodeId?`](IConfigurator.defaultNodeId.md) | property | Stored for editors; the runtime never reads it: every enabled root node is placed (spec section 6.9, ID10). |
| <a id="connections"></a>[`connections?`](IConfigurator.connections.md) | property | Top level, never inside `viewerDocument`. |
| <a id="connectionsbasis"></a>[`connectionsBasis?`](IConfigurator.connectionsBasis.md) | property | The basis fingerprint of `connections`: store [`connectionsBasis(model, connections)`](connectionsBasis.md) with every save. |
| <a id="attributes"></a>[`attributes`](IConfigurator.attributes.md) | property | Your own data. |
| <a id="parameters"></a>[`parameters`](IConfigurator.parameters.md) | property | Your own parameters. |
| <a id="presets"></a>[`presets?`](IConfigurator.presets.md) | property |  |
| <a id="isuserconfiguration"></a>[`isUserConfiguration?`](IConfigurator.isUserConfiguration.md) | property | True for a shopper's saved design (not the configurator itself). |
| <a id="viewerdocument"></a>[`viewerDocument?`](IConfigurator.viewerDocument.md) | property | The stored viewer-document layer; only the admin route writes it. |

## Declaration

```ts
export interface IConfigurator {
  _id?: string;
  accountId: number;
  name: string;
  type: string;
  version: string;
  hdrUrl?: string;
  hdrName?: string;
  thumbnailUrl?: string;
  toneMapping?: string;
  backgroundColor?: BackgroundValue;
  status: 'active' | 'inactive' | 'archived';
  defaultView: IDefaultView;
  defaultCurrency: string;
  createdAt?: Date | string;
  updatedAt?: Date | string;
  root: ConfiguratorNode[];
  defaultNodeId?: string;
  connections?: Connection[];
  connectionsBasis?: string;
  attributes: Record<string, unknown>;
  parameters: Record<string, unknown>;
  presets?: IPreset[];
  isUserConfiguration?: boolean;
  viewerDocument?: Record<string, unknown>;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `IConfigurator` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | pass: 20 apps (fleet cross-check: app-04c2774145, app-0c773a4ee3, app-37356bf09f, app-4762caacdc, app-4fd23bc869, app-822bb9d6aa, app-8675b3225c, app-b362a81c85 and 12 more) |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
