Skip to main content

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โ€‹

MethodEndpointDescription
GET/v1/workshop/{id}/checklistsList checklists
POST/v1/workshop/{id}/checklistsAttach 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โ€‹

ParameterTypeLocationDescription
idintegerpathThe 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โ€‹

ParameterTypeLocationDescription
idintegerpathThe workshop entry ID

Request Bodyโ€‹

FieldTypeRequiredDescription
template_idintegerYesThe 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โ€‹

ParameterTypeLocationDescription
workshopIdintegerpathThe workshop entry ID
checklistIdintegerpathThe 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โ€‹

ParameterTypeLocationDescription
workshopIdintegerpathThe workshop entry ID
checklistIdintegerpathThe checklist ID
itemIdintegerpathThe checklist item ID

Request Bodyโ€‹

FieldTypeRequiredDescription
valuestringDependsRequired for pass_fail ("pass" or "fail"). Optional for text, numeric, photo. Ignored for checkbox. Max 500 characters.
notesstringNoAdditional notes (max 1000 characters)

Item Type Value Requirementsโ€‹

TypeValue
checkboxValue is auto-set to "1". No value field needed.
pass_failMust be "pass" or "fail"
textFree-form text string
numericMust be a numeric value
photoOptional 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โ€‹

ParameterTypeLocationDescription
workshopIdintegerpathThe workshop entry ID
checklistIdintegerpathThe checklist ID
itemIdintegerpathThe 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โ€‹

StatusDescription
pendingNo items completed yet
in_progressSome items completed
completedAll items completed, no failures
completed_with_failuresAll items completed but has pass/fail failures

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
403insufficient_scopeAPI key lacks required scope
404resource_not_foundWorkshop entry, checklist, or item not found
422validation_errorInvalid request data
422attach_errorTemplate already attached or not found
422complete_errorInvalid 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