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

PermissionUse
tool.manageCreate/edit tools (DB-side today)
tool.checkout / tool.returnCheckout and return RPCs
shift_handover.createCreate, submit, add items
shift_handover.acknowledgeAcknowledge incoming handover

Was this page helpful?