Printago API
GET /v1/part-builds

Get all part builds for a store

Requires: queue.view

Query Parameters

partId optional
string
Filter on partId. A bare value is an exact match (partId=value); use partId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuBuildId optional
string
Filter on skuBuildId. A bare value is an exact match (skuBuildId=value); use skuBuildId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuId optional
string
Filter on skuId. A bare value is an exact match (skuId=value); use skuId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuName optional
string
Filter on skuName. A bare value is an exact match (skuName=value); use skuName.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
label optional
string
Filter on label. A bare value is an exact match (label=value); use label.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
partCopy optional
string
Filter on partCopy. A bare value is an exact match (partCopy=value); use partCopy.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
requiredPrinterTags optional
string
Filter on requiredPrinterTags. A bare value is an exact match (requiredPrinterTags=value); use requiredPrinterTags.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
quantity optional
string
Filter on quantity. A bare value is an exact match (quantity=value); use quantity.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
numPartsPerSku optional
string
Filter on numPartsPerSku. A bare value is an exact match (numPartsPerSku=value); use numPartsPerSku.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuInstanceStart optional
string
Filter on skuInstanceStart. A bare value is an exact match (skuInstanceStart=value); use skuInstanceStart.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
parameterOverrides optional
string
Filter on parameterOverrides. A bare value is an exact match (parameterOverrides=value); use parameterOverrides.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
status optional
string
Filter on status. A bare value is an exact match (status=value); use status.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
outputFiles optional
string
Filter on outputFiles. A bare value is an exact match (outputFiles=value); use outputFiles.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
thumbnailUri optional
string
Filter on thumbnailUri. A bare value is an exact match (thumbnailUri=value); use thumbnailUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
assignmentStartedAt optional
string
Filter on assignmentStartedAt. A bare value is an exact match (assignmentStartedAt=value); use assignmentStartedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
assignmentCompletedAt optional
string
Filter on assignmentCompletedAt. A bare value is an exact match (assignmentCompletedAt=value); use assignmentCompletedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
printingStartedAt optional
string
Filter on printingStartedAt. A bare value is an exact match (printingStartedAt=value); use printingStartedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
printingCompletedAt optional
string
Filter on printingCompletedAt. A bare value is an exact match (printingCompletedAt=value); use printingCompletedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
printStatus optional
string
Filter on printStatus. A bare value is an exact match (printStatus=value); use printStatus.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
extensions optional
string
Filter on extensions. A bare value is an exact match (extensions=value); use extensions.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
materialAssignments optional
string
Filter on materialAssignments. A bare value is an exact match (materialAssignments=value); use materialAssignments.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
priority optional
string
Filter on priority. A bare value is an exact match (priority=value); use priority.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
position optional
string
Filter on position. A bare value is an exact match (position=value); use position.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
orderId optional
string
Filter on orderId. A bare value is an exact match (orderId=value); use orderId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
orderItemId optional
string
Filter on orderItemId. A bare value is an exact match (orderItemId=value); use orderItemId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
linkedPartId optional
string
Filter on linkedPartId. A bare value is an exact match (linkedPartId=value); use linkedPartId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
dismissed optional
string
Filter on dismissed. A bare value is an exact match (dismissed=value); use dismissed.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
customMetadata optional
string
Filter on customMetadata. A bare value is an exact match (customMetadata=value); use customMetadata.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
id optional
string
Filter by record ID. A bare value is an exact match; use id.in=a,b,c for several (up to 100). See Querying Data.
storeId optional
string
Filter by store ID. Results are always limited to the store your API key belongs to, so this is rarely useful. See Querying Data.
createdAt optional
string
Filter by creation time. Pass an ISO 8601 timestamp with a comparison operator, e.g. createdAt.gte=2025-01-01T00:00:00Z. See Querying Data.
updatedAt optional
string
Filter by last-modified time. Pass an ISO 8601 timestamp with a comparison operator, e.g. updatedAt.gt=2025-01-01T00:00:00Z to fetch what changed since a checkpoint. See Querying Data.
sort optional
string
Comma-separated field:direction pairs, applied in order, e.g. createdAt:desc,name:asc. Direction is asc (the default) or desc. At most 5 clauses; JSON and array fields cannot be sorted on. See Querying Data.
limit optional
number
Maximum number of records to return, 1–1000. Defaults to 1000; larger values are capped at 1000. See Querying Data.
offset optional
number
Number of matching records to skip before returning results. Combine with limit to page through a list, and with meta=true to learn the total. See Querying Data.
fields optional
string
Comma-separated list of fields to return, e.g. id,name,updatedAt. Other fields are left out of each record. At most 50 fields. See Querying Data.
include optional
string
Comma-separated related records to embed in each result, e.g. linkedParts,linkedParts.part. At most 4 includes, each at most 2 levels deep; only the relations this endpoint supports are accepted, anything else is a 400. See Querying Data.
meta optional
boolean
Set to true to wrap the response as { data, meta }, where meta carries total, count, offset, limit, hasMore and executionTime. Without it the response is a bare array. See Querying Data.
hints optional
boolean
Set to true to add a hints array of suggested follow-up API calls to the response (aimed at AI agents). A list response is wrapped as { data, meta, hints }. See Querying Data.

Response Schema

