Execute MaintainX primary workflow: Work Order lifecycle management. Use when creating, updating, and managing work orders through their full lifecycle, from creation to completion with all status transitions. Trigger with phrases like "maintainx work order", "create work order", "work order lifecycle", "maintenance task", "manage work orders".
Master the complete work order lifecycle in MaintainX -- from creation through completion. Work orders are the core unit of maintenance operations.
maintainx-install-auth setupMAINTAINX_API_KEY environment variable configuredOPEN ──→ IN_PROGRESS ──→ COMPLETED ──→ CLOSED
│ │ ↑
│ ↓ │
│ ON_HOLD ───────────┘
│
└──→ CLOSED (cancelled)
import { MaintainXClient } from './maintainx/client';
const client = new MaintainXClient();
// Create a corrective work order
const { data: wo } = await client.createWorkOrder({
title: 'Pump Station #3 - Seal Leak Repair',
description: 'Detected water leak at the mechanical seal. Needs immediate attention.',
priority: 'HIGH',
status: 'OPEN',
assignees: [{ type: 'USER', id: 4521 }],
assetId: 8901,
locationId: 2345,
dueDate: '2026-03-21T17:00:00Z',
categories: ['CORRECTIVE'],
});
console.log(`Work order #${wo.id} created`);
// Technician starts work
await client.updateWorkOrder(wo.id, {
status: 'IN_PROGRESS',
});
// Put on hold (waiting for parts)
await client.updateWorkOrder(wo.id, {
status: 'ON_HOLD',
onHoldReason: 'Waiting for replacement seal kit from supplier',
});
// Resume and complete
await client.updateWorkOrder(wo.id, {
status: 'IN_PROGRESS',
});
await client.updateWorkOrder(wo.id, {
status: 'COMPLETED',
completionNotes: 'Replaced mechanical seal. Tested for 30 min with no leaks.',
});
// Fetch open work orders sorted by priority
const { data: openOrders } = await client.getWorkOrders({
status: 'OPEN',
limit: 25,
});
for (const order of openOrders.workOrders) {
console.log(`#${order.id} [${order.priority}] ${order.title}`);
}
// Paginate through all IN_PROGRESS orders
async function getAllInProgress() {
const allOrders = [];
let cursor: string | undefined;
do {
const { data } = await client.getWorkOrders({
status: 'IN_PROGRESS',
limit: 100,
cursor,
});
allOrders.push(...data.workOrders);
cursor = data.cursor;
} while (cursor);
return allOrders;
}
// Add a technician note
await client.request('POST', `/workorders/${wo.id}/comments`, {
body: 'Arrived on site. Isolating pump before disassembly.',
});
// Add a completion photo (URL-based)
await client.request('POST', `/workorders/${wo.id}/files`, {
url: 'https://storage.example.com/photos/seal-repair-complete.jpg',
name: 'seal-repair-complete.jpg',
});
// Assign to a team instead of individual
const { data: teams } = await client.request('GET', '/teams');
const mechTeam = teams.teams.find((t: any) => t.name === 'Mechanical');
await client.updateWorkOrder(wo.id, {
assignees: [{ type: 'TEAM', id: mechTeam.id }],
});
| Error | Cause | Solution |
|-------|-------|----------|
| 400 Bad Request | Missing title field | Include at least title in POST body |
| 404 Not Found | Invalid asset/location/user ID | Verify referenced IDs exist via GET endpoints |
| 403 Forbidden | Insufficient permissions | Check user role has work order write access |
| 422 Invalid transition | Invalid status change (e.g., CLOSED to OPEN) | Follow the status transition flow above |
For asset and location management, see maintainx-core-workflow-b.
Bulk-create preventive maintenance work orders:
const pmSchedule = [
{ title: 'Weekly HVAC Filter Check', priority: 'LOW', categories: ['PREVENTIVE'] },
{ title: 'Monthly Fire Extinguisher Inspection', priority: 'MEDIUM', categories: ['PREVENTIVE'] },
{ title: 'Quarterly Elevator Safety Audit', priority: 'HIGH', categories: ['PREVENTIVE'] },
];
for (const pm of pmSchedule) {
const { data } = await client.createWorkOrder(pm);
console.log(`PM created: #${data.id} - ${data.title}`);
}
Filter work orders by date range:
curl -s "https://api.getmaintainx.com/v1/workorders?createdAtGte=2026-03-01T00:00:00Z&createdAtLte=2026-03-31T23:59:59Z&limit=50" \
-H "Authorization: Bearer $MAINTAINX_API_KEY" | jq '.workOrders | length'
下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity