Field operations
Use client.fieldOps on @workorder-systems/sdk for tool catalog (create/update + list), checkouts/returns, and shift handover workflows. Set tenant context and refresh the JWT like other tenant APIs.
Tool catalog (create & update)
Requires tool.manage (typically admin/manager). status must be lowercase snake_case (^[a-z0-9_]+$); default is available. Only available tools can be checked out.
client.fieldOps.createTool / updateTool
const toolId = await client.fieldOps.createTool({
tenantId,
name: 'Torque wrench 1/2"',
assetTag: 'TW-204',
serialNumber: 'CDI-77889',
status: 'available',
})
await client.fieldOps.updateTool({
tenantId,
toolId,
name: 'Torque wrench 1/2" (cal due Q2)',
status: 'in_calibration', // not allowed while checked out
})
List tools and checkouts
client.fieldOps.listTools()
const tools = await client.fieldOps.listTools()
// ToolRow[] — id, name, status, serial_number, asset_tag, …
Open checkouts
const open = await client.fieldOps.listToolCheckouts()
// ToolCheckoutRow[] — filter client-side where returned_at is null
Checkout and return
Checkout to user (optional work order)
const checkoutId = await client.fieldOps.checkoutTool({
tenantId,
toolId,
checkedOutToUserId: userId,
workOrderId: woIdOrNull,
dueAt: null,
notes: null,
})
Return
await client.fieldOps.returnTool({
tenantId,
checkoutId,
})
Shift handovers
Create → submit → acknowledge
const handoverId = await client.fieldOps.createShiftHandover({
tenantId,
locationId,
toUserId,
shiftStartedAt: new Date().toISOString(),
shiftEndedAt: new Date().toISOString(),
summary: 'Line 2 steady; see items',
})
await client.fieldOps.addShiftHandoverItem({
tenantId,
handoverId,
body: 'Pump 3 vibration elevated — WO opened',
workOrderId: woId,
})
await client.fieldOps.submitShiftHandover({ tenantId, handoverId })
// Incoming shift:
await client.fieldOps.acknowledgeShiftHandover({ tenantId, handoverId })
List handovers
const rows = await client.fieldOps.listShiftHandovers()
Permissions
| Permission | Use |
|---|---|
tool.manage | Create/edit tools (DB-side today) |
tool.checkout / tool.return | Checkout and return RPCs |
shift_handover.create | Create, submit, add items |
shift_handover.acknowledge | Acknowledge incoming handover |