notes.list
Notes you may see on a job (job-level and every visit) or on one visit: pinned first, then newest first. Filter by source (typed or voice_memo); removed notes are left out unless include_removed is true.
When to use it
Keep the shop's own notes on a job or one visit (notes.add). For a voice memo, transcribe it with your own speech-to-text and save the words with notes.addVoiceMemo (transcript, duration_seconds, and optionally recorded_at, transcribed_with and language); core runs no speech model and does not store the audio.
What to tell the owner
Tell them what you found in plain words. Don't read back raw fields.
| Field | Type | Required |
|---|
job_id | string (uuid) | no |
visit_id | string (uuid) | no |
source | string (one of typed, voice_memo) | no |
include_removed | string (one of true, false) | no |
Example
GET https://doingwork.work/v1/notes?job_id=00000000-0000-4000-8000-000000000000&visit_id=00000000-0000-4000-8000-000000000000&source=typed&include_removed=true
Output
| Field | Type | Always there |
|---|
items | array | yes |
items[].note_id | string (uuid) | yes |
items[].shop_id | string (uuid) | yes |
items[].job_id | string (uuid) | yes |
items[].visit_id | ['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')'] | yes |
items[].source | string | yes |
items[].body | string | yes |
items[].audience | string | yes |
items[].pinned | boolean | yes |
items[].media_ids | array | yes |
items[].recorded_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
items[].duration_seconds | ['integer', 'null'] | yes |
items[].transcribed_with | ['string', 'null'] | yes |
items[].language | ['string', 'null'] | yes |
items[].revisions | integer | yes |
items[].written_by | string (uuid) | yes |
items[].written_by_name | ['string', 'null'] | yes |
items[].created_at | string (date-time) | yes |
items[].edited_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
items[].removed_at | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
items[].removed_by | ['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')'] | yes |
items[].remove_reason | ['string', 'null'] | yes |
{
"items": [
{
"note_id": "00000000-0000-4000-8000-000000000000",
"shop_id": "00000000-0000-4000-8000-000000000000",
"job_id": "00000000-0000-4000-8000-000000000000",
"visit_id": "00000000-0000-4000-8000-000000000000",
"source": "...",
"body": "...",
"audience": "...",
"pinned": true,
"media_ids": [
"00000000-0000-4000-8000-000000000000"
],
"recorded_at": "...",
"duration_seconds": "...",
"transcribed_with": "...",
"language": "...",
"revisions": 1,
"written_by": "00000000-0000-4000-8000-000000000000",
"written_by_name": "...",
"created_at": "...",
"edited_at": "...",
"removed_at": "...",
"removed_by": "00000000-0000-4000-8000-000000000000",
"remove_reason": "..."
}
]
}
Errors
| Code | Status | What to do |
|---|
invalid_input, invalid_token, rate_limited | | Can happen on any call. See errors. |