Skip to main content
Manufacturing API (Roadmap)roadmap

Roadmap: Work Orders

Planned: full lifecycle (Draft → InProgress → Completed/Cancelled) with InventoryAllocation reservations on release and atomic stock movements on completion.

Status

Public API: not yet exposed. Internal HTTP surface: live at /work-orders/* (HelloBooks frontend only). gRPC layer: workOrder.grpc.controller.js in Accounting-V3.

Below is the planned curated-subset shape, extracted from the internal surface.

Lifecycle

Work Orders move through a strict state machine. Each transition has its own endpoint:

Draft  ─── release ───▶  InProgress  ─── complete ───▶  Completed
  │                          │
  └──── cancel ───▶  Cancelled  ◀───  cancel ────┘
  • Release (Draft → InProgress): creates InventoryAllocation reservations against component stock. If insufficient stock, release fails atomically.
  • Complete (InProgress → Completed): consumes the reservations and emits stock movements (component decrement, output increment). All-or-nothing inside a DB transaction.
  • Cancel (Draft|InProgress → Cancelled): releases reservations. Cannot cancel a Completed Work Order — that requires a reversing entry.

Planned endpoints

MethodPlanned pathActionPlanned scope
GET/orgs/:o/entities/:e/work-ordersListworkOrder:read
GET/orgs/:o/entities/:e/work-orders/:idRead oneworkOrder:read
POST/orgs/:o/entities/:e/work-ordersCreate (Draft)workOrder:create
PUT/orgs/:o/entities/:e/work-orders/:idUpdate (Draft only)workOrder:update
PUT/orgs/:o/entities/:e/work-orders/:id/releaseDraft → InProgressworkOrder:update
PUT/orgs/:o/entities/:e/work-orders/:id/completeInProgress → CompletedworkOrder:update
PUT/orgs/:o/entities/:e/work-orders/:id/cancel→ CancelledworkOrder:update
DELETE/orgs/:o/entities/:e/work-ordersSoft-archive (bulk)workOrder:delete
PUT/orgs/:o/entities/:e/work-orders/restoreUn-archive (bulk)workOrder:update

Planned webhook events

  • work_order.released — fired after successful release (allocations created)
  • work_order.completed — fired after successful complete (stock movements posted)
  • work_order.cancelled — fired after successful cancel (allocations released)

Each event payload will carry the work_order.id, the new state, and a summary of inventory impact (allocations created/released, stock movements emitted).

    Roadmap: HelloBooks Work Order API