Apply a texture package as a material
material_from_mapsCreate a material from a completed textureJobId or validated role-labeled images. Uses explicit UVs, alpha and normal settings; applyToObjects assigns slot zero, assignments targets explicit slots. Commits one revision after validating all targets. Existing UVs are preserved. Returns a durable job plus complete map artifacts on completion.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| roles | No | ||
| options | No | ||
| profile | No | surface | |
| uvLayer | No | ||
| uvScale | No | ||
| projectId | Yes | ||
| sourceMaps | No | ||
| assignments | No | ||
| materialName | No | Image Material | |
| textureJobId | No | ||
| sourceAssetId | No | ||
| applyToObjects | No | ||
| baseRevisionId | No | HEAD | |
| idempotencyKey | Yes | Caller-chosen key. Replaying it with IDENTICAL input returns the EXISTING job instead of queueing a second one — a restarted driver adopts its own in-flight work rather than duplicating or orphaning it. Vary the key to force a new job. Full semantics: the same key with DIFFERENT input is rejected with IDEMPOTENCY_CONFLICT (never silently replayed, so a stale result cannot be mistaken for a fresh one). A key is recorded only once a job is actually created, so a request rejected beforehand (validation, APPROVAL_REQUIRED, quota) leaves the key unused and free to reuse. A key bound to a job keeps resolving to that job even after it fails or is cancelled — use a NEW key to genuinely retry cancelled work. Keys live 48 hours and are scoped per principal+deployment+operation, which means they SPAN SESSIONS: a plain descriptive key like "hero-final-1024-v1" will collide with your own run from yesterday and be rejected. Include a project id or a timestamp. This scope used to be stated only in the conflict error, i.e. after the round trip it cost — a field build lost two that way, ~34 hours after unrelated work had taken the same names. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job | Yes |