The shop's form templates with their fields. Archived ones only with include_archived.
When to use it
Keep form templates (forms.saveTemplate: ordered fields of type heading, text, long_text, number, yes_no, choice, multi_choice, date or photos, each optionally required). Start a form on a job or one visit (forms.start) from a template, from an earlier form (copy_from_form_id, which also carries its answers), or with fields given on the spot; the form keeps its own copy of the fields.
What to tell the owner
Tell them what you found in plain words. Don't read back raw fields.
| Field | Type | Required |
|---|
shop_id | string (uuid) | yes |
include_archived | boolean | no |
Example
GET https://doingwork.work/v1/forms/templates?shop_id=00000000-0000-4000-8000-000000000000
Output
| Field | Type | Always there |
|---|
items | array | yes |
items[].form_template_id | string (uuid) | yes |
items[].shop_id | string (uuid) | yes |
items[].name | string | yes |
items[].description | ['string', 'null'] | yes |
items[].signoff_required | boolean | yes |
items[].fields | array | yes |
items[].fields[].key | string | yes |
items[].fields[].label | string | yes |
items[].fields[].type | string | yes |
items[].fields[].required | boolean | yes |
items[].fields[].help | string | no |
items[].fields[].options | array | no |
items[].archived_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
items[].updated_at | string (date-time) | yes |
{
"items": [
{
"form_template_id": "00000000-0000-4000-8000-000000000000",
"shop_id": "00000000-0000-4000-8000-000000000000",
"name": "Ruiz Plumbing",
"description": "40 gallon gas heater, installed",
"signoff_required": true,
"fields": [
{
"key": "...",
"label": "...",
"type": "...",
"required": true
}
],
"archived_at": "...",
"updated_at": "..."
}
]
}
Errors
| Code | Status | What to do |
|---|
invalid_input, invalid_token, rate_limited | | Can happen on any call. See errors. |