Checklist Templates
Manage reusable checklist templates for workshop inspections, maintenance procedures, and quality checks. Templates define a list of items that staff can complete when performing workshop jobs.
Templates can be assigned to specific products, product categories, or applied to all products automatically via the apply_to_all_products flag.
Endpointsโ
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/workshop/templates | List templates |
| GET | /v1/workshop/templates/{id} | Get template |
| POST | /v1/workshop/templates | Create template |
| PATCH | /v1/workshop/templates/{id} | Update template |
| DELETE | /v1/workshop/templates/{id} | Archive template |
| POST | /v1/workshop/templates/{id}/duplicate | Duplicate template |
List Templatesโ
Retrieve all checklist templates available to your account, including prebuilt templates and your custom templates.
Endpointโ
GET /v1/workshop/templates
Authenticationโ
Requires an API key with the products:read scope.
Query Parametersโ
| Parameter | Type | Required | Description |
|---|---|---|---|
search | string | No | Search templates by name or equipment category |
category | string | No | Filter by equipment category (e.g. bikes, skis) |
type | string | No | Filter by template type: prebuilt or custom |
Responseโ
{
"data": [
{
"id": 1,
"name": "Bike Safety Inspection",
"description": "Standard safety check for all rental bikes.",
"equipment_category": "bikes",
"is_prebuilt": true,
"apply_to_all_products": false,
"item_count": 8,
"items": [
{
"id": 1,
"label": "Check tyre pressure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 0
},
{
"id": 2,
"label": "Brake function test",
"description": "Test front and rear brakes",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1
}
],
"archived": false,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
},
{
"id": 5,
"name": "Custom Ski Check",
"description": "Our custom ski inspection checklist.",
"equipment_category": "skis",
"is_prebuilt": false,
"apply_to_all_products": false,
"item_count": 5,
"items": [],
"archived": false,
"created_at": "2026-01-20T14:00:00+00:00",
"updated_at": "2026-01-20T14:00:00+00:00"
}
],
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T09:00:00+00:00"
}
}
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/workshop/templates?category=bikes" \
-H "Authorization: Bearer YOUR_API_KEY"
Get Templateโ
Retrieve a single checklist template with all its items.
Endpointโ
GET /v1/workshop/templates/{id}
Authenticationโ
Requires an API key with the products:read scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The template ID |
Responseโ
{
"data": {
"id": 1,
"name": "Bike Safety Inspection",
"description": "Standard safety check for all rental bikes.",
"equipment_category": "bikes",
"is_prebuilt": true,
"apply_to_all_products": false,
"item_count": 5,
"items": [
{
"id": 1,
"label": "Check tyre pressure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 0
},
{
"id": 2,
"label": "Brake function test",
"description": "Test front and rear brakes for proper stopping",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1
},
{
"id": 3,
"label": "Test gear shifting",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 2
},
{
"id": 4,
"label": "Chain wear measurement",
"description": "Measure chain stretch in mm",
"type": "numeric",
"is_critical": false,
"sort_order": 3
},
{
"id": 5,
"label": "Additional notes",
"description": null,
"type": "text",
"is_critical": false,
"sort_order": 4
}
],
"archived": false,
"created_at": "2026-01-15T10:00:00+00:00",
"updated_at": "2026-01-15T10:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T09:00:00+00:00"
}
}
Example Requestโ
curl -X GET "https://app.equipdash.com/api/v1/workshop/templates/1" \
-H "Authorization: Bearer YOUR_API_KEY"
Create Templateโ
Create a new checklist template with items.
Endpointโ
POST /v1/workshop/templates
Authenticationโ
Requires an API key with the products:write scope.
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Template name (max 255 characters) |
description | string | No | Template description (max 1000 characters) |
equipment_category | string | No | Equipment category (max 100 characters) |
items | array | Yes | Array of checklist items (at least 1) |
items[].label | string | Yes | Item label text (max 255 characters) |
items[].description | string | No | Item description (max 1000 characters) |
items[].type | string | Yes | Item type: checkbox, pass_fail, text, numeric, photo |
items[].is_critical | boolean | No | Whether this is a critical item (default: false) |
Response (201 Created)โ
{
"data": {
"id": 3,
"name": "Kayak Pre-Rental Check",
"description": "Inspection checklist before renting out kayaks.",
"equipment_category": "kayaks",
"is_prebuilt": false,
"apply_to_all_products": false,
"item_count": 3,
"items": [
{
"id": 10,
"label": "Hull integrity - no cracks or holes",
"description": null,
"type": "pass_fail",
"is_critical": true,
"sort_order": 0
},
{
"id": 11,
"label": "Seat and footrests secure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 1
},
{
"id": 12,
"label": "Paddle condition notes",
"description": null,
"type": "text",
"is_critical": false,
"sort_order": 2
}
],
"archived": false,
"created_at": "2026-02-01T09:00:00+00:00",
"updated_at": "2026-02-01T09:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T09:00:00+00:00"
}
}
Example Requestโ
curl -X POST "https://app.equipdash.com/api/v1/workshop/templates" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Kayak Pre-Rental Check",
"description": "Inspection checklist before renting out kayaks.",
"equipment_category": "kayaks",
"items": [
{
"label": "Hull integrity - no cracks or holes",
"type": "pass_fail",
"is_critical": true
},
{
"label": "Seat and footrests secure",
"type": "checkbox"
},
{
"label": "Paddle condition notes",
"type": "text"
}
]
}'
Update Templateโ
Update an existing custom checklist template. Prebuilt templates cannot be edited.
Endpointโ
PATCH /v1/workshop/templates/{id}
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The template ID |
Request Bodyโ
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | Template name (max 255 characters) |
description | string | No | Template description (max 1000 characters) |
equipment_category | string | No | Equipment category (max 100 characters) |
items | array | No | Full replacement array of checklist items |
items[].id | integer | No | Existing item ID (omit for new items) |
items[].label | string | Yes | Item label text (max 255 characters) |
items[].description | string | No | Item description (max 1000 characters) |
items[].type | string | Yes | checkbox, pass_fail, text, numeric, photo |
items[].is_critical | boolean | No | Whether this is a critical item |
When items is provided, it replaces the entire items list. Include all items you want to keep (with their id). Omitted items will be removed.
Responseโ
{
"data": {
"id": 3,
"name": "Kayak Pre-Rental Check (Updated)",
"description": "Updated inspection checklist for kayaks.",
"equipment_category": "kayaks",
"is_prebuilt": false,
"apply_to_all_products": false,
"item_count": 3,
"items": [
{
"id": 10,
"label": "Hull integrity - no cracks or holes",
"description": null,
"type": "pass_fail",
"is_critical": true,
"sort_order": 0
},
{
"id": 11,
"label": "Seat and footrests secure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 1
},
{
"id": 13,
"label": "Drain plug installed",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 2
}
],
"archived": false,
"created_at": "2026-02-01T09:00:00+00:00",
"updated_at": "2026-02-01T10:30:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T10:30:00+00:00"
}
}
Example Requestโ
curl -X PATCH "https://app.equipdash.com/api/v1/workshop/templates/3" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Kayak Pre-Rental Check (Updated)",
"items": [
{
"id": 10,
"label": "Hull integrity - no cracks or holes",
"type": "pass_fail",
"is_critical": true
},
{
"id": 11,
"label": "Seat and footrests secure",
"type": "checkbox"
},
{
"label": "Drain plug installed",
"type": "checkbox"
}
]
}'
Archive Templateโ
Archive a checklist template. Archived templates are no longer available for use but existing checklists using the template are not affected. Only custom templates can be archived (prebuilt templates cannot).
Endpointโ
DELETE /v1/workshop/templates/{id}
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The template ID |
Responseโ
{
"data": {
"message": "Template archived successfully."
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T14:00:00+00:00"
}
}
Example Requestโ
curl -X DELETE "https://app.equipdash.com/api/v1/workshop/templates/3" \
-H "Authorization: Bearer YOUR_API_KEY"
Duplicate Templateโ
Create a copy of an existing template, including all its items. The new template will be a custom template owned by your account, even if duplicating a prebuilt template.
Endpointโ
POST /v1/workshop/templates/{id}/duplicate
Authenticationโ
Requires an API key with the products:write scope.
Parametersโ
| Parameter | Type | Location | Description |
|---|---|---|---|
id | integer | path | The template ID to duplicate |
Response (201 Created)โ
Returns the newly created template. The name will be suffixed with "(Copy)".
{
"data": {
"id": 4,
"name": "Bike Safety Inspection (Copy)",
"description": "Standard safety check for all rental bikes.",
"equipment_category": "bikes",
"is_prebuilt": false,
"apply_to_all_products": false,
"item_count": 5,
"items": [
{
"id": 14,
"label": "Check tyre pressure",
"description": null,
"type": "checkbox",
"is_critical": false,
"sort_order": 0
},
{
"id": 15,
"label": "Brake function test",
"description": "Test front and rear brakes",
"type": "pass_fail",
"is_critical": true,
"sort_order": 1
}
],
"archived": false,
"created_at": "2026-02-01T11:00:00+00:00",
"updated_at": "2026-02-01T11:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-01T11:00:00+00:00"
}
}
Example Requestโ
curl -X POST "https://app.equipdash.com/api/v1/workshop/templates/1/duplicate" \
-H "Authorization: Bearer YOUR_API_KEY"
Template Item Typesโ
| Type | Description | Value Format |
|---|---|---|
checkbox | Simple check/uncheck | "1" when completed |
pass_fail | Pass or fail inspection | "pass" or "fail" |
text | Free-form text entry | Any string |
numeric | Numeric measurement | Numeric string |
photo | Photo upload with optional caption | Photo URL + optional caption |
Errorsโ
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 403 | insufficient_scope | API key lacks required scope |
| 404 | resource_not_found | Template not found |
| 422 | validation_error | Invalid request data |
| 422 | create_error | Template creation failed |
| 422 | update_error | Prebuilt templates cannot be edited |
| 422 | delete_error | Prebuilt templates cannot be deleted |
Common Validation Errorsโ
- Name is required: Template name must be provided
- Items are required: At least one checklist item must be included
- Item label is required: Each item must have a label
- Invalid item type: Item type must be
checkbox,pass_fail,text,numeric, orphoto