PartBuildWithRelation[] | SearchResponse
assignmentCompletedAtrequirednullable
string
format: date-time
assignmentStartedAtrequirednullable
string
format: date-time
createdAtrequired
string
format: date-time
customMetadataoptional
Record<string, any>
Construct a type with a set of properties K of type T
dismissedrequired
boolean
extensionsoptionalnullable
object
3mfoptional
object
plateLabelsoptional
Record<string, string>
plateQuantitiesoptional
Record<string, number>
skipObjectsoptional
Record<string, string[]>
Construct a type with a set of properties K of type T
boundingBoxoptionalnullable
object
{x,y,z} mm footprint of this build's generated geometry, stashed after a parametric (OpenSCAD/CadQuery) render so per-job boundingBox denormalization can read it without re-parsing the output STL.
xrequired
number
yrequired
number
zrequired
number
consolidationoptional
object
Build-time plate consolidation (issue #437): when printing quantity N of a part, pack the copies onto as few plates as possible and emit one merged plate per full plate instead of N separate jobs. Reuses the merge core, so a consolidated plate is an ordinary merged parent (unmergeable back into its copies). All layout fields default to the store's PlateMergingSettings / the account's smallest bed when omitted.
bedSizeoptional
object
{x,y,z} mm build volume of the target plate.
xrequired
number
yrequired
number
zrequired
number
enabledrequired
boolean
Off by default. When true, this build's copies are consolidated.
partSpacingMmoptional
number
Per-build override of the store's part spacing (mm).
plateMarginMmoptional
number
Per-build override of the store's plate edge margin (mm).
createdByoptional
object
The person or API key that asked for a build, kept on the build itself.
actorEmailoptional
string
Actor's email for readability in logs
actorIdrequired
string
Firebase UID or system identifier
actorTyperequired
"user" | "api_key" | "webhook" | "system" | "scheduler" | "fuse"
Type of actor performing the operation
userapi_keywebhooksystemschedulerfuse
apiKeyIdoptional
string
API key ID if action was via API key
customizeroptional
object
unresolvedChannelsoptional
object[]
Palette channels whose customer hex could not be mapped to a material.
hexrequired
string
indexrequired
number
mergedPlateoptional
object
Marker + payload stored on a merged parent job's synthetic PartBuild.
bedSizerequired
object
{x,y,z} mm build volume of the target plate.
xrequired
number
yrequired
number
zrequired
number
childJobIdsrequired
string[]
The child (merged-in) print job ids, in layout order.
childProcessSettingsoptional
Record<string, Record<string, string>>
Construct a type with a set of properties K of type T
excludeAreasoptional
object[]
Bed keep-out rects the layout respected (from the machine profile).
heightrequired
number
widthrequired
number
xrequired
number
yrequired
number
failureoptional
object
Set when async authoring failed and the merge was unwound.
messagerequired
string
filamentColoursoptional
string[]
Per-filament colours, indexed by slot (gaps null). Written into the merged 3MF, and mirrored onto the parent JOB's copy of this extension — the queue reports the plate's per-slot material requirements from the durable job row, since the synthetic build is archived out of client caches once authoring succeeds.
filamentCountoptional
number
Filaments the merged plate declares. Absent/1 = a single-color plate, whose objects are clamped to filament 1 at authoring time. >1 marks N copies of one multi-color plate, whose extruder ids carry through.
layoutrequired
object[]
Committed, authoritative placements the merged 3MF is authored from.
jobIdrequired
string
rotationDegrequired
0 | 90
090
xrequired
number
World-coordinate center of the placed footprint, mm.
yrequired
number
machineNameoptional
string
Target machine profile name, written into the merged file's config.
moderequired
"manual" | "auto" | "consolidation"
How this plate was created.
manualautoconsolidation
objectManifestoptional
Record<string, number[]>
Construct a type with a set of properties K of type T
policyoptional
"same-order" | "any"
Automatic-mode scope policy the merge was selected under (auto only).
same-orderany
processOverridesoptional
Record<string, string>
Construct a type with a set of properties K of type T
slicerVersionIdoptional
string
SlicerVersion.id the plate optimizer chose for this plate under the store's slicer-compatibility policy. Mirrored onto the parent job's mergedPlate extension and honored at dispatch. Absent = store slicer.
orderInfooptional
object
linkedPartIdrequired
string
pattern: ^[a-z0-9]{24}$
linkedPartQuantityrequired
number
sequenceFanoutoptional
object
Fan-out bookkeeping stamped on each per-unit sibling build when a sequence binding splits a quantity-N build into N quantity-1 builds. The siblings share one queue group and one queueOrder so the run prints in serial order, and their jobs carry contiguous quantityIndex values across the set.
buildIdsrequired
string[]
All sibling build ids in unit order (index 0 first).
groupIdrequired
string
Shared print-queue groupId for the whole sibling set.
queueOrderrequired
number
Pre-allocated queueOrder shared by every sibling's job.
unitCountrequired
number
Total number of sibling builds in the set.
unitIndexrequired
number
0-based index of this unit within the sibling set.
serialsoptional
object[]
Serials consumed by this build, stamped at allocation time.
parameterNamerequired
string
sequenceIdrequired
string
pattern: ^[a-z0-9]{24}$
sequenceNamerequired
string
serialrequired
string
targetoptional
object
The physical item a serial was allocated for, recorded so queue and history views can explain which item received which number. A plate-aware share-mode stamp carries only the plate (the value applies to every matching occurrence there); an increment-mode stamp pins the exact object instance in the 3MF's stable `(object_id, instance_id)` identity.
identifyIdoptional
string
instanceIdoptional
number
objectIdoptional
string
plateIdoptional
number
valuerequired
number
idrequired
string
pattern: ^[a-z0-9]{24}$
labelrequirednullable
string
linkedPartIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
materialAssignmentsrequirednullable
Record<string, object[]>
numPartsPerSkuoptionalnullable
number
orderIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderItemIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
outputFilesrequirednullable
string[]
parameterOverridesrequired
object[]
namerequired
string
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
partCopyrequired
object
arrangeableoptional
boolean
createdAtrequired
string
customMetadataoptional
Record<string, any>
descriptionrequired
string
fileHashesrequired
string[]
fileUrisrequired
string[]
folderIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
gcodePlateUrisoptionalnullable
Record<string, string>
idrequired
string
pattern: ^[a-z0-9]{24}$
materialsrequirednullable
object[]
colorrequirednullable
string
pattern: ^#{0,1}[0-9A-F]{6}|[0-9A-F]{8}$
identifieroptionalnullable
string
indexrequired
number
min: 0
nameoptionalnullable
string
skipoptional
boolean
typerequirednullable
string
meshErroroptionalnullable
string
Why tessellating this source failed. Set with `meshUri` cleared, so a file that cannot be meshed is stated once instead of re-converting on every print forever. Replacing the source moves `fileHashes[0]` off this hash, which retires the error without anything having to clear it.
meshSourceHashoptionalnullable
string
`fileHashes[0]` of the source the mesh state describes — the file `meshUri` was tessellated from, or the one `meshError` failed on.
meshUrioptionalnullable
string
Tessellated mesh derived from a boundary-representation source (STEP). The slicer CLI only reads meshes, so this — not `fileUris[0]` — is what the print and estimation paths feed it.
metadataoptionalnullable
object
filamentColorsrequired
string[]
filamentDensitiesoptional
number[]
filamentDiametersoptional
number[]
filamentIdsoptional
string[]
filamentTyperequired
string[]
nozzleDiameterrequired
string
plateRenderSourceHashoptional
string
`fileHashes[0]` of the source that produced the plates' `thumbnailRenderedUri`. Re-extraction carries the renders forward only while this still matches the part's current source; a replaced file leaves them behind rather than showing the previous model's geometry.
platesoptional
object[]
filamentIdsoptional
string[]
filamentMapModeoptional
string
filamentMapsoptional
number[]
gcodeFileoptional
string
idrequired
number
lockedoptional
boolean
nameoptional
string
patternBboxFileoptional
string
pickDataoptional
string
pickFileoptional
string
pickUploadedUrioptional
string
slicedoptional
object
thumbnailDataoptional
string
thumbnailFileoptional
string
thumbnailNoLightFileoptional
string
thumbnailRenderedUrioptional
string
The plate re-rendered by the three.js builder. Written by a different flow, and to a different storage path, than the archive copy above — a later metadata reprocess re-copies the archive image and must not be able to overwrite this. Prefer it over `thumbnailUploadedUri` (see `plateThumbnailUri`).
thumbnailUploadedUrioptional
string
The archive's own plate preview, copied out at metadata-extraction time.
topDataoptional
string
Base64 PNG data for the top/pick images, staged before upload then cleared.
topFileoptional
string
topUploadedUrioptional
string
Uploaded URIs for the plate's top-down image and color-coded object pick mask. Used by the visual skip-objects picker.
printerModelrequired
string
profileCompatrequired
object
compatiblerequired
string[]
saferequired
string[]
slicedrequired
string
slicerVersionoptionalnullable
object
enginerequired
"orcaslicer" | "bambu-studio" | "prusaslicer" | "superslicer"
orcaslicerbambu-studioprusaslicersuperslicer
versionrequired
string
textSlotsoptional
object[]
PrintagoParam text slots with their per-plate occurrence identities, re-detected whenever the file is (re)processed. The saved reuse mode lives on the slot's parameter, which survives a file replacement; this is the geometry-derived half that must always track the current file.
fontNameoptional
string
`font_name` of the first volume seen with this key.
fontVersionoptional
string
`font_version` of the first volume seen with this key.
keyrequired
string
The matching volume/object name — the substitution key.
labelrequired
string
The label this slot's parameter is shown under.
occurrencesoptional
object[]
Every printable object instance carrying this slot, across all plates. Absent when the file predates occurrence detection or has no plate metadata to resolve instances against.
surfaceTypeoptional
number
`surface_type` of the first volume seen with this key (0=flat).
textrequired
string
The text authored into the volume. It prints as-is when the slot goes unfilled, which makes it the parameter's default.
volumeCountrequired
number
How many text volumes in the file carry this slot name.
namerequired
string
overriddenProcessProfileIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
parametersrequired
object[]
acceptedContentTypesoptional
string[]
File-parameter-only fields (populated when `type === PartParameterVariableType.File`). Kept optional on the shared interface so scalar-parameter call sites do not need union-narrowing. See `FilePartParameter` for the strict shape. `acceptedContentTypes` is intentionally an OPEN `string[]` (not a narrow union). The customizer emits SVG, but Etsy attachments and direct API order ingestion can carry ANY mime type (PNG / JPG / PDF / AI / etc). Builders enforce kind constraints; the shared type stays open.
defaultoptional
number | string | boolean
defaultUrioptional
string
Optional fallback file URI (e.g. a known SVG in storage).
descriptionoptional
string
labeloptional
string
What the parameter is shown under wherever a customer or an operator fills it in; `name` stays the key everything binds by (SKU options, order inputs, build overrides, and — for a 3MF text slot — the text volume the substitution travels to). A parameter without one is shown under its name. This interface is the one the API's request validators are generated from, and it is a second declaration of the shape in `../part/parameter`. A field added to only one of them is accepted by the code and then pruned off the wire.
maxoptional
number
minoptional
number
multipleoptional
boolean
Whether the slot accepts >1 file. Reserved for forward compat — the Phase 5 resolver assumes single-file per slot for v1.
namerequired
string
optionsoptional
object[]
labeloptional
string
valuerequired
string | number
serialReuseoptional
"share" | "increment"
For a 3MF text-slot parameter bound to a sequence: whether occurrences repeated on one plate share a serial or each consume the next one. Absent means {@link TextSlotSerialReuse.Share }, today's duplicate-name meaning.
shareincrement
sizingoptional
"stretch" | "fit" | "unconstrained"
3MF text placeholders only: how a substituted value is sized against the bounds of the text volume it replaces. Absent means "fit within bounds", which is what every part declared before the setting existed carries. Declared on this shape as well as on `../part/parameter` for the reason `label` is — the API's request validators are generated from this one, and a field on only the other is pruned off the wire.
stretchfitunconstrained
stepoptional
number
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
printTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
processingoptionalnullable
object
Per-stage ingest progress and, on failure, which stage stopped and why.
attemptrequired
number
How many ingests this part has had before this one — a monotonic per-part counter, not a per-file retry count, so no two runs can ever share a workflow key. See {@link nextPartIngestAttempt }.
erroroptional
string
failedStageoptional
"fetch" | "read-metadata" | "thumbnails" | "split-plates" | "estimate"
fetchread-metadatathumbnailssplit-platesestimate
fileHashrequired
string
`fileHashes[0]` this ingest describes; replacing the file retires it.
finishedAtoptional
string
stagesrequired
object[]
attemptsoptional
number
Times the stage has been started, so the UI can say "retrying · attempt N".
erroroptional
string
keyrequired
"fetch" | "read-metadata" | "thumbnails" | "split-plates" | "estimate"
fetchread-metadatathumbnailssplit-platesestimate
statusrequired
"running" | "done" | "pending" | "failed" | "skipped"
runningdonependingfailedskipped
startedAtrequired
string
workflowKeyrequired
string
The workflow run that owns this state. A retry or a file replacement writes a new key first, so a superseded run's writes no longer match and are dropped instead of clobbering the newer run's progress.
processingStatusoptionalnullable
"processing" | "failed"
Where the file's ingest (metadata extraction, thumbnails, plate split, estimation) stands. `null` means ready — parts that predate the ingest workflow are healthy without backfill. System-set, not user-editable.
processingfailed
slicerOverrideoptionalnullable
string
slicingEstimateoptionalnullable
object
estimatedPrintTimeSecondsrequired
number
materialsrequired
object[]
coloroptional
string
indexrequired
number
materialTyperequired
string
usedGramsrequired
number
usedMetersrequired
number
platesoptional
object[]
estimatedPrintTimeSecondsrequired
number
materialsrequired
object[]
plateIdrequired
number
totalWeightGramsrequired
number
profilesoptional
object
filamentProfileIdsrequired
string[]
filamentProfileNamesrequired
string[]
machineProfileIdrequired
string
machineProfileNamerequired
string
processProfileIdrequired
string
processProfileNamerequired
string
slicedAtrequired
string
slicerVersionrequired
string
totalWeightGramsrequired
number
sourceoptionalnullable
"google-drive" | "onedrive"
Which integration created this part. Set only by the cloud-storage providers today; null on every other creation path (upload, API, OpenSCAD, …) rather than carrying a synthetic "manual" value, so existing parts need no backfill. Not user-editable — it records what happened, not a preference.
google-driveonedrive
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
thumbnailUrirequirednullable
string
typerequired
enum
scadcadquerybuild123dstlstep3mfgcode3mfgcode
updatedAtrequired
string
uploadedAtoptionalnullable
string
use3MFProcessProfileoptional
boolean
Slice this part with the process profile embedded in its 3MF rather than the matched printer's. Omit it when creating a 3MF part and it is turned on for you, unless you also send an `overriddenProcessProfileId`; send `false` to slice with the printer's profile instead. Ignored for every other part type.
userTagsoptional
string[]
partIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
positionrequired
"front" | "back"
frontback
printingCompletedAtrequirednullable
string
format: date-time
printingStartedAtrequirednullable
string
format: date-time
printJobsrequired
object[]
assignedPrinterIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
assignmentCompletedAtrequirednullable
string
format: date-time
assignmentStartedAtrequirednullable
string
format: date-time
attemptNumberrequired
number
1-based counter of print attempts (bumped on requeue once the attempt printed or reached a terminal state). Keys per-attempt media/telemetry objects and aligns with `print_history.attemptNumber`.
boundingBoxrequirednullable
object
{x,y,z} mm bounding box of what this job prints. Null until computed.
xrequired
number
yrequired
number
zrequired
number
buildThumbnailUrirequirednullable
string

A URL to a recolored thumbnail that reflects any material customizations applied to the print job. Populated after material assignments are made, giving a more accurate preview of the expected output colors.

cameraThumbnailUrirequirednullable
string
Camera-captured snapshot from the moment Fuse detected the last layer of the print. Persisted to the files bucket. Null unless Fuse successfully captured and uploaded.
cancelledAtrequirednullable
string
format: date-time
coloredThumbnailUrirequirednullable
string

A URL to a thumbnail recolored to match the specific filament loaded in the assigned printer. Populated once the print job is assigned to a printer, and cleared if the job is unassigned.

createdAtrequired
string
format: date-time
createdByActorIdrequirednullable
string
Who queued this job — see the column comments on `print_jobs`.
createdByLabelrequirednullable
string
createdByTyperequirednullable
string
customMetadataoptionalnullable
Record<string, any>
Construct a type with a set of properties K of type T
errorMessagerequirednullable
string
extensionsoptionalnullable
object
3mfoptional
object
gcodeFilerequired
string
plateIdrequired
number
mergedPlateoptional
object
Present on merged-plate parent jobs (see MergedPlateExtension).
bedSizeoptional
object
{x,y,z} mm build volume of the target plate.
childJobIdsoptional
string[]
Committed layout mirrored onto the parent row so the web app can render a live silhouette thumbnail from durable data. The authoritative copy lives on the synthetic build's MergedPlateExtension, but success-status builds are archived out of client caches — the parent job row lives exactly as long as the queue entry. Absent on parents created before the stamp shipped (clients fall back to the server-authored layout SVG).
filamentColoursoptional
string[]
The plate's filament colours, indexed by slot (gaps null), mirrored for the same reason as `layout`: a merged parent has no part to read them from, so this is what lets the queue report every filament the plate demands instead of only the first. Absent on single-color plates, which carry exactly one assignment and already render correctly.
footprintsoptional
Record<string, object>
Construct a type with a set of properties K of type T
layoutoptional
object[]
processOverridesoptional
Record<string, string>
Construct a type with a set of properties K of type T
slicerVersionIdoptional
string
SlicerVersion.id the plate optimizer chose for this merged plate (from the store's slicer-compatibility policy). Honored at dispatch so the plate slices with that version instead of the store default. Absent = store slicer.
serialsoptional
object[]
Serials embedded in what this job prints, stamped at job creation. A merged-plate parent aggregates its children's serials so the queue row that is actually shown carries the full list.
parameterNamerequired
string
sequenceIdrequired
string
pattern: ^[a-z0-9]{24}$
sequenceNamerequired
string
serialrequired
string
targetoptional
object
The physical item a serial was allocated for, recorded so queue and history views can explain which item received which number. A plate-aware share-mode stamp carries only the plate (the value applies to every matching occurrence there); an increment-mode stamp pins the exact object instance in the 3MF's stable `(object_id, instance_id)` identity.
valuerequired
number
filesToPrintrequired
string[]
fuseTelemetryUrirequirednullable
string
Fuse flight-recorder artifact for the current attempt (gzipped JSONL under the permanent `telemetry/` prefix). Confirmed asynchronously by Fuse after the print ends, like `timelapseUri`.
gcodeAnalysisSha256requirednullable
string
SHA256 hash of analyzed gcode content — stable key for extrusion lookup
groupIdrequirednullable
string
Group identifier for visually-collapsed print-queue rows. Assigned at emission (one per plate cluster within a build). Split mints fresh groupIds for non-first buckets. May be null for legacy rows that predate the grouping feature.
pattern: ^[a-z0-9]{24}$
hiddenrequired
boolean
idrequired
string
pattern: ^[a-z0-9]{24}$
isGcodeCachedrequired
boolean
labelrequired
string
linkedPartIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
logsUrirequirednullable
string
materialAssignmentsrequirednullable
Record<string, object[]>
Construct a type with a set of properties K of type T
materialMappingrequirednullable
object[]
amsIndexoptional
number
Visual AMS array index: -1 for spool, 0+ for AMS units
coloroptional
string
filamentSystemProfileIdoptionalnullable
number
filamentUserProfileIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
materialIdoptional
string
materialTypeoptional
string
nameoptional
string
skipoptional
boolean
slotoptional
number
slotIndexoptional
number
Slot within the AMS, or spool index for multiple spools
variantIdoptional
string
orderIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderItemIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
overriddenProcessProfileIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
parameterOverridesrequired
object[]
namerequired
string
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
parentJobIdrequirednullable
string
Set on jobs merged onto a shared plate; points at the merged (parent) job. Children mirror the parent's status and are excluded from independent matching.
pattern: ^[a-z0-9]{24}$
partBuildIdrequired
string
pattern: ^[a-z0-9]{24}$
partIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
partNamerequired
string
printingCompletedAtrequirednullable
string
format: date-time
printingStartedAtrequirednullable
string
format: date-time
priorityrequired
100 | 1000
1001000
profileUrisrequirednullable
string[]
quantityIndexrequired
number
quantityTotalrequired
number
queueOrderrequired
number
min: 0
requiredPrinterTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
sendFailureCountrequired
number
Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries without the printer starting). Reset on retry from a terminal state.
skipObjectIdsoptionalnullable
string[]
User-selected objects to skip on this job's plate, as identifyId strings (resolved at queue time from the part's plate object list). When the print starts, a Bambu `skip_objects` command is auto-sent for these. Null/empty means print everything. Stored as strings; converted to integer obj_list at send time.
skipObjectsDataoptionalnullable
object
excludedUsageoptional
object
Per-slot material excluded from an attempt because its object was skipped.
bySlotrequired
Record<string, number>
Construct a type with a set of properties K of type T
gramsBySlotoptional
Record<string, number>
Construct a type with a set of properties K of type T
objectIdsrequired
string[]
Skipped object ids the gcode analysis could actually attribute.
totalGramsoptional
number
totalMmrequired
number
objectsrequired
object[]
identifyIdrequired
string
namerequired
string
skippedrequired
boolean
pickImageUrioptional
string
runtimeSkipsoptional
object[]
Objects skipped at runtime (mid-print or at print start), as observed
atoptional
string
ISO timestamp when the skip was recorded
identifyIdrequired
string
Bambu label-object id (slice_info identify_id) as a decimal string
layerrequirednullable
number
Printer-reported layer when the skip was observed: material usage for the object is counted up to and including this layer. -1 means the skip was sent before printing began; null means the timing is unknown.
topImageUrioptional
string
skuIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
skuInstancerequirednullable
number
skuNamerequirednullable
string
slicedGcodeUrirequirednullable
string
slicerInputHashrequirednullable
string
statusrequired
enum
pendingassignedslicingslicedfinalizingwaiting-for-approvalready-for-printersending-to-printerprintingpausedcompletedfailedcancelled
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
taskIdrequired
number
thumbnailUrirequirednullable
string

A URL to the part's original thumbnail image, carried over from the part at the time the print job was created.

timelapseUrirequirednullable
string
MP4 timelapse Fuse encoded from frames captured during the print and uploaded to the snapshots bucket under the `timelapses/` prefix. Null unless the store has timelapses enabled and Fuse uploaded successfully.
updatedAtrequired
string
format: date-time
printStatusrequired
"pending" | "printing" | "success" | "error" | "cancelled"
pendingprintingsuccesserrorcancelled
priorityrequired
100 | 1000
1001000
quantityrequired
number
min: 0max: 500
requiredPrinterTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
skuBuildIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
skuIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
skuInstanceStartoptionalnullable
number
skuNamerequirednullable
string
statusrequired
enum
pendingbuildingqueuedfulfillingpreparingsending-to-printerprintingsuccesserrorcancelled
stepsrequired
object[]
builderrequired
"slic3r" | "openscad" | "cadquery" | "text3mf"
slic3ropenscadcadquerytext3mf
cachedBuildStepIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
cachedOutputFilerequirednullable
string
completedAtrequirednullable
string
format: date-time
createdAtrequired
string
format: date-time
dismissedrequired
boolean
idrequired
string
pattern: ^[a-z0-9]{24}$
inputFilesrequired
string[]
min items: 1
inputHashrequirednullable
string
inputParametersoptional
object
buildVariablesoptional
string[]
colorsoptional
object[]
colorrequired
string
indexrequired
number
typerequirednullable
string
modeoptional
"step" | "script"
"step" tessellates the input STEP file instead of running a script.
stepscript
paramsoptional
Record<string, any>
Construct a type with a set of properties K of type T
occurrenceSubstitutionsoptional
object[]
Instance-addressed replacements; they win over the name-keyed map.
instanceIdrequired
number
0-based instance index among the object's build items.
keyrequired
string
Slot key (a `PrintagoParam*` volume name).
objectIdrequired
string
`model_settings.config` object id of the target object definition.
textrequired
string
outputFilesoptional
string[]
sizingoptional
Record<string, "stretch" | "fit" | "unconstrained">
Construct a type with a set of properties K of type T
substitutionsoptional
Record<string, string>
Construct a type with a set of properties K of type T
logsrequired
string[]
nextStepIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderrequired
number
min: 0
outputFilesrequired
string[]
min items: 1
partBuildIdrequired
string
pattern: ^[a-z0-9]{24}$
requiresAssignedPrinterrequired
boolean
startedAtrequirednullable
string
format: date-time
statusrequired
enum
pendingrunningsuccesserrorcancelledcachedforce_running
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
thumbnailUrirequirednullable
string
updatedAtrequired
string
format: date-time
Variant 2SearchResponseStandardized search response with data, metadata, and query information
datarequired
Record<string, any>[]
Array of matching entities
metarequired
object
Pagination and result metadata
countrequired
number
Number of records returned in this response
executionTimerequired
number
Query execution time in milliseconds
hasMorerequired
boolean
Whether there are more records available
limitrequired
number
Maximum number of records requested
offsetrequired
number
Number of records skipped
totalrequired
number
Total number of matching records (before pagination)

Example Response

200 OK — application/json
[
  {
    "partId": "string",
    "skuBuildId": "string",
    "skuId": "string",
    "skuName": "string",
    "label": "string",
    "partCopy": {
      "name": "string",
      "type": "scad",
      "description": "string",
      "fileUris": [
        "string"
      ],
      "fileHashes": [
        "string"
      ],
      "thumbnailUri": "string",
      "parameters": [
        {
          "default": 1,
          "options": [
            {
              "value": "string",
              "label": "string"
            }
          ],
          "description": "string",
          "min": 1,
          "max": 1,
          "step": 1,
          "acceptedContentTypes": [
            "string"
          ],
          "multiple": true,
          "defaultUri": "string",
          "label": "string",
          "serialReuse": "share",
          "sizing": "stretch",
          "name": "string",
          "type": "number",
          "value": 1
        }
      ],
      "printTags": {
        "printer.provider": "string",
        "printer.id": "string",
        "printer.nozzleDiameter": "string",
        "printer.modelName": "string",
        "filament.type": "string",
        "user.tags": "string"
      },
      "overriddenProcessProfileId": "string",
      "folderId": "string",
      "materials": [
        {
          "index": 0,
          "color": "string",
          "type": "string",
          "skip": true,
          "name": "string",
          "identifier": "string"
        }
      ],
      "slicerOverride": "string",
      "metadata": {
        "printerModel": "string",
        "filamentType": [
          "string"
        ],
        "filamentColors": [
          "string"
        ],
        "filamentDensities": [
          1
        ],
        "filamentDiameters": [
          1
        ],
        "nozzleDiameter": "string",
        "profileCompat": {
          "sliced": "string",
          "compatible": [
            "string"
          ],
          "safe": [
            "string"
          ]
        },
        "slicerVersion": {
          "engine": "orcaslicer",
          "version": "string"
        },
        "plates": [
          {
            "id": 1,
            "name": "string",
            "locked": true,
            "filamentMapMode": "string",
            "filamentMaps": [
              1
            ],
            "gcodeFile": "string",
            "thumbnailFile": "string",
            "thumbnailUploadedUri": "string",
            "thumbnailRenderedUri": "string",
            "thumbnailNoLightFile": "string",
            "thumbnailData": "string",
            "topFile": "string",
            "pickFile": "string",
            "topData": "string",
            "pickData": "string",
            "topUploadedUri": "string",
            "pickUploadedUri": "string",
            "patternBboxFile": "string",
            "sliced": {
              "index": 1,
              "extruderType": "string",
              "nozzleVolumeType": "string",
              "printerModelId": "string",
              "nozzleDiameters": "string",
              "timelapseType": "string",
              "prediction": 1,
              "weight": 1,
              "outside": true,
              "supportUsed": true,
              "labelObjectEnabled": true,
              "filamentMaps": "string",
              "objects": [
                {}
              ],
              "filaments": [
                {}
              ],
              "warnings": [
                {}
              ],
              "layerFilamentLists": [
                {}
              ]
            },
            "filamentIds": [
              "string"
            ]
          }
        ],
        "filamentIds": [
          "string"
        ],
        "textSlots": [
          {
            "key": "string",
            "label": "string",
            "text": "string",
            "volumeCount": 1,
            "fontName": "string",
            "fontVersion": "string",
            "surfaceType": 1,
            "occurrences": [
              {
                "plateId": 1,
                "objectId": "string",
                "instanceId": 1,
                "identifyId": "string"
              }
            ]
          }
        ],
        "plateRenderSourceHash": "string"
      },
      "slicingEstimate": {
        "estimatedPrintTimeSeconds": 1,
        "materials": [
          {
            "index": 1,
            "usedGrams": 1,
            "usedMeters": 1,
            "materialType": "string",
            "color": "string"
          }
        ],
        "totalWeightGrams": 1,
        "profiles": {
          "machineProfileId": "string",
          "machineProfileName": "string",
          "processProfileId": "string",
          "processProfileName": "string",
          "filamentProfileIds": [
            "string"
          ],
          "filamentProfileNames": [
            "string"
          ]
        },
        "slicedAt": "string",
        "slicerVersion": "string",
        "plates": [
          {
            "plateId": 1,
            "estimatedPrintTimeSeconds": 1,
            "materials": [
              {
                "index": 1,
                "usedGrams": 1,
                "usedMeters": 1,
                "materialType": "string",
                "color": "string"
              }
            ],
            "totalWeightGrams": 1
          }
        ]
      },
      "use3MFProcessProfile": true,
      "arrangeable": true,
      "userTags": [
        "string"
      ],
      "gcodePlateUris": {},
      "meshUri": "string",
      "meshSourceHash": "string",
      "meshError": "string",
      "uploadedAt": "string",
      "customMetadata": {},
      "source": "google-drive",
      "processingStatus": "processing",
      "processing": {
        "workflowKey": "string",
        "fileHash": "string",
        "attempt": 1,
        "startedAt": "string",
        "finishedAt": "string",
        "failedStage": "fetch",
        "error": "string",
        "stages": [
          {
            "key": "fetch",
            "status": "running",
            "attempts": 1,
            "error": "string"
          }
        ]
      },
      "id": "string",
      "storeId": "string",
      "createdAt": "string",
      "updatedAt": "string"
    },
    "requiredPrinterTags": {
      "printer.provider": "string",
      "printer.id": "string",
      "printer.nozzleDiameter": "string",
      "printer.modelName": "string",
      "filament.type": "string",
      "user.tags": "string"
    },
    "quantity": 0,
    "numPartsPerSku": 1,
    "skuInstanceStart": 1,
    "parameterOverrides": [
      {
        "name": "string",
        "type": "number",
        "value": 1
      }
    ],
    "status": "pending",
    "outputFiles": [
      "string"
    ],
    "thumbnailUri": "string",
    "assignmentStartedAt": "2025-01-15T12:00:00.000Z",
    "assignmentCompletedAt": "2025-01-15T12:00:00.000Z",
    "printingStartedAt": "2025-01-15T12:00:00.000Z",
    "printingCompletedAt": "2025-01-15T12:00:00.000Z",
    "printStatus": "pending",
    "extensions": {
      "3mf": {
        "plateQuantities": {},
        "skipObjects": {},
        "plateLabels": {}
      },
      "createdBy": {
        "actorId": "string",
        "actorType": "user",
        "actorEmail": "string",
        "apiKeyId": "string"
      },
      "orderInfo": {
        "linkedPartId": "string",
        "linkedPartQuantity": 1
      },
      "boundingBox": {
        "x": 1,
        "y": 1,
        "z": 1
      },
      "mergedPlate": {
        "childJobIds": [
          "string"
        ],
        "layout": [
          {
            "jobId": "string",
            "x": 1,
            "y": 1,
            "rotationDeg": 0
          }
        ],
        "bedSize": {
          "x": 1,
          "y": 1,
          "z": 1
        },
        "mode": "manual",
        "policy": "same-order",
        "objectManifest": {},
        "machineName": "string",
        "excludeAreas": [
          {
            "x": 1,
            "y": 1,
            "width": 1,
            "height": 1
          }
        ],
        "filamentCount": 1,
        "filamentColours": [
          "string"
        ],
        "processOverrides": {},
        "childProcessSettings": {},
        "slicerVersionId": "string",
        "failure": {
          "message": "string"
        }
      },
      "consolidation": {
        "enabled": true,
        "partSpacingMm": 1,
        "plateMarginMm": 1,
        "bedSize": {
          "x": 1,
          "y": 1,
          "z": 1
        }
      },
      "customizer": {
        "unresolvedChannels": [
          {
            "index": 1,
            "hex": "string"
          }
        ]
      },
      "serials": [
        {
          "sequenceId": "string",
          "sequenceName": "string",
          "parameterName": "string",
          "value": 1,
          "serial": "string",
          "target": {
            "plateId": 1,
            "objectId": "string",
            "instanceId": 1,
            "identifyId": "string"
          }
        }
      ],
      "sequenceFanout": {
        "groupId": "string",
        "unitIndex": 1,
        "unitCount": 1,
        "buildIds": [
          "string"
        ],
        "queueOrder": 1
      }
    },
    "materialAssignments": {},
    "priority": 100,
    "position": "front",
    "orderId": "string",
    "orderItemId": "string",
    "linkedPartId": "string",
    "dismissed": true,
    "customMetadata": {},
    "id": "string",
    "storeId": "string",
    "createdAt": "2025-01-15T12:00:00.000Z",
    "updatedAt": "2025-01-15T12:00:00.000Z",
    "steps": [
      {
        "partBuildId": "string",
        "order": 0,
        "builder": "slic3r",
        "inputFiles": [
          "string"
        ],
        "inputParameters": {
          "buildVariables": [
            "string"
          ],
          "colors": [
            {
              "index": 1,
              "color": "string",
              "type": "string"
            }
          ]
        },
        "inputHash": "string",
        "cachedBuildStepId": "string",
        "cachedOutputFile": "string",
        "outputFiles": [
          "string"
        ],
        "status": "pending",
        "logs": [
          "string"
        ],
        "requiresAssignedPrinter": true,
        "nextStepId": "string",
        "startedAt": "2025-01-15T12:00:00.000Z",
        "completedAt": "2025-01-15T12:00:00.000Z",
        "dismissed": true,
        "id": "string",
        "storeId": "string",
        "createdAt": "2025-01-15T12:00:00.000Z",
        "updatedAt": "2025-01-15T12:00:00.000Z"
      }
    ],
    "printJobs": [
      {
        "partBuildId": "string",
        "quantityIndex": 1,
        "quantityTotal": 1,
        "thumbnailUri": "string",
        "coloredThumbnailUri": "string",
        "buildThumbnailUri": "string",
        "cameraThumbnailUri": "string",
        "timelapseUri": "string",
        "fuseTelemetryUri": "string",
        "attemptNumber": 1,
        "sendFailureCount": 1,
        "filesToPrint": [
          "string"
        ],
        "slicerInputHash": "string",
        "isGcodeCached": true,
        "slicedGcodeUri": "string",
        "partId": "string",
        "partName": "string",
        "createdByActorId": "string",
        "createdByType": "string",
        "createdByLabel": "string",
        "skuId": "string",
        "skuName": "string",
        "parameterOverrides": [
          {
            "name": "string",
            "type": "number",
            "value": 1
          }
        ],
        "orderId": "string",
        "label": "string",
        "orderItemId": "string",
        "linkedPartId": "string",
        "skuInstance": 1,
        "queueOrder": 0,
        "priority": 100,
        "requiredPrinterTags": {
          "printer.provider": "string",
          "printer.id": "string",
          "printer.nozzleDiameter": "string",
          "printer.modelName": "string",
          "filament.type": "string",
          "user.tags": "string"
        },
        "overriddenProcessProfileId": "string",
        "taskId": 1,
        "profileUris": [
          "string"
        ],
        "assignedPrinterId": "string",
        "assignmentStartedAt": "2025-01-15T12:00:00.000Z",
        "assignmentCompletedAt": "2025-01-15T12:00:00.000Z",
        "printingStartedAt": "2025-01-15T12:00:00.000Z",
        "printingCompletedAt": "2025-01-15T12:00:00.000Z",
        "cancelledAt": "2025-01-15T12:00:00.000Z",
        "status": "pending",
        "errorMessage": "string",
        "hidden": true,
        "logsUri": "string",
        "extensions": {
          "3mf": {
            "plateId": 1,
            "gcodeFile": "string"
          },
          "mergedPlate": {
            "processOverrides": {},
            "slicerVersionId": "string",
            "childJobIds": [
              "string"
            ],
            "layout": [
              {
                "jobId": "string",
                "x": 1,
                "y": 1
              }
            ],
            "bedSize": {
              "x": 1,
              "y": 1,
              "z": 1
            },
            "footprints": {},
            "filamentColours": [
              "string"
            ]
          },
          "serials": [
            {
              "sequenceId": "string",
              "sequenceName": "string",
              "parameterName": "string",
              "value": 1,
              "serial": "string",
              "target": {
                "plateId": 1,
                "objectId": "string",
                "instanceId": 1,
                "identifyId": "string"
              }
            }
          ]
        },
        "skipObjectsData": {
          "objects": [
            {
              "identifyId": "string",
              "name": "string",
              "skipped": true
            }
          ],
          "topImageUri": "string",
          "pickImageUri": "string",
          "runtimeSkips": [
            {
              "identifyId": "string",
              "layer": 1,
              "at": "string"
            }
          ],
          "excludedUsage": {
            "objectIds": [
              "string"
            ],
            "bySlot": {},
            "gramsBySlot": {},
            "totalMm": 1,
            "totalGrams": 1
          }
        },
        "skipObjectIds": [
          "string"
        ],
        "materialMapping": [
          {
            "slot": 1,
            "amsIndex": 1,
            "slotIndex": 1,
            "skip": true,
            "variantId": "string",
            "materialId": "string",
            "materialType": "string",
            "name": "string",
            "color": "string",
            "filamentUserProfileId": "string",
            "filamentSystemProfileId": 1
          }
        ],
        "materialAssignments": {},
        "gcodeAnalysisSha256": "string",
        "groupId": "string",
        "parentJobId": "string",
        "boundingBox": {
          "x": 1,
          "y": 1,
          "z": 1
        },
        "customMetadata": {},
        "id": "string",
        "storeId": "string",
        "createdAt": "2025-01-15T12:00:00.000Z",
        "updatedAt": "2025-01-15T12:00:00.000Z"
      }
    ]
  }
]