# `IModelNode.glbUrl`

> 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.

Property of [`IModelNode`](IModelNode.md) · inherited by [`ConfiguratorNode`](ConfiguratorNode.md) · stable · since 2.0.0

```ts
glbUrl: string;
```

The GLB (or `.holo`). A new URL under the same [`nodeId`](IConfiguratorNode.nodeId.md) replaces the content and keeps the node.
Missing or '' (a stored empty choice, or a node that only carries global-material groups): the
node places no asset, as in 1.x, so nothing is fetched, no Problem is recorded, [`node(nodeId)`](Writer.node.md)
reads `exists: false` and its [`optGlbUrl`](IModelNode.optGlbUrl.md) and twins are ignored; its [`nodeId`](IConfiguratorNode.nodeId.md) is still required
and unique, its children still resolve, and outputs carry the field as stored (spec section 8.1).

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `glbUrl` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
