Workshop Checklists
Attach checklist templates to workshop jobs and track item completion. When a checklist is attached to a workshop entry, staff can mark each item as complete, record values, and add notes.
Endpointsโ
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/workshop/{id}/checklists | List checklists |
| POST | /v1/workshop/{id}/checklists | Attach checklist |
| DELETE | /v1/workshop/{workshopId}/checklists/{checklistId} | Remove checklist |
| PATCH | /v1/workshop/{workshopId}/checklists/{checklistId}/items/{itemId} | Complete item |
| DELETE | /v1/workshop/{workshopId}/checklists/{checklistId}/items/{itemId} | Reset item |
List Checklistsโ
Retrieve all checklists attached to a workshop entry, including item completion status and progress.
Endpointโ
GET /v1/workshop/{id}/checklists
Authenticationโ
Requires an API key with the products:read scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The workshop entry ID |
Responseโ
{
"data": [
{
"id": 10,
"workshop_log_id": 1,
"template_id": 1,
"template_name": "Bike Safety Inspection",
"status": "in_progress",
"status_label": "In Progress",
"progress": {
"completed": 3,
"total": 5,
"percentage": 60
},
"has_critical_failures": false,
"items": [
{
"id": 101,
"checklist_id": 10,
"label": "Check tyre pressure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 0,
"value": "1",
"notes": null,
"photo_url": null,
"is_completed": true,
"is_failed": false,
"is_critical_failure": false,
"completed_by": {
"id": 5,
"name": "John Smith"
},
"completed_at": "2026-02-01T10:15:00+00:00",
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T10:15:00+00:00"
},
{
"id": 102,
"checklist_id": 10,
"label": "Brake function test",
"description": "Test front and rear brakes",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1,
"value": "pass",
"notes": "Front pads at 60%, rear at 40%",
"photo_url": null,
"is_completed": true,
"is_failed": false,
"is_critical_failure": false,
"completed_by": {
"id": 5,
"name": "John Smith"
},
"completed_at": "2026-02-01T10:18:00+00:00",
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T10:18:00+00:00"
},
{
"id": 103,
"checklist_id": 10,
"label": "Chain wear measurement",
"description": "Measure chain stretch in mm",
"type": "numeric",
"is_critical": false,
"sort_order": 2,
"value": null,
"notes": null,
"photo_url": null,
"is_completed": false,
"is_failed": false,
"is_critical_failure": false,
"completed_by": null,
"completed_at": null,
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T09:30:00+00:00"
}
],
"completed_at": null,
"completed_by": null,
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T10:18:00+00:00"
}
],
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T11:00:00+00:00"
}
}
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/workshop/1/checklists" \
-H "Authorization: Bearer YOUR_API_KEY"
Attach Checklistโ
Attach a checklist template to a workshop entry. This creates a new checklist instance with all items from the template, ready for completion.
Endpointโ
POST /v1/workshop/{id}/checklists
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The workshop entry ID |
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
template_id | integer | Yes | The checklist template ID to attach |
Response (201 Created)โ
{
"data": {
"id": 11,
"workshop_log_id": 1,
"template_id": 2,
"template_name": "Ski Binding Check",
"status": "pending",
"status_label": "Pending",
"progress": {
"completed": 0,
"total": 3,
"percentage": 0
},
"has_critical_failures": false,
"items": [
{
"id": 110,
"checklist_id": 11,
"label": "Verify DIN setting matches skier weight",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 0,
"value": null,
"notes": null,
"photo_url": null,
"is_completed": false,
"is_failed": false,
"is_critical_failure": false,
"completed_by": null,
"completed_at": null,
"created_at": "2026-02-01T12:00:00+00:00",
"updated_at": "2026-02-01T12:00:00+00:00"
},
{
"id": 111,
"checklist_id": 11,
"label": "Test toe release",
"description": null,
"type": "pass_fail",
"is_critical": true,
"sort_order": 1,
"value": null,
"notes": null,
"photo_url": null,
"is_completed": false,
"is_failed": false,
"is_critical_failure": false,
"completed_by": null,
"completed_at": null,
"created_at": "2026-02-01T12:00:00+00:00",
"updated_at": "2026-02-01T12:00:00+00:00"
}
],
"completed_at": null,
"completed_by": null,
"created_at": "2026-02-01T12:00:00+00:00",
"updated_at": "2026-02-01T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T12:00:00+00:00"
}
}
Example Requestโ
curl -X POST "https://app.equipdash.com/api/v1/workshop/1/checklists" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_id": 2
}'
Remove Checklistโ
Remove a checklist from a workshop entry. All completion data and uploaded photos for this checklist will be deleted.
Endpointโ
DELETE /v1/workshop/{workshopId}/checklists/{checklistId}
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
workshopId | integer | path | The workshop entry ID |
checklistId | integer | path | The checklist ID |
Response (204 No Content)โ
No response body.
Example Requestโ
curl -X DELETE "https://app.equipdash.com/api/v1/workshop/1/checklists/11" \
-H "Authorization: Bearer YOUR_API_KEY"
Complete Itemโ
Mark a checklist item as complete, providing a value appropriate for the item type and optional notes.
Endpointโ
PATCH /v1/workshop/{workshopId}/checklists/{checklistId}/items/{itemId}
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
workshopId | integer | path | The workshop entry ID |
checklistId | integer | path | The checklist ID |
itemId | integer | path | The checklist item ID |
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
value | string | Depends | Required for pass_fail ("pass" or "fail"). Optional for text, numeric, photo. Ignored for checkbox. Max 500 characters. |
notes | string | No | Additional notes (max 1000 characters) |
Item Type Value Requirementsโ
| Type | Value |
|---|---|
checkbox | Value is auto-set to "1". No value field needed. |
pass_fail | Must be "pass" or "fail" |
text | Free-form text string |
numeric | Must be a numeric value |
photo | Optional caption text (photo upload via separate mechanism) |
Responseโ
{
"data": {
"id": 102,
"checklist_id": 10,
"label": "Brake function test",
"description": "Test front and rear brakes",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1,
"value": "fail",
"notes": "Rear brake cable needs replacement",
"photo_url": null,
"is_completed": true,
"is_failed": true,
"is_critical_failure": true,
"completed_by": {
"id": 5,
"name": "John Smith"
},
"completed_at": "2026-02-01T14:00:00+00:00",
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T14:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T14:00:00+00:00"
}
}
Example Requestsโ
Complete a Checkbox Itemโ
curl -X PATCH "https://app.equipdash.com/api/v1/workshop/1/checklists/10/items/101" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Complete a Pass/Fail Item with Notesโ
curl -X PATCH "https://app.equipdash.com/api/v1/workshop/1/checklists/10/items/102" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"value": "fail",
"notes": "Rear brake cable needs replacement"
}'
Complete a Numeric Itemโ
curl -X PATCH "https://app.equipdash.com/api/v1/workshop/1/checklists/10/items/104" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"value": "0.75",
"notes": "Chain stretch measured at 0.75mm - within tolerance"
}'
Reset Itemโ
Reset a completed checklist item back to incomplete. Clears the value, notes, photo, and completion data.
Endpointโ
DELETE /v1/workshop/{workshopId}/checklists/{checklistId}/items/{itemId}
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
workshopId | integer | path | The workshop entry ID |
checklistId | integer | path | The checklist ID |
itemId | integer | path | The checklist item ID |
Responseโ
{
"data": {
"id": 102,
"checklist_id": 10,
"label": "Brake function test",
"description": "Test front and rear brakes",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1,
"value": null,
"notes": null,
"photo_url": null,
"is_completed": false,
"is_failed": false,
"is_critical_failure": false,
"completed_by": null,
"completed_at": null,
"created_at": "2026-02-01T09:30:00+00:00",
"updated_at": "2026-02-01T14:30:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T14:30:00+00:00"
}
}
Example Requestโ
curl -X DELETE "https://app.equipdash.com/api/v1/workshop/1/checklists/10/items/102" \
-H "Authorization: Bearer YOUR_API_KEY"
Checklist Statusesโ
| Status | Description |
|---|---|
pending | No items completed yet |
in_progress | Some items completed |
completed | All items completed, no failures |
completed_with_failures | All items completed but has pass/fail failures |
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 403 | insufficient_scope | API key lacks required scope |
| 404 | resource_not_found | Workshop entry, checklist, or item not found |
| 422 | validation_error | Invalid request data |
| 422 | attach_error | Template already attached or not found |
| 422 | complete_error | Invalid value for item type |
Common Validation Errorsโ
- Template not found: The specified template ID does not exist
- Template already attached: This template is already attached to the workshop entry
- Pass/Fail items require a value of "pass" or "fail": Invalid value for pass_fail item type
- Numeric items require a numeric value: Non-numeric value provided for numeric item