Create an assembly

distru-create-assemblyWrite

Creates a PENDING assembly: a manufacturing or packaging job that consumes input inventory and produces output inventory, for non-compliance and Metrc products.

Inputs

Every tool also takes the common inputs.

FieldTypeRequiredDescription
assemblyobjectYes
assembly.descriptionstringNo
assembly.estimatedStartDatestringNoEstimated start. ISO 8601 with a UTC offset, e.g. "2026-09-01T00:00:00-07:00"; the company timezone is on distru-get-me.
assembly.estimatedWorkMinutesintegerNo
assembly.outputLocationIdstringNoDestination of every output; required when there are outputs. Resolve via distru-search-locations.
inputsobject[]NoInputs need at least one output to feed into.
inputs[].productIdstringYesProduct consumed. Resolve via distru-search-products.
inputs[].locationIdstringYesLocation the input is pulled from. Resolve via distru-search-locations.
inputs[].quantitystring or numberYesIn the product's unit type.
inputs[].batchIdstringNoRequired for batch- and package-tracked products (inventoryTrackingMethod on distru-search-products); for a package input, the source package's batch. Resolve via distru-search-batches (filter by productIds).
inputs[].packageIdstringNoRequired for package-tracked products. Resolve via distru-search-packages (filter by productIds).
inputs[].outputIndexintegerNoIndex in outputs of the output this input goes into. Every input feeds one output; defaults to 0 when there is exactly one output, required when there are several.
outputsobject[]NoA Metrc output sets exactly one of metrcItemId / pendingMetrcItemId / useSameItem; non-compliance outputs set none.
outputs[].productIdstringYesProduct produced. Resolve via distru-search-products.
outputs[].quantitystring or numberYesIn the product's unit type.
outputs[].batchIdstringNoExisting batch to link. Resolve via distru-search-batches.
outputs[].expirationDatestringNoUse-by date. ISO 8601 with a UTC offset, e.g. "2026-09-01T00:00:00-07:00"; the company timezone is on distru-get-me.
outputs[].packageUnitTypeIdstringNoUnit type of the produced package. Required for Metrc outputs; omit for non-compliance. Resolve via distru-search-lookups (type UNIT_TYPE).
outputs[].metrcItemIdstringNoMetrc item already in Metrc. Resolve via distru-search-metrc-items.
outputs[].pendingMetrcItemIdstringNoMetrc item created in Distru, not yet synced/approved in Metrc. Resolve via distru-search-pending-metrc-items.
outputs[].useSameItembooleanNoReuse the Metrc item of the consumed input package.
outputs[].productionBatchNumberstringNoMetrc outputs only. Setting it marks the output a production batch (no separate flag; lab-testing and traceability consequences), so set only when it truly is one. Rejected on licenses that record Metrc processing jobs (those need a Processing Job, unsupported here).

Output

Presence on a nested field assumes its parent exists.

FieldTypePresence
successenum
true
Always
dataobjectAlways
data.mutateAssembliesobject[]Can be null
data.mutateAssemblies[].idstringAlways
data.mutateAssemblies[].numberstringAlways
data.mutateAssemblies[].statusenum
COMPLETEDPENDING
Always
data.mutateAssemblies[].assemblyInputsobject[]Always
data.mutateAssemblies[].assemblyInputs[].idstringAlways
data.mutateAssemblies[].assemblyInputs[].productobjectAlways
data.mutateAssemblies[].assemblyInputs[].product.idstringAlways
data.mutateAssemblies[].assemblyInputs[].product.namestringAlways
data.mutateAssemblies[].assemblyInputs[].quantitystringAlways
data.mutateAssemblies[].assemblyInputs[].metrcQuantitystringCan be null
data.mutateAssemblies[].assemblyOutputsobject[]Always
data.mutateAssemblies[].assemblyOutputs[].idstringAlways
data.mutateAssemblies[].assemblyOutputs[].productobjectAlways
data.mutateAssemblies[].assemblyOutputs[].product.idstringAlways
data.mutateAssemblies[].assemblyOutputs[].product.namestringAlways
data.mutateAssemblies[].assemblyOutputs[].quantitystringAlways
data.mutateAssemblies[].assemblyOutputs[].metrcQuantitystringCan be null
data.mutateAssemblies[].assemblyOutputs[].statusenum
COMPLETEDPENDING
Always
What the AI reads

Creates a PENDING assembly: a manufacturing or packaging job that consumes input inventory and produces output inventory, for non-compliance and Metrc products. It never completes the assembly or submits anything to Metrc; a person completes it in the Distru web app. Inputs are not filled in from the output product's bill of materials: pass every input yourself (distru-get-product with includeBillOfMaterials lists them). To read the assembly back use distru-get-assembly with the returned id. metrcQuantity on the result is computed by this tool from quantity, converted to the package's unit type.