Zudo Works

BOM and work order endpoints

Method & pathBodyPermission
GET /boms · GET /boms/:id—bom.read
POST /bomsparent_item_id, revision, notes?, lines[{ component_item_id, quantity_per, scrap_percent?, notes? }]bom.write
PUT /boms/:idsame (drafts only — bom_immutable)bom.write
POST /boms/:id/release— (obsoletes the previous released revision)bom.write
GET /work-orders · GET /work-orders/:idlist filters: status, item_id, due_from, due_to, searchjobs.read
GET /work-orders/:id/cost{ material, labour, total, per_unit, completed_quantity }jobs.read
GET /work-orders/:id/movementsthe job's JIS / JRT documentsjobs.read
POST /work-ordersitem_id, quantity, due_date?, customer_reference?, notes?, operations? → JOB-… draftjobs.write
PATCH /work-orders/:idquantity?, due_date?, customer_reference?, notes?, labour_hours?, labour_rate?, operations?jobs.write
`POST /work-orders/:id/releasestartcompleteclosecancel`complete takes completed_quantityjobs.write
POST /work-orders/:id/issuesidempotency_key, movement_date, from_warehouse_id, reason?, lines[{ component_item_id, quantity }]jobs.issue
POST /work-orders/:id/returnsidempotency_key, movement_date, to_warehouse_id, reason?, lines[…] (≤ issued — return_exceeds_issued)jobs.issue
GET /work-orders/:id/steps · PUT /work-orders/:id/stepssteps[{ name, work_center_id, planned_hours }]jobs.read / jobs.write
`POST /work-orders/:id/steps/:stepId/startcomplete`— (in order)jobs.write
GET /work-centers · POST · PATCH /:id · `POST /:id/deactivatereactivate`code, name, machine_type?, hourly_ratejobs.read / jobs.write

Last updated