Zudo Works

Stock endpoints

Method & pathBody / queryPermission
GET /stock/movementspage, page_size, movement_type, status, item_id, warehouse_id, from, to, searchstock.read
GET /stock/movements/:idheader, lines, ledger effects, attachments, links (purchase_order_id, work_order_id)stock.read
POST /stock/movements`movement_type (receiptissuetransferadjustment), movement_date, reference?, reason?, lines[{ item_id, from_warehouse_id?, to_warehouse_id?, quantity, unit_cost? }]` → draftstock.post
PUT /stock/movements/:idsame as create (drafts only — movement_not_draft)stock.post
POST /stock/movements/:id/postidempotency_keystock.post
POST /stock/movements/:id/cancel— (drafts only)stock.post
GET /stock/balancesitem_id?, warehouse_id?, search?, low_stock?stock.read
GET /stock/items/:itemId/historypage, page_sizestock.read
GET /dashboard/summary{ stock_value, open_jobs, jobs_due_this_week, active_items, has_data }stock.read
GET /dashboard/recent-movements?limit= · GET /dashboard/recent-jobs?limit= · GET /dashboard/movements-per-day?days=—stock.read / jobs.read

Business rules enforced: no negative stock (insufficient_stock), unit cost on receipts (unit_cost_required), reason on issues and adjustments (issue_requires_reason), immutability after posting (movement_immutable), key reuse with a different payload (idempotency_key_reused).

Last updated