Caregiver app
POST /api/v1/caregiver-sessions
Sign in a caregiver
Signs the caregiver in with the agency code, employee id and PIN, and returns a device token for /api/v1/me. A wrong agency code, employee id or PIN all answer 401 invalid_credentials. Repeated failures answer 429 rate_limited with a Retry-After header.
Request body (required)
application/json
CaregiverSessionInput
The caregiver's credentials
-
201 The device token
object
-
data
CaregiverSession, required
| Field |
Type |
Required |
Description |
| data |
CaregiverSession |
yes |
|
-
401 Code invalid_credentials: Unauthorized, as the operation's description says.
Error
-
429 Code rate_limited: Too Many Requests, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/caregiver-sessions/current
Sign out this device
Revokes the device token sent as the bearer credential. The token is refused from then on, here and in the caregiver web app.
-
204 Signed out
-
default An error, in the shared envelope.
Error
GET /api/v1/me
The signed-in caregiver
-
200 The caregiver
object
-
data
Me, required
| Field |
Type |
Required |
Description |
| data |
Me |
yes |
|
-
default An error, in the shared envelope.
Error
GET /api/v1/me/care-logs
List my unfinished care logs
Your care logs not finished yet, as the app's dashboard lists them: drafts with no finished_at, of the last 90 days, newest day first, at most 20 a page. Empty when your agency has not turned care logs on for you. The read is recorded on the PHI access log.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 20, at most 20; a larger value is served as 20). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of care logs
object
-
data
array of MeCareLog, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeCareLog |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs
Start my care log
As the dashboard's Open care log: starts your care log of the client, day, service and shift with source hcb_app, seeded with the tasks the Work Orders in force plan for the day. One of your Work Orders must plan that client, service and shift on the day (else 422 no_work_order), and the day must be today or up to 90 days back (else 422 service_date_out_of_reach). A day that already has a live care log answers 200 with it, never a second, so a retry is safe; a new one answers 201. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled; a Visit that is not yours with that client that day 422 visit_mismatch.
Request body (required)
application/json
object
The day
-
client_id
string, required
- The client.
-
service_date
string, required
- The day.
-
service_type
string, required
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4 (default 1).
-
visit_id
string
- Your Visit to link, with the same client on the same day. Left out, the day's one such Visit is linked when exactly one exists.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
yes |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4 (default 1). |
| visit_id |
string |
no |
Your Visit to link, with the same client on the same day. Left out, the day's one such Visit is linked when exactly one exists. |
-
200 The care log already holding the day
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
201 The care log started
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
422 Codes no_work_order, service_date_out_of_reach, visit_mismatch: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/me/care-logs/{id}
Read my care log
One of your care logs as its screen shows it: the day with its tasks, times, warnings and live signatures, the signing_hash to attest it under, and the representatives who may sign in the client's place. The read is recorded on the PHI access log. Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The care log
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs/{id}/attestation
The client attests my care log
As the screen's signature step: the client, or their representative (one the care log lists, by signer_relation_id, or someone else by signer_name), signs the day on your phone (channel app), which signs and locks it, finishes it when it was not, and marks the linked Visit client-signed. The same signature again answers the care log unchanged. Refusals: 409 content_changed (the day changed since the client read it), 409 role_already_signed (a different signature holds the client's line), 409 voided, 422 invalid_image (not base64, not a PNG, or too large), 422 validation_failed (a signer_relation_id that is not one of the client's representatives). Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
capture_method
string
- drawn (the default) or initials.
-
expected_content_hash
string
- The signing_hash of the day the client read; a day changed since is refused with 409 content_changed.
-
image
string, required
- The signature as a base64 PNG, at most 51200 bytes.
-
role
string
- Who signs: the client (the default) or their representative in their place.
-
signer_name
string
- A representative's attestation by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". A client signs under their own name.
-
signer_relation_id
string
- A representative's attestation: the relation_id of one of the representatives the care log lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed.
| Field |
Type |
Required |
Description |
| capture_method |
string |
no |
drawn (the default) or initials. |
| expected_content_hash |
string |
no |
The signing_hash of the day the client read; a day changed since is refused with 409 content_changed. |
| image |
string |
yes |
The signature as a base64 PNG, at most 51200 bytes. |
| role |
string |
no |
Who signs: the client (the default) or their representative in their place. |
| signer_name |
string |
no |
A representative's attestation by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". A client signs under their own name. |
| signer_relation_id |
string |
no |
A representative's attestation: the relation_id of one of the representatives the care log lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed. |
-
200 The care log, signed
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes content_changed, role_already_signed: Conflict, as the operation's description says.
Error
-
422 Codes invalid_image, validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs/{id}/attestation-skip
The client cannot sign my care log
As the screen's Client can't sign: keeps why, finishes the day when it was not, and leaves it a draft for the office to collect a signature. The same reason again writes nothing. A reason not listed is 422 validation_failed, and other needs a note. A care log that is not a draft answers 409 record_locked and nothing changes. Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
Why
-
note
string
- The reason in words; required for other.
-
reason
string, required
- Why the client could not sign.
| Field |
Type |
Required |
Description |
| note |
string |
no |
The reason in words; required for other. |
| reason |
string |
yes |
Why the client could not sign. |
-
200 The care log
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
422 Code validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs/{id}/finish
Finish my care log
Marks the care log finished, once; finishing a finished care log changes nothing. Warnings never refuse it. The client's attestation (or attestation-skip) finishes it too. A care log that is not a draft answers 409 record_locked and nothing changes. Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The care log
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs/{id}/tasks
Add a task I did to my care log
As the screen's Add a task I did: adds a task done off the plan (planned false, status done), with the reason it was done when sent. A task the care log already holds is set done instead, so a retried add writes nothing new. A task that is not the agency's or a system one is 422 task_definition_not_found. A care log that is not a draft answers 409 record_locked and nothing changes. Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The task
-
count
integer
- How many times; 1 when left out.
-
reason_code
string
- Why it was done off the plan.
-
reason_note
string
- The reason in words.
-
task_definition_id
string, required
- The task to add: one of the agency's tasks or a system one.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; 1 when left out. |
| reason_code |
string |
no |
Why it was done off the plan. |
| reason_note |
string |
no |
The reason in words. |
| task_definition_id |
string |
yes |
The task to add: one of the agency's tasks or a system one. |
-
200 The care log
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
422 Code task_definition_not_found: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/care-logs/{id}/tasks/{task_id}/mark
Mark a task on my care log
As the screen's Done, Refused and Not needed buttons: SETS the task's status, reason and count; a mark that changes nothing writes nothing. A task the care log does not hold is 422 task_not_on_log (add it with POST /me/care-logs/{id}/tasks). A care log that is not a draft answers 409 record_locked and nothing changes. Another caregiver's care log, another agency's, or one more than 90 days back is 404, whatever the body holds. A caregiver whose agency has not turned care logs on is 403 care_log_not_enabled.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| task_id |
path |
yes |
The task's task_definition_id, as the care log's tasks list it. |
Request body (required)
application/json
object
The mark
-
count
integer
- How many times; unchanged when left out.
-
expect_status
string
- The status the app showed; sent (null included), the mark is refused with 409 stale_record when the task no longer has it, so a clear re-sent after the office changed the task changes nothing.
-
reason_code
string
- Why a task was refused or not needed; left out or null clears it, as a mark on the screen does.
-
reason_note
string
- The reason in words; left out or null clears it.
-
status
string, required
- The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; unchanged when left out. |
| expect_status |
string |
no |
The status the app showed; sent (null included), the mark is refused with 409 stale_record when the task no longer has it, so a clear re-sent after the office changed the task changes nothing. |
| reason_code |
string |
no |
Why a task was refused or not needed; left out or null clears it, as a mark on the screen does. |
| reason_note |
string |
no |
The reason in words; left out or null clears it. |
| status |
string |
yes |
The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing. |
-
200 The care log
object
-
data
MeCareLogDetail, required
| Field |
Type |
Required |
Description |
| data |
MeCareLogDetail |
yes |
|
-
403 Code care_log_not_enabled: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
422 Code task_not_on_log: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/clock-events
Send clocks recorded offline
Sends up to 100 clocks the app saved while offline. Each is processed on its own, and one failing never stops the others; each is recorded at its captured_at, as a clock-in or clock-out sent online would be. Only your own visits within 90 days back are reached, as the live clock reaches: any other visit fails as visit_not_found, as the live clock answers 404,. Events carrying captured_at in Unix milliseconds run oldest first among themselves; an event without one keeps its place. An id that is not a string is invalid_event, answered with a null id. Clocks only: a task_toggle event is unknown_action. An empty batch is not counted against the hourly limit. Resending an event already recorded reports it in synced and records nothing twice. More than 100 events is 422 and processes none; more than 100 batches in an hour, counted with the caregiver web app's, is 429.
Request body (required)
application/json
MeClockEventsInput
The events
-
200 What synced and what failed
object
-
data
object, required
-
data.failed
array of object, required
- Events not recorded, each with why; keep them and retry those that can succeed.
-
data.failed[].error
string
- visit_not_found (not one of your visits within reach), unknown_action, invalid_event (an id that is not a string; answered with a null id), clock_in_required, visit_not_clockable (the visit was closed and the server could not keep the clock: retry), sync_failed (retry), clock_in_failed or clock_out_failed.
-
data.failed[].id
string
-
data.synced
array of string, required
- Ids of events recorded, already recorded, or kept for the office because the visit was closed: drop them.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.failed |
array of object |
yes |
Events not recorded, each with why; keep them and retry those that can succeed. |
| data.failed[].error |
string |
no |
visit_not_found (not one of your visits within reach), unknown_action, invalid_event (an id that is not a string; answered with a null id), clock_in_required, visit_not_clockable (the visit was closed and the server could not keep the clock: retry), sync_failed (retry), clock_in_failed or clock_out_failed. |
| data.failed[].id |
string |
no |
|
| data.synced |
array of string |
yes |
Ids of events recorded, already recorded, or kept for the office because the visit was closed: drop them. |
-
404 Not Found, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
429 Too Many Requests, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/me/devices
My signed-in devices
The devices the caregiver is signed in on, most recently used first; current marks the one asking.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 20, at most 100; a larger value is served as 100). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of devices
object
-
data
array of MeDevice, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeDevice |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
DELETE /api/v1/me/devices/{id}
Sign a device out
Signs one of the caregiver's devices out, this one included, and stops its push notifications. Another caregiver's device, or one already signed out, is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
204 Signed out
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/half-month-summaries
Open my half-month summary
As the half-month screen: the live summary of the client, you, the service and the half, or a new draft of it, re-read from the evidence grid, with the signing date, the lines signed, and the representatives who may sign the client's line in their place. Repeating it answers the same summary. A period_start that is not the 1st or the 16th is 422 validation_failed; so is a service_type left out on a half with care for more than one service, and one left out on a half with no care recorded and no summary yet (nothing to sign). The read is recorded on the PHI access log. A client you have neither an assignment with nor a care log for in the half, another caregiver's summary, or another agency's is 404, whatever the body holds.
Request body (required)
application/json
object
The half
-
client_id
string, required
- The client.
-
period_start
string, required
- The half's first day, YYYY-MM-DD: the 1st or the 16th.
-
service_type
string
- The service the summary attests: the client signs one per service. Left out, the half's only service; a half with care for two services, or with none recorded and no summary yet, is 422 validation_failed.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| period_start |
string |
yes |
The half's first day, YYYY-MM-DD: the 1st or the 16th. |
| service_type |
string |
no |
The service the summary attests: the client signs one per service. Left out, the half's only service; a half with care for two services, or with none recorded and no summary yet, is 422 validation_failed. |
-
200 The summary
object
-
data
MeHalfMonthSummary, required
| Field |
Type |
Required |
Description |
| data |
MeHalfMonthSummary |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Code validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/half-month-summaries/{id}/client-skip
The client can't sign my half-month summary
As the half-month screen's "Client can't sign": records why the client could not sign, and your signed line then completes the half and stores its true copy. The same reason again answers the summary unchanged. Refusals: 409 caregiver_not_signed (your line is not signed yet), 409 record_locked (the client's or a representative's line is signed, or the half is already complete), 409 voided, 422 validation_failed (a reason that is not one of the list). A client you have neither an assignment with nor a care log for in the half, another caregiver's summary, or another agency's is 404, whatever the body holds.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
Why
-
reason
string, required
- Why the client could not sign.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why the client could not sign. |
-
200 The summary
object
-
data
HalfMonthSummary, required
| Field |
Type |
Required |
Description |
| data |
HalfMonthSummary |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Codes caregiver_not_signed, record_locked: Conflict, as the operation's description says.
Error
-
422 Code validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/half-month-summaries/{id}/signatures
Sign my half-month summary
As the half-month screen's pads: signs a line on your phone (channel app). Your line first; then the client's, or a representative's in their place: one the summary lists (signer_relation_id), or someone else by name (signer_name). The first signature freezes the half. The same signature again answers the summary unchanged. Refusals: 422 signature_period_not_reached (before the 15th for a first half, the 20th for a second), 409 content_changed (the half changed since it was read), 409 role_already_signed (a different signature holds the line), 409 record_locked (every line is signed), 409 voided, 422 invalid_image, 422 validation_failed (a signer_relation_id that is not one of the client's representatives). A client you have neither an assignment with nor a care log for in the half, another caregiver's summary, or another agency's is 404, whatever the body holds.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
capture_method
string
- drawn (the default) or initials.
-
expected_content_hash
string
- The signing.hash of the half the signer read; a half changed since is refused with 409 content_changed.
-
image
string, required
- The signature as a base64 PNG, at most 51200 bytes.
-
role
string, required
- The line signed: yours first, then the client's or their representative's.
-
signer_name
string
- A representative's line signed by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative".
-
signer_relation_id
string
- A representative's line: the relation_id of one of the representatives the summary lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed.
| Field |
Type |
Required |
Description |
| capture_method |
string |
no |
drawn (the default) or initials. |
| expected_content_hash |
string |
no |
The signing.hash of the half the signer read; a half changed since is refused with 409 content_changed. |
| image |
string |
yes |
The signature as a base64 PNG, at most 51200 bytes. |
| role |
string |
yes |
The line signed: yours first, then the client's or their representative's. |
| signer_name |
string |
no |
A representative's line signed by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". |
| signer_relation_id |
string |
no |
A representative's line: the relation_id of one of the representatives the summary lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed. |
-
200 The summary
object
-
data
HalfMonthSummary, required
| Field |
Type |
Required |
Description |
| data |
HalfMonthSummary |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Codes content_changed, record_locked, role_already_signed: Conflict, as the operation's description says.
Error
-
422 Codes invalid_image, signature_period_not_reached, validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/me/notifications
My notifications
The caregiver's notifications, newest first, without dismissed ones unless dismissed=true.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 20, at most 100; a larger value is served as 100). |
| offset |
query |
no |
Rows to skip. |
| type |
query |
no |
Only notifications of this type. |
| dismissed |
query |
no |
true to include dismissed notifications. |
-
200 A page of notifications
object
-
data
array of MeNotification, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeNotification |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/me/notifications/read-all
Mark every notification read
-
200 How many were marked
object
-
data
object, required
-
data.marked
integer, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.marked |
integer |
yes |
|
-
default An error, in the shared envelope.
Error
POST /api/v1/me/notifications/{id}/dismiss
Dismiss a notification
Dismisses it, which also marks it read.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The notification
object
-
data
MeNotification, required
| Field |
Type |
Required |
Description |
| data |
MeNotification |
yes |
|
-
default An error, in the shared envelope.
Error
POST /api/v1/me/notifications/{id}/read
Mark a notification read
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The notification
object
-
data
MeNotification, required
| Field |
Type |
Required |
Description |
| data |
MeNotification |
yes |
|
-
default An error, in the shared envelope.
Error
PATCH /api/v1/me/pin
Change my PIN
Changes the caregiver's PIN. A wrong current_pin answers 422 invalid_current_pin and counts as one failed sign-in; repeated failures answer 429 rate_limited with a Retry-After header. A new PIN that is not six digits, or is repeated or sequential, answers 422 validation_failed naming new_pin and counts nothing. On success this device stays signed in, and every other device and web app session of the caregiver is signed out.
Request body (required)
application/json
MePinChange
The PINs
-
204 Changed
-
422 Codes invalid_current_pin, validation_failed: Unprocessable Content, as the operation's description says.
Error
-
429 Code rate_limited: Too Many Requests, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/push-tokens
Register this device for push
Registers this device's push token: an APNs device token (platform ios) or an FCM registration token (platform android). 201 the first time, 200 when this device registers again (the same token, or a new one replacing it). The same token registered from an earlier sign-in stops there.
Request body (required)
application/json
object
The token
-
platform
string, required
-
token
string, required
| Field |
Type |
Required |
Description |
| platform |
string |
yes |
|
| token |
string |
yes |
|
-
200 Registered again
object
-
data
object, required
-
data.platform
string, required
-
data.registered_at
string, required
- When this device's token was last registered.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.platform |
string |
yes |
|
| data.registered_at |
string |
yes |
When this device's token was last registered. |
-
201 Registered
object
-
data
object, required
-
data.platform
string, required
-
data.registered_at
string, required
- When this device's token was last registered.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.platform |
string |
yes |
|
| data.registered_at |
string |
yes |
When this device's token was last registered. |
-
default An error, in the shared envelope.
Error
DELETE /api/v1/me/push-tokens/current
Stop push to this device
Stops native push to this device; signing out does the same.
-
204 Stopped
-
default An error, in the shared envelope.
Error
GET /api/v1/me/refused-clocks
My refused clocks
Your clocks the server kept in the last 30 days that a cancelled, completed or verified visit refused, which the server kept and passed to the office (US-98.14): the clock-in or clock-out answered 422 visit_not_clockable. Newest first; reviewed_at is set once the office has handled it. On visits not deleted.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 20, at most 100; a larger value is served as 100). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of refused clocks
object
-
data
array of MeRefusedClock, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeRefusedClock |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
422 Code visit_not_clockable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/me/visits
My visits
The signed-in caregiver's visits with a service date from date_from to date_to (date_from defaults to date_to, else today in Colorado; date_to defaults to date_from), not cancelled, in date order, then scheduled start. At most 31 days at once, starting no more than 90 days before today.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| date_from |
query |
no |
First service date (YYYY-MM-DD). |
| date_to |
query |
no |
Last service date (YYYY-MM-DD). |
-
200 A page of visits
object
-
data
array of MeVisit, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeVisit |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
GET /api/v1/me/visits/{id}
One of my visits
A visit of the signed-in caregiver, with the client's address and geofence and its clock-in and clock-out once recorded. A cancelled or deleted visit is still returned, with its status and deleted_at, so an app holding its id learns what became of it. Another caregiver's visit, or one more than 90 days back, is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The visit
object
-
data
MeVisitDetail, required
| Field |
Type |
Required |
Description |
| data |
MeVisitDetail |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/visits/{id}/clock-in
Clock in
Records the clock-in with the device's location. Whatever the device sends is recorded, with warnings, never refused: no_gps, low_accuracy, moderate_accuracy, suspicious_accuracy, outside_geofence, invalid_coordinates, unknown_accuracy, invalid_captured_at, captured_at_out_of_range, late_sync, manual, outside_schedule, before_clock_in. A captured_at that is not Unix milliseconds, ahead of now, or before the visit existed is recorded at the server's time. A second clock-in answers 200 with the first. A visit not scheduled or in progress takes no clock: 422 visit_not_clockable, nothing recorded on the visit; the clock is kept for the office (US-98.14), and the message says so; when it could not be kept the code is visit_not_clockable_not_kept, so keep the clock and retry.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body
application/json
MeClockInput
Where and when
-
200 Already recorded: the existing call, nothing created
object
-
data
MeClockResult, required
| Field |
Type |
Required |
Description |
| data |
MeClockResult |
yes |
|
-
201 Recorded
object
-
data
MeClockResult, required
| Field |
Type |
Required |
Description |
| data |
MeClockResult |
yes |
|
-
422 Code visit_not_clockable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/visits/{id}/clock-out
Clock out
Records the clock-out, as clock-in does, and sets the visit's actual_end_time. A visit not clocked in is 422 clock_in_required; one timed at or before the clock-in is recorded with before_clock_in and bills no hours. A closed visit answers as clock-in does: 422 visit_not_clockable with the clock kept for the office, or visit_not_clockable_not_kept, so keep the clock and retry.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body
application/json
MeClockInput
Where and when
-
200 Already recorded: the existing call, nothing created
object
-
data
MeClockResult, required
| Field |
Type |
Required |
Description |
| data |
MeClockResult |
yes |
|
-
201 Recorded
object
-
data
MeClockResult, required
| Field |
Type |
Required |
Description |
| data |
MeClockResult |
yes |
|
-
422 Codes clock_in_required, visit_not_clockable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/me/visits/{id}/signatures
Capture a signature on my visit
Keeps the client's or your signature (or initials) on one of your visits, as a PNG; a client signature marks the visit client-signed. A visit holds one signature per signer: sending one it already holds, without replace, answers 200 with it whatever the visit's status since, so a retry is safe. A first signature is kept on any visit not cancelled, a late offline sync included; replace: true replaces the held one only while the visit is scheduled, in progress or completed (else 422 visit_not_signable), answering 200, and a replacement identical to the one held answers it unchanged. A cancelled visit takes no first signature (422 visit_not_signable). captured_at is believed as a clock's is (not ahead of now, not before the visit existed, else the server's time). The input is judged first: an image that is not base64, not a PNG, or larger than 51200 bytes is 422 invalid_image, a signer_name over 255 characters 422 invalid_signer_name, a replace that is not a boolean 422 invalid_replace. Another caregiver's visit, a deleted one, or one more than 90 days back is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
captured_at
number
- When it was signed, in Unix milliseconds; omit for now.
-
image
string, required
- The signature as a base64 PNG of at most 51200 bytes once decoded.
-
replace
boolean
- true replaces the visit's signature from this signer; otherwise a second one answers 200 with the one it holds.
-
signature_type
string, required
-
signer_name
string, required
- The signer's name.
-
signer_type
string, required
| Field |
Type |
Required |
Description |
| captured_at |
number |
no |
When it was signed, in Unix milliseconds; omit for now. |
| image |
string |
yes |
The signature as a base64 PNG of at most 51200 bytes once decoded. |
| replace |
boolean |
no |
true replaces the visit's signature from this signer; otherwise a second one answers 200 with the one it holds. |
| signature_type |
string |
yes |
|
| signer_name |
string |
yes |
The signer's name. |
| signer_type |
string |
yes |
|
-
200 The signature the visit holds, or the one replaced
object
-
data
MeSignature, required
| Field |
Type |
Required |
Description |
| data |
MeSignature |
yes |
|
-
201 The new signature
object
-
data
MeSignature, required
| Field |
Type |
Required |
Description |
| data |
MeSignature |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Codes invalid_image, invalid_replace, invalid_signer_name, visit_not_signable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/me/visits/{id}/signatures/{signature_id}/image
A signature's image
The PNG of a signature on one of your visits, never cached. Any other visit or signature is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| signature_id |
path |
yes |
The signature's id. |
-
200 The PNG
string
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
Claims
POST /api/v1/batches/from-timesheets
Create a batch from approved timesheets
Bills the approved timesheets among timesheet_ids as one batch, as Billing > Generate batch does: each is mapped to its claims (PAR numbers found), the claims are priced, and the batch validates in the background; it is never submitted automatically. left_out names every selected timesheet not in it, in the order sent, and why (not approved, already billed, no hours, missing billing data); warnings says when charges could not be calculated, and carries every warning Billing > Generate batch shows for the selection (code, message, record_type, record_id, and the dismiss_key of one the agency may dismiss there), less the ones the agency already dismissed on the page, over /api/v1 or over MCP; findings carries the same warnings as findings (rule_id, message, subject_type, subject_id, subject_date, fingerprint, context, dismissible), each one dismissible with POST /api/v1/finding-dismissals as sent; none of them blocks the batch. Refused, creating nothing: 422 critical_issues with the issues when the selection breaks a blocking rule (a missing Medicaid ID or billing code, a strict modifier rule), as the page refuses; 422 nothing_billable with left_out when no selected timesheet has a claim; 409 timesheets_already_exported or stale_record when a selected timesheet was billed or changed meanwhile, or the client, assignment, work order or service authorization its claims bill from changed; 403 submission_blocked when the agency may not submit. 422 timesheet_ids_required when timesheet_ids is not a list of 1 to 500 UUIDs (an id that is not a UUID refuses the whole request). Ids are answered in lower case. Another agency's ids are left out as not approved, and nothing of theirs is read or written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The timesheets
-
timesheet_ids
array of string, required
- The approved timesheets to bill (find_timesheets with status approved).
| Field |
Type |
Required |
Description |
| timesheet_ids |
array of string |
yes |
The approved timesheets to bill (find_timesheets with status approved). |
-
201 The batch, the timesheets left out, and any warning
object
-
data
Batch, required
-
findings
array of object, required
-
findings[].context
object
- The inputs the warning was found from beyond its subject.
-
findings[].dismissible
boolean
- Whether the agency may dismiss it.
-
findings[].fingerprint
string
- The figures the warning states, as a dismissal names them.
-
findings[].message
string
- What the warning says.
-
findings[].rule_id
string
- The warning's rule (batch.hospital_day, say).
-
findings[].subject_date
string
- The day, for a warning about one day of its subject.
-
findings[].subject_id
string
- The record's id.
-
findings[].subject_type
string
- What the warning is about (client, say).
-
left_out
array of object, required
-
left_out[].reason
string
- Why it is not in the batch.
-
left_out[].timesheet_id
string
- The record's id.
-
warnings
array of object, required
| Field |
Type |
Required |
Description |
| data |
Batch |
yes |
|
| findings |
array of object |
yes |
|
| findings[].context |
object |
no |
The inputs the warning was found from beyond its subject. |
| findings[].dismissible |
boolean |
no |
Whether the agency may dismiss it. |
| findings[].fingerprint |
string |
no |
The figures the warning states, as a dismissal names them. |
| findings[].message |
string |
no |
What the warning says. |
| findings[].rule_id |
string |
no |
The warning's rule (batch.hospital_day, say). |
| findings[].subject_date |
string |
no |
The day, for a warning about one day of its subject. |
| findings[].subject_id |
string |
no |
The record's id. |
| findings[].subject_type |
string |
no |
What the warning is about (client, say). |
| left_out |
array of object |
yes |
|
| left_out[].reason |
string |
no |
Why it is not in the batch. |
| left_out[].timesheet_id |
string |
no |
The record's id. |
| warnings |
array of object |
yes |
|
-
403 Code submission_blocked: Forbidden, as the operation's description says.
Error
-
409 Code timesheets_already_exported: Conflict, as the operation's description says.
Error
-
422 Codes critical_issues, nothing_billable, timesheet_ids_required: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/batches/{id}
Delete a batch not yet sent
Deletes the batch and its claims, returning its returned timesheets to approved so they can be billed again, as the batch page does. A batch already sent to HCPF, or being sent, answers 422 already_submitted or submission_in_progress; one being validated or generated now 422 not_eligible; the batch of a recurring run already sent 422 run_submitted. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The deleted batch
object
-
data
Batch, required
| Field |
Type |
Required |
Description |
| data |
Batch |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Codes already_submitted, not_eligible, run_submitted: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/batches/{id}/prepare-resubmissions
Release every refused claim's timesheet in a batch
Releases the returned timesheet of every claim in the batch that can be resubmitted, as the batch page's Prepare all control does, and answers how many timesheets went back to Approved and the claims prepared. Needs billing.manage (403 forbidden otherwise). A batch with none eligible answers 422 no_resubmittable_claims; one whose every eligible claim is blocked by an active claim holding its patient account number 409 all_pan_blocked. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The timesheets released and the claims prepared
object
-
data
object, required
-
data.claims
array of Claim, required
-
data.timesheets_released
integer, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.claims |
array of Claim |
yes |
|
| data.timesheets_released |
integer |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code all_pan_blocked: Conflict, as the operation's description says.
Error
-
422 Code no_resubmittable_claims: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/batches/{id}/revenue-warnings
List a batch's revenue warnings
Every revenue warning on the batch's claims, in row order, each saying whether a member dismissed it. A warning blocks nothing. The batch's claims are read to the upload's row ceiling, and the warnings paged from them. Another agency's batch is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 The warnings
object
-
data
array of RevenueWarning, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of RevenueWarning |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/checks/{number}/reconcile
Mark every claim a check paid reconciled
Marks every unreconciled claim of the agency's paid by the check reconciled, as the payment report's bulk action does, and answers how many it marked (0 when none was left).
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| number |
path |
yes |
|
-
200 How many were marked
object
-
data
object, required
-
data.check_number
string
-
data.reconciled
integer
- Claims marked.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.check_number |
string |
no |
|
| data.reconciled |
integer |
no |
Claims marked. |
-
default An error, in the shared envelope.
Error
GET /api/v1/claims
List claims
Claims are created by uploading a file to /api/v1/batches. The agency's claims in batch order, and row order within each batch. With updated_since the order is change order, for a sync that pages with after_id.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| status |
query |
no |
Only records with this status. |
| batch_id |
query |
no |
Only claims of this batch. |
| member |
query |
no |
Only claims whose Medicaid ID or patient name contains this text, case-insensitively. At most 64 characters. |
| service_date_from |
query |
no |
Only claims whose service period reaches this date or later (YYYY-MM-DD); a period straddling the bound is included. |
| service_date_to |
query |
no |
Only claims whose service period starts on or before this date (YYYY-MM-DD). |
| updated_since |
query |
no |
Only records changed at or after this instant (ISO 8601, with an offset), compared to the second. The list is then in change order: updated_at, then id. |
| after_id |
query |
no |
With updated_since, a cursor: send the last record's updated_at as updated_since and its id as after_id to get the next page. Use this, not offset, to sync: an offset skips a record when an earlier one changes between two requests. The sync is at least once: timestamps are whole seconds and set before commit, so a record changed in the cursor's second, or committed late, can fall behind the cursor. Start each sync pass a minute before the newest updated_at you saw, and treat every record returned as current: apply it over what you hold. A record can change twice within one second, and not every change moves lock_version, so the same updated_at and lock_version do not mean the same content. |
-
200 A page of claims
object
-
data
array of Claim, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Claim |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Code bad_request: a malformed limit, offset, search, updated_since, after_id or filter, named in the message.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/claims/{id}
Get a claim
Claims are created by uploading a file to /api/v1/batches.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Code not_found: no claim with that id in this agency, including another agency's.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/claims/{id}
Correct an uploaded claim
Changes the fields sent on a rejected or denied claim from an uploaded file and validates it again, as the batch page's correction form does. A reason is required. Needs billing.manage (403 forbidden otherwise), as the page does. A claim built from a returned timesheet answers 422 timesheet_derived; one HCPF holds as paid 422 held_as_paid; any other status 422 not_editable. validation_errors names what is still wrong; the correction is saved either way. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The changes and the reason
-
charge_amount
string
- Amount billed.
-
diagnosis_code_1
string
- The diagnosis code; null or blank clears it.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
- A modifier; null or blank clears it.
-
modifier_2
string
- A modifier; null or blank clears it.
-
modifier_3
string
- A modifier; null or blank clears it.
-
modifier_4
string
- A modifier; null or blank clears it.
-
par_number
string
- The prior authorization request number; null or blank clears it.
-
place_of_service
string
- The place of service code.
-
procedure_code
string
- The procedure code, e.g. T1019.
-
reason
string, required
- Why the claim is corrected; kept on its audit trail.
-
service_date_from
string
- YYYY-MM-DD.
-
service_date_to
string
- YYYY-MM-DD.
-
units
string
- Units billed.
| Field |
Type |
Required |
Description |
| charge_amount |
string |
no |
Amount billed. |
| diagnosis_code_1 |
string |
no |
The diagnosis code; null or blank clears it. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
A modifier; null or blank clears it. |
| modifier_2 |
string |
no |
A modifier; null or blank clears it. |
| modifier_3 |
string |
no |
A modifier; null or blank clears it. |
| modifier_4 |
string |
no |
A modifier; null or blank clears it. |
| par_number |
string |
no |
The prior authorization request number; null or blank clears it. |
| place_of_service |
string |
no |
The place of service code. |
| procedure_code |
string |
no |
The procedure code, e.g. T1019. |
| reason |
string |
yes |
Why the claim is corrected; kept on its audit trail. |
| service_date_from |
string |
no |
YYYY-MM-DD. |
| service_date_to |
string |
no |
YYYY-MM-DD. |
| units |
string |
no |
Units billed. |
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
422 Codes held_as_paid, not_editable, timesheet_derived: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/claims/{id}/evv-correction
Undo a claim's EVV unit correction
Restores the units and charge the claim billed before its EVV unit correction and validates it again, as the batch drawer's Undo does. A claim with no correction to undo answers 422 no_correction; one whose units or charge changed since the correction 409 changed_since. A claim already sent to HCPF, or whose batch is being sent, answers 422 already_sent; one whose batch is being checked, has its 837 built, or failed or was cancelled, but never went to HCPF, 422 batch_not_open; one not compared with EVV visits (a spreadsheet claim, a live-in caregiver, a code with no unit rule, no verified visits in its dates) 422 not_checkable; one whose verified visits add up to 0 units 422 no_evv_units; a batch being changed right now 409 busy. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Code changed_since: Conflict, as the operation's description says.
Error
-
422 Codes already_sent, batch_not_open, no_correction, no_evv_units, not_checkable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/claims/{id}/evv-correction
See what using a claim's EVV units would change
The claim's billed units beside the units its verified EVV visits add up to, the counted visits, its charge now and at the EVV units, as the batch drawer's Use EVV units shows them. refusal is null when POST would succeed now, and otherwise the code and message it would answer; correction is the live correction, which DELETE undoes. Nothing changes. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 What would change
object
-
data
object, required
-
data.billed_units
string, required
- Units the claim bills now.
-
data.claim_id
string, required
- The record's id.
-
data.correction
object, required
- A claim's units set to its verified EVV visits' units, and the figures before.
-
data.correction.applied_at
string
-
data.correction.applied_by_id
string
- The record's id.
-
data.correction.batch_id
string
- The record's id.
-
data.correction.claim_id
string
- The record's id.
-
data.correction.evv_units
integer
- Units the verified EVV visits add up to.
-
data.correction.from_charge
string
- Charge before.
-
data.correction.from_units
string
- Units the claim billed before.
-
data.correction.id
string
- The record's id.
-
data.correction.to_charge
string
- Charge after, at the claim's own price per unit.
-
data.correction.to_units
string
- Units it bills after: the EVV units.
-
data.correction.undone_at
string
-
data.correction.undone_by_id
string
- The record's id.
-
data.correction.visit_ids
array of string
- The visits counted.
-
data.current_charge
string
- The claim's charge now.
-
data.evv_units
integer
- Units its verified EVV visits add up to; null when it is not compared.
-
data.proposed_charge
string
- The charge at evv_units, at the claim's own price per unit, rounded to cents; null when it has no charge or bills 0 units, and then applying leaves the charge as it is.
-
data.refusal
object, required
- Null when applying now would succeed; otherwise what it would answer: code and message.
-
data.refusal.code
string
-
data.refusal.message
string
-
data.visit_ids
array of string, required
- The visits counted.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.billed_units |
string |
yes |
Units the claim bills now. |
| data.claim_id |
string |
yes |
The record's id. |
| data.correction |
object |
yes |
A claim's units set to its verified EVV visits' units, and the figures before. |
| data.correction.applied_at |
string |
no |
|
| data.correction.applied_by_id |
string |
no |
The record's id. |
| data.correction.batch_id |
string |
no |
The record's id. |
| data.correction.claim_id |
string |
no |
The record's id. |
| data.correction.evv_units |
integer |
no |
Units the verified EVV visits add up to. |
| data.correction.from_charge |
string |
no |
Charge before. |
| data.correction.from_units |
string |
no |
Units the claim billed before. |
| data.correction.id |
string |
no |
The record's id. |
| data.correction.to_charge |
string |
no |
Charge after, at the claim's own price per unit. |
| data.correction.to_units |
string |
no |
Units it bills after: the EVV units. |
| data.correction.undone_at |
string |
no |
|
| data.correction.undone_by_id |
string |
no |
The record's id. |
| data.correction.visit_ids |
array of string |
no |
The visits counted. |
| data.current_charge |
string |
no |
The claim's charge now. |
| data.evv_units |
integer |
no |
Units its verified EVV visits add up to; null when it is not compared. |
| data.proposed_charge |
string |
no |
The charge at evv_units, at the claim's own price per unit, rounded to cents; null when it has no charge or bills 0 units, and then applying leaves the charge as it is. |
| data.refusal |
object |
yes |
Null when applying now would succeed; otherwise what it would answer: code and message. |
| data.refusal.code |
string |
no |
|
| data.refusal.message |
string |
no |
|
| data.visit_ids |
array of string |
yes |
The visits counted. |
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/evv-correction
Bill a claim's EVV units
Sets an unsent claim's units to what its verified EVV visits add up to and its charge to the same price per unit, validates it again and keeps the change on its audit trail, as the batch drawer's Bill {evv} units does. The claim's status, its timesheet and its visits do not change. Send the billed_units GET answered: a claim billing anything else, or already corrected, answers 409 changed_since; one already billing its EVV units 422 no_difference. A claim already sent to HCPF, or whose batch is being sent, answers 422 already_sent; one whose batch is being checked, has its 837 built, or failed or was cancelled, but never went to HCPF, 422 batch_not_open; one not compared with EVV visits (a spreadsheet claim, a live-in caregiver, a code with no unit rule, no verified visits in its dates) 422 not_checkable; one whose verified visits add up to 0 units 422 no_evv_units; a batch being changed right now 409 busy. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The units you saw
-
expected_billed_units
string, required
- The units the claim bills as you saw them: billed_units from GET /claims/{id}/evv-correction. A claim that bills anything else now answers 409 changed_since and nothing changes.
| Field |
Type |
Required |
Description |
| expected_billed_units |
string |
yes |
The units the claim bills as you saw them: billed_units from GET /claims/{id}/evv-correction. A claim that bills anything else now answers 409 changed_since and nothing changes. |
-
200 The corrected claim and the correction
object
-
correction
object, required
- A claim's units set to its verified EVV visits' units, and the figures before.
-
correction.applied_at
string
-
correction.applied_by_id
string
- The record's id.
-
correction.batch_id
string
- The record's id.
-
correction.claim_id
string
- The record's id.
-
correction.evv_units
integer
- Units the verified EVV visits add up to.
-
correction.from_charge
string
- Charge before.
-
correction.from_units
string
- Units the claim billed before.
-
correction.id
string
- The record's id.
-
correction.to_charge
string
- Charge after, at the claim's own price per unit.
-
correction.to_units
string
- Units it bills after: the EVV units.
-
correction.undone_at
string
-
correction.undone_by_id
string
- The record's id.
-
correction.visit_ids
array of string
- The visits counted.
-
data
Claim, required
| Field |
Type |
Required |
Description |
| correction |
object |
yes |
A claim's units set to its verified EVV visits' units, and the figures before. |
| correction.applied_at |
string |
no |
|
| correction.applied_by_id |
string |
no |
The record's id. |
| correction.batch_id |
string |
no |
The record's id. |
| correction.claim_id |
string |
no |
The record's id. |
| correction.evv_units |
integer |
no |
Units the verified EVV visits add up to. |
| correction.from_charge |
string |
no |
Charge before. |
| correction.from_units |
string |
no |
Units the claim billed before. |
| correction.id |
string |
no |
The record's id. |
| correction.to_charge |
string |
no |
Charge after, at the claim's own price per unit. |
| correction.to_units |
string |
no |
Units it bills after: the EVV units. |
| correction.undone_at |
string |
no |
|
| correction.undone_by_id |
string |
no |
The record's id. |
| correction.visit_ids |
array of string |
no |
The visits counted. |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Code changed_since: Conflict, as the operation's description says.
Error
-
422 Codes already_sent, batch_not_open, no_difference, no_evv_units, not_checkable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/evv-override
Override a claim's EVV warning
Overrides the claim's EVV warning with a reason, kept on its audit trail, as the batch page does. The reason must be at least 10 characters (422 override_reason_too_short); a claim without an EVV warning answers 422 not_warning_status. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Why the warning is overridden
-
reason
string, required
- Why the warning is overridden; at least 10 characters, kept on the claim's audit trail.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why the warning is overridden; at least 10 characters, kept on the claim's audit trail. |
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Codes not_warning_status, override_reason_too_short: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/follow-up
Open a follow-up for a denied claim
Opens the follow-up for the claim's client in the month of its first service date, as the denials page's Follow-up control does. One already open for that client and month answers 409 follow_up_exists; a claim naming no client 422 no_client. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
201 The follow-up
object
-
data
object, required
-
data.billing_period
string, required
- The month followed up, as the follow-ups page names it.
-
data.client_id
string, required
- The record's id.
-
data.completed
boolean
-
data.id
string, required
- The record's id.
-
data.month
integer
-
data.year
integer
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.billing_period |
string |
yes |
The month followed up, as the follow-ups page names it. |
| data.client_id |
string |
yes |
The record's id. |
| data.completed |
boolean |
no |
|
| data.id |
string |
yes |
The record's id. |
| data.month |
integer |
no |
|
| data.year |
integer |
no |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Code follow_up_exists: Conflict, as the operation's description says.
Error
-
422 Code no_client: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/claims/{id}/investigation
Change a denial's investigation status
Sets investigation_status and resolution_notes on a denied claim, as the denials page does. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The status and notes
-
investigation_status
string
-
resolution_notes
string
- The notes; null or blank clears them.
| Field |
Type |
Required |
Description |
| investigation_status |
string |
no |
|
| resolution_notes |
string |
no |
The notes; null or blank clears them. |
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/prepare-resubmission
Release a refused claim's timesheet for resubmission
Returns the claim's returned timesheet to Approved so it can be corrected and exported again, as the batch page's Release control does, and marks the claim prepared. Needs billing.manage (403 forbidden otherwise), as the page does. A claim already prepared answers 422 already_prepared. A claim that is not rejected or denied answers 422 not_resubmittable; one uploaded from a spreadsheet 422 no_timesheet; one whose returned timesheet another claim already released, whose sibling is still processing or was paid, or whose timesheet is no longer exported 409 already_released_by_sibling, siblings_still_processing, paid_sibling_exists or timesheet_not_exported; one HCPF holds as paid 422 held_as_paid; one a correction replaces 409 already_replaced; one whose patient account number an active claim holds 409 pan_blocked. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes already_released_by_sibling, already_replaced, pan_blocked: Conflict, as the operation's description says.
Error
-
422 Codes already_prepared, held_as_paid, no_timesheet, not_resubmittable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/reconcile
Mark a claim reconciled
Marks the claim reconciled with its payment, as the payment report does. A claim already reconciled keeps its mark. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/replacement
Create a replacement claim
Creates a corrected copy of the claim in a batch of its own, sent to HCPF as a replacement (or an adjustment of a claim HCPF holds as paid), as the batch page does. A reason is required. Needs billing.manage (403 forbidden otherwise). A claim that already has one answers 409 already_replaced; one whose timesheet can simply be released for resubmission 422 release_available. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The changes and the reason
-
charge_amount
string
- Amount billed.
-
diagnosis_code_1
string
- The diagnosis code; null or blank clears it.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
- A modifier; null or blank clears it.
-
modifier_2
string
- A modifier; null or blank clears it.
-
modifier_3
string
- A modifier; null or blank clears it.
-
modifier_4
string
- A modifier; null or blank clears it.
-
par_number
string
- The prior authorization request number; null or blank clears it.
-
place_of_service
string
- The place of service code.
-
procedure_code
string
- The procedure code, e.g. T1019.
-
reason
string, required
- Why the claim is corrected; kept on its audit trail.
-
service_date_from
string
- YYYY-MM-DD.
-
service_date_to
string
- YYYY-MM-DD.
-
units
string
- Units billed.
| Field |
Type |
Required |
Description |
| charge_amount |
string |
no |
Amount billed. |
| diagnosis_code_1 |
string |
no |
The diagnosis code; null or blank clears it. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
A modifier; null or blank clears it. |
| modifier_2 |
string |
no |
A modifier; null or blank clears it. |
| modifier_3 |
string |
no |
A modifier; null or blank clears it. |
| modifier_4 |
string |
no |
A modifier; null or blank clears it. |
| par_number |
string |
no |
The prior authorization request number; null or blank clears it. |
| place_of_service |
string |
no |
The place of service code. |
| procedure_code |
string |
no |
The procedure code, e.g. T1019. |
| reason |
string |
yes |
Why the claim is corrected; kept on its audit trail. |
| service_date_from |
string |
no |
YYYY-MM-DD. |
| service_date_to |
string |
no |
YYYY-MM-DD. |
| units |
string |
no |
Units billed. |
-
201 The replacement claim and its batch
object
-
batch
Batch, required
-
data
Claim, required
| Field |
Type |
Required |
Description |
| batch |
Batch |
yes |
|
| data |
Claim |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code already_replaced: Conflict, as the operation's description says.
Error
-
422 Code release_available: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/claims/{id}/unreconcile
Remove a claim's reconciled mark
As the payment report's toggle does. Another agency's batch or claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The claim
object
-
data
Claim, required
| Field |
Type |
Required |
Description |
| data |
Claim |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/denials
List denials
A denial is a claim the remittance did not pay. The agency's denials in payment date, newest first. With updated_since the order is change order, for a sync that pages with after_id.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| member |
query |
no |
Only claims whose Medicaid ID or patient name contains this text, case-insensitively. At most 64 characters. |
| payment_date_from |
query |
no |
Denials whose payment date is on or between these days. on or after this date (YYYY-MM-DD, Colorado). |
| payment_date_to |
query |
no |
Denials whose payment date is on or between these days. on or before this date (YYYY-MM-DD, Colorado). |
-
200 A page of denials
object
-
data
array of Denial, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Denial |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Code bad_request: a malformed limit, offset, search, updated_since, after_id or filter, named in the message.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/finding-dismissals
Dismiss a warning
Dismisses any warning by its rule, subject and fingerprint: it is listed as dismissed until its figures change. Dismissing one already dismissed at the same figures answers that dismissal. A fingerprint that is not the subject's current one for the rule (its figures changed since it was listed, or the record is not this agency's) is 409 stale_finding. A rule no warning has is 422 unknown_rule; a warning that refuses (unsendable, or made strict by the agency) or that its rule never lets be dismissed is 422 not_dismissible; a rule that asks why, with no reason of 3 to 500 characters, is 422 reason_required. A credential that may not write is 403. Nothing is written on any refusal.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The warning to dismiss
-
context
object
- The inputs the warning was listed with beyond its subject, as it named them.
-
fingerprint
string, required
- The warning's fingerprint, as it was listed.
-
reason
string
- Why it is dismissed: 3 to 500 characters where the rule asks for one.
-
rule_id
string, required
- The warning's rule, as the warning names it (revenue.underpayment, say).
-
subject_date
string
- The day, for a warning about one day of its subject.
-
subject_id
string, required
- The record the warning is about.
-
subject_type
string, required
- What the warning is about, as the warning names it (claim, say).
| Field |
Type |
Required |
Description |
| context |
object |
no |
The inputs the warning was listed with beyond its subject, as it named them. |
| fingerprint |
string |
yes |
The warning's fingerprint, as it was listed. |
| reason |
string |
no |
Why it is dismissed: 3 to 500 characters where the rule asks for one. |
| rule_id |
string |
yes |
The warning's rule, as the warning names it (revenue.underpayment, say). |
| subject_date |
string |
no |
The day, for a warning about one day of its subject. |
| subject_id |
string |
yes |
The record the warning is about. |
| subject_type |
string |
yes |
What the warning is about, as the warning names it (claim, say). |
-
201 The dismissal
object
-
data
FindingDismissal, required
| Field |
Type |
Required |
Description |
| data |
FindingDismissal |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
409 Code stale_finding: Conflict, as the operation's description says.
Error
-
422 Codes not_dismissible, reason_required, unknown_rule: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/finding-dismissals/{id}/restore
Show a dismissed warning again
Ends the dismissal, so the warning is listed again; the dismissal is kept, with when it was shown again. Another agency's dismissal, or one already shown again, is 404. A credential that may not write is 403.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The dismissal
object
-
data
FindingDismissal, required
| Field |
Type |
Required |
Description |
| data |
FindingDismissal |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/resubmission-deadlines
List resubmission deadlines
Denied and unpaid claims, the soonest resubmit-by date first, each with the date and what it counts from. A line whose date passed more than 30 days ago is no longer listed. Dismissed lines are left out unless include_dismissed is true.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| within_days |
query |
no |
Only lines due on or before today plus this many days (passed ones included). |
| include_dismissed |
query |
no |
true to list dismissed lines too, each with dismissed: true. |
-
200 The deadlines
object
-
data
array of ResubmissionDeadline, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ResubmissionDeadline |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
DELETE /api/v1/revenue-warnings/dismissals
Show a dismissed revenue warning again
As the batch page's Show again button: ends the dismissal, so the warning is listed as not dismissed; the dismissal is kept as history. No dismissal of that warning in this agency is 404.
Request body (required)
application/json
object
The warning to show again
-
fingerprint
string, required
- The warning's fingerprint, as it was listed.
-
kind
string, required
- The warning's kind, as the warning names it.
-
subject_id
string, required
- The claim the warning is about: the warning's claim_id.
| Field |
Type |
Required |
Description |
| fingerprint |
string |
yes |
The warning's fingerprint, as it was listed. |
| kind |
string |
yes |
The warning's kind, as the warning names it. |
| subject_id |
string |
yes |
The claim the warning is about: the warning's claim_id. |
-
204 Shown again
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/revenue-warnings/dismissals
Dismiss a revenue warning
As the batch page's Dismiss button: the warning is listed as dismissed until its figures change. Dismissing one already dismissed answers the existing dismissal. A kind no warning has is 422 unknown_kind. A fingerprint that is not the warning's current one (its figures changed since it was listed) is 409 stale_finding, and nothing is written. Another agency's claim answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The warning to dismiss
-
fingerprint
string, required
- The warning's fingerprint, as it was listed.
-
kind
string, required
- The warning's kind, as the warning names it.
-
subject_id
string, required
- The claim the warning is about: the warning's claim_id.
| Field |
Type |
Required |
Description |
| fingerprint |
string |
yes |
The warning's fingerprint, as it was listed. |
| kind |
string |
yes |
The warning's kind, as the warning names it. |
| subject_id |
string |
yes |
The claim the warning is about: the warning's claim_id. |
-
201 The dismissal
object
-
data
RevenueWarningDismissal, required
| Field |
Type |
Required |
Description |
| data |
RevenueWarningDismissal |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
409 Code stale_finding: Conflict, as the operation's description says.
Error
-
422 Code unknown_kind: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/underpayments
List underpaid claims
Paid claims HCPF paid less than its published rate for the dates of service says, after the adjustments that lawfully explain short pay, the largest gap first, then the newest paid. Paid dates default to the last 90 days; a range over 366 days is 400. Dismissed rows are left out unless include_dismissed is true. Nothing here blocks a claim.
| Parameter |
In |
Required |
Description |
| paid_from |
query |
no |
First paid date (YYYY-MM-DD). Default 90 days before paid_to. |
| paid_to |
query |
no |
Last paid date (YYYY-MM-DD). Default today. |
| include_dismissed |
query |
no |
true also lists dismissed rows, with dismissed true. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 The underpaid claims
object
-
data
array of Underpayment, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
paid_from
string, required
- The first paid date read.
-
paid_to
string, required
- The last paid date read.
-
total
integer, required
- Every matching row.
-
total_gap
string, required
- The sum of every listed row's gap, not just this page's.
-
truncated
boolean, required
- True when the period held more paid claims than one read judges (5000): only the newest-paid were judged. Narrow the dates to see the rest.
| Field |
Type |
Required |
Description |
| data |
array of Underpayment |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| paid_from |
string |
yes |
The first paid date read. |
| paid_to |
string |
yes |
The last paid date read. |
| total |
integer |
yes |
Every matching row. |
| total_gap |
string |
yes |
The sum of every listed row's gap, not just this page's. |
| truncated |
boolean |
yes |
True when the period held more paid claims than one read judges (5000): only the newest-paid were judged. Narrow the dates to see the rest. |
-
400 Bad Request, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
Client records
POST /api/v1/calendar-events/{id}/restore
Undo a change to a calendar event
As the Today page's Undo does: puts the event back to the status and due date it had, upcoming or overdue, and clears any completion. A done or dismissed status is 422; use complete or dismiss for those. One changed by another write while this request ran answers 409 stale_record, and nothing is saved.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The state to restore
-
due_date
string
- The day it was due, YYYY-MM-DD.
-
due_time
string
- The time it was due, HH:MM:SS, Mountain time.
-
status
string, required
- The status it had.
| Field |
Type |
Required |
Description |
| due_date |
string |
no |
The day it was due, YYYY-MM-DD. |
| due_time |
string |
no |
The time it was due, HH:MM:SS, Mountain time. |
| status |
string |
yes |
The status it had. |
-
200 The event
object
-
data
object, required
-
data.client_id
string, required
- The client it is about.
-
data.completed_at
string
- When it was done.
-
data.description
string
- More about it.
-
data.due_date
string, required
- The day it is due.
-
data.due_time
string
- A time of day, HH:MM:SS (Mountain time).
-
data.event_type
string, required
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version.
-
data.status
string, required
-
data.title
string, required
- What is due.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client it is about. |
| data.completed_at |
string |
no |
When it was done. |
| data.description |
string |
no |
More about it. |
| data.due_date |
string |
yes |
The day it is due. |
| data.due_time |
string |
no |
A time of day, HH:MM:SS (Mountain time). |
| data.event_type |
string |
yes |
|
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version. |
| data.status |
string |
yes |
|
| data.title |
string |
yes |
What is due. |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/client-certifications/{id}
Delete a certification period
Removes it, as the Certifications tab does; the audit trail keeps what it was.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The deleted certification
object
-
data
ClientCertification, required
| Field |
Type |
Required |
Description |
| data |
ClientCertification |
yes |
|
-
default An error, in the shared envelope.
Error
PATCH /api/v1/client-certifications/{id}
Change a certification period
Send only what changes. An overlap with another period answers 422.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
ClientCertificationInput
What to change
-
200 The certification
object
-
data
ClientCertification, required
| Field |
Type |
Required |
Description |
| data |
ClientCertification |
yes |
|
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/client-other-services/{id}
Delete a client's other service
Removes it, as the client page does; the audit trail keeps what it was.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The deleted other service
object
-
data
ClientOtherService, required
| Field |
Type |
Required |
Description |
| data |
ClientOtherService |
yes |
|
-
default An error, in the shared envelope.
Error
PATCH /api/v1/client-other-services/{id}
Change a client's other service
Send only what changes; days replaces the list, and times replaces the map. A refused value answers 422 naming the field.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
ClientOtherServiceInput
What to change
-
200 The other service
object
-
data
ClientOtherService, required
| Field |
Type |
Required |
Description |
| data |
ClientOtherService |
yes |
|
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{client_id}/contacts/{contact_id}/history
Read a client's contact's history
As the People section's History does: the contact's edits, newest first, each with when it was saved, who saved it ("System" when no member is recorded) and the names of the fields it changed; never an old or new value. The contact must hold a relation to the client, current or ended; one that does not answers 404. Needs clients.view; a client outside the caller's reach answers 403 forbidden.
| Parameter |
In |
Required |
Description |
| client_id |
path |
yes |
The client. |
| contact_id |
path |
yes |
The contact. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of revisions
object
-
data
array of ContactHistoryEntry, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ContactHistoryEntry |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/calendar-events
List a client's calendar events
As the client's Calendar tab lists them: every event, done and dismissed included, earliest due first (by time of day within a date, untimed last). `open=upcoming` keeps the open events due today or later, `open=overdue` the open ones whose date has passed; any other value is 400. Close one with `POST /api/v1/reminders/{id}/complete` or `/dismiss`, whatever its date.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| open |
query |
no |
upcoming or overdue; every event when left out. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of events
object
-
data
array of object, required
-
data[].client_id
string, required
- The client it is about.
-
data[].completed_at
string
- When it was done.
-
data[].description
string
- More about it.
-
data[].due_date
string, required
- The day it is due.
-
data[].due_time
string
- A time of day, HH:MM:SS (Mountain time).
-
data[].event_type
string, required
-
data[].id
string, required
- The record's id.
-
data[].lock_version
integer, required
- Its version.
-
data[].status
string, required
-
data[].title
string, required
- What is due.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].client_id |
string |
yes |
The client it is about. |
| data[].completed_at |
string |
no |
When it was done. |
| data[].description |
string |
no |
More about it. |
| data[].due_date |
string |
yes |
The day it is due. |
| data[].due_time |
string |
no |
A time of day, HH:MM:SS (Mountain time). |
| data[].event_type |
string |
yes |
|
| data[].id |
string |
yes |
The record's id. |
| data[].lock_version |
integer |
yes |
Its version. |
| data[].status |
string |
yes |
|
| data[].title |
string |
yes |
What is due. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Bad Request, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/calendar-events
Add an event to a client's calendar
As the client's Calendar tab's Add Event does: a custom event, upcoming until it is done or dismissed (`POST /api/v1/reminders/{id}/complete` and `/dismiss` close it).
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The event
-
description
string
- More about it, up to 5000 characters.
-
due_date
string, required
- The day it is due, YYYY-MM-DD.
-
due_time
string
- The time it is due, HH:MM:SS, Mountain time.
-
title
string, required
- What is due, up to 200 characters.
| Field |
Type |
Required |
Description |
| description |
string |
no |
More about it, up to 5000 characters. |
| due_date |
string |
yes |
The day it is due, YYYY-MM-DD. |
| due_time |
string |
no |
The time it is due, HH:MM:SS, Mountain time. |
| title |
string |
yes |
What is due, up to 200 characters. |
-
201 The event
object
-
data
object, required
-
data.client_id
string, required
- The client it is about.
-
data.completed_at
string
- When it was done.
-
data.description
string
- More about it.
-
data.due_date
string, required
- The day it is due.
-
data.due_time
string
- A time of day, HH:MM:SS (Mountain time).
-
data.event_type
string, required
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version.
-
data.status
string, required
-
data.title
string, required
- What is due.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client it is about. |
| data.completed_at |
string |
no |
When it was done. |
| data.description |
string |
no |
More about it. |
| data.due_date |
string |
yes |
The day it is due. |
| data.due_time |
string |
no |
A time of day, HH:MM:SS (Mountain time). |
| data.event_type |
string |
yes |
|
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version. |
| data.status |
string |
yes |
|
| data.title |
string |
yes |
What is due. |
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/certifications
List a client's certification periods
Newest first, as the client's Certifications tab lists them.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of certifications
object
-
data
array of ClientCertification, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientCertification |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/certifications
Record a client's certification period
As the Certifications tab does. A period overlapping another of the client's answers 422 naming effective_date.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
ClientCertificationInput
The period
-
201 The certification
object
-
data
ClientCertification, required
| Field |
Type |
Required |
Description |
| data |
ClientCertification |
yes |
|
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/chart
Read a page of a client's chart
As the /clients/:id/chart page: every record the agency holds for the client, newest first (by occurred_on, then when it was made), with each signed record's state, signers, open signature lines, true copy, signed addenda and void; each document's scan status; each care log's source and attestation. A draft is not an entry, except a care log. Another agency's client answers 404; a filter it cannot read answers 400 naming it.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| types |
query |
no |
Record kinds, comma-separated (supervisory_visit, plan_of_care, monthly_client_report, complaint, critical_incident, consent_notice, emergency_information, care_log, half_month_summary, document, legacy_scan); every kind when left out. |
| service_type |
query |
no |
Only entries of this service (personal_care, homemaker, hma); a kind with no service leaves the page while it is set. |
| caregiver_id |
query |
no |
Only entries of this caregiver; a kind with no caregiver leaves the page while it is set. |
| from |
query |
no |
The first date, YYYY-MM-DD, inclusive. |
| to |
query |
no |
The last date, YYYY-MM-DD, inclusive. |
-
200 A page of the chart
object
-
data
array of object, required
-
data[].addenda
array of object, required
- The record's signed addenda, in signing order.
-
data[].addenda[].body
string, required
- What it adds.
-
data[].addenda[].id
string, required
- The addendum.
-
data[].addenda[].reason
string
- Why it was added.
-
data[].addenda[].signatures
array of object, required
- Its live signatures, oldest first.
-
data[].addenda[].signatures[].channel
string
- Where it was signed.
-
data[].addenda[].signatures[].method
string, required
- How it was signed.
-
data[].addenda[].signatures[].role
string, required
- The line signed.
-
data[].addenda[].signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
data[].addenda[].signatures[].signed_at
string, required
- When.
-
data[].addenda[].signatures[].signer_name
string, required
- Who signed, as given.
-
data[].addenda[].signed_at
string, required
- When it was signed.
-
data[].addenda[].state
string
- The addendum's own state.
-
data[].addenda[].true_copy
object, required
-
data[].addenda[].true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
data[].addenda[].true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
data[].care_log
object
-
data[].care_log.attested
boolean, required
- Whether the client's attestation is on it: a client or representative signature, or recorded words.
-
data[].care_log.source
string, required
- Where the log was kept.
-
data[].caregiver_id
string
- The caregiver.
-
data[].caregiver_name
string
- The caregiver's name.
-
data[].document
object
-
data[].document.file_name
string, required
- Its file name.
-
data[].document.id
string, required
- The document.
-
data[].document.scan_status
string, required
- Its virus scan; only a clean document can be downloaded.
-
data[].kind
string, required
- The kind of record.
-
data[].legacy_signed
boolean, required
- True for a record signed before the electronic record: its signatures are on paper, and it has no true copy.
-
data[].missing_signers
array of string, required
- Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended.
-
data[].occurred_on
string, required
- The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain).
-
data[].path
string
- The app page the title opens, or a document's download; null for a document whose virus scan is not clean.
-
data[].record_id
string, required
- The record, or for a document or scan the document.
-
data[].service_type
string
- The service.
-
data[].signatures
array of object, required
- The live signatures, oldest first.
-
data[].signatures[].channel
string
- Where it was signed.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed, as given.
-
data[].state
string
- The record's state; null for a document.
-
data[].title
string, required
- The entry's title, as the chart shows it.
-
data[].true_copy
object, required
-
data[].true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
data[].true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
data[].void
object
-
data[].void.actor_name
string
- Who voided it; null for an API key.
-
data[].void.reason
string, required
- Why it was voided.
-
data[].void.replaced_by_id
string
- The draft made to replace it, when one was made.
-
data[].void.voided_at
string, required
- When it was voided.
-
data[].work_order_id
string
- A Monthly Client Report's Work Order.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].addenda |
array of object |
yes |
The record's signed addenda, in signing order. |
| data[].addenda[].body |
string |
yes |
What it adds. |
| data[].addenda[].id |
string |
yes |
The addendum. |
| data[].addenda[].reason |
string |
no |
Why it was added. |
| data[].addenda[].signatures |
array of object |
yes |
Its live signatures, oldest first. |
| data[].addenda[].signatures[].channel |
string |
no |
Where it was signed. |
| data[].addenda[].signatures[].method |
string |
yes |
How it was signed. |
| data[].addenda[].signatures[].role |
string |
yes |
The line signed. |
| data[].addenda[].signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| data[].addenda[].signatures[].signed_at |
string |
yes |
When. |
| data[].addenda[].signatures[].signer_name |
string |
yes |
Who signed, as given. |
| data[].addenda[].signed_at |
string |
yes |
When it was signed. |
| data[].addenda[].state |
string |
no |
The addendum's own state. |
| data[].addenda[].true_copy |
object |
yes |
|
| data[].addenda[].true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| data[].addenda[].true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| data[].care_log |
object |
no |
|
| data[].care_log.attested |
boolean |
yes |
Whether the client's attestation is on it: a client or representative signature, or recorded words. |
| data[].care_log.source |
string |
yes |
Where the log was kept. |
| data[].caregiver_id |
string |
no |
The caregiver. |
| data[].caregiver_name |
string |
no |
The caregiver's name. |
| data[].document |
object |
no |
|
| data[].document.file_name |
string |
yes |
Its file name. |
| data[].document.id |
string |
yes |
The document. |
| data[].document.scan_status |
string |
yes |
Its virus scan; only a clean document can be downloaded. |
| data[].kind |
string |
yes |
The kind of record. |
| data[].legacy_signed |
boolean |
yes |
True for a record signed before the electronic record: its signatures are on paper, and it has no true copy. |
| data[].missing_signers |
array of string |
yes |
Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended. |
| data[].occurred_on |
string |
yes |
The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain). |
| data[].path |
string |
no |
The app page the title opens, or a document's download; null for a document whose virus scan is not clean. |
| data[].record_id |
string |
yes |
The record, or for a document or scan the document. |
| data[].service_type |
string |
no |
The service. |
| data[].signatures |
array of object |
yes |
The live signatures, oldest first. |
| data[].signatures[].channel |
string |
no |
Where it was signed. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed, as given. |
| data[].state |
string |
no |
The record's state; null for a document. |
| data[].title |
string |
yes |
The entry's title, as the chart shows it. |
| data[].true_copy |
object |
yes |
|
| data[].true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| data[].true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| data[].void |
object |
no |
|
| data[].void.actor_name |
string |
no |
Who voided it; null for an API key. |
| data[].void.reason |
string |
yes |
Why it was voided. |
| data[].void.replaced_by_id |
string |
no |
The draft made to replace it, when one was made. |
| data[].void.voided_at |
string |
yes |
When it was voided. |
| data[].work_order_id |
string |
no |
A Monthly Client Report's Work Order. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Bad Request, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/consent-forms
List a client's intake notices
Newest first, the disclosure notices and rights acknowledgements alike.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 25, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of notices
object
-
data
array of object, required
-
data[].answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data[].client_id
string, required
- The client.
-
data[].declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data[].defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data[].form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When the notice was started.
-
data[].lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data[].missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data[].missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data[].missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data[].record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data[].signatures
array of object
- The live signatures, oldest first.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed.
-
data[].signed_at
string
- When the first signature locked it; null on a draft.
-
data[].signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data[].client_id |
string |
yes |
The client. |
| data[].declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data[].defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data[].form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When the notice was started. |
| data[].lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data[].missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data[].missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data[].missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data[].record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data[].signatures |
array of object |
no |
The live signatures, oldest first. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed. |
| data[].signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data[].signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/consent-forms
Start a client's intake notice
Starts a draft stamped with the agency's current wording, each disclosure item prefilled with its first option (Agency). The client's open draft of that type, when there is one, is returned instead. Another agency's client is 404, before the body is judged.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The notice
-
form_type
string, required
- The notice to start.
| Field |
Type |
Required |
Description |
| form_type |
string |
yes |
The notice to start. |
-
201 The notice
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data.client_id
string, required
- The client.
-
data.declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data.defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data.form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When the notice was started.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data.client_id |
string |
yes |
The client. |
| data.declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data.defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data.form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When the notice was started. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/emergency-info
List a client's emergency information revisions
Newest first; the first is the current sheet. Each save is a new revision.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of revisions
object
-
data
array of object, required
-
data[].answers
object, required
- The answers, by question key.
-
data[].client_id
string, required
- The client.
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When this revision was saved.
-
data[].missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data[].missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data[].missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data[].record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
data[].signatures
array of object
- The live signatures, oldest first.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed.
-
data[].signed_at
string
- When the first signature locked it; null on a draft.
-
data[].signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
data[].superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
data[].version
integer, required
- Its revision number.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].answers |
object |
yes |
The answers, by question key. |
| data[].client_id |
string |
yes |
The client. |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When this revision was saved. |
| data[].missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data[].missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data[].missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data[].record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| data[].signatures |
array of object |
no |
The live signatures, oldest first. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed. |
| data[].signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data[].signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| data[].superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| data[].version |
integer |
yes |
Its revision number. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/emergency-info
Save a client's emergency information
Saves a new revision, as the Emergency information page does; answers to questions not sent keep their current value. An answer the form refuses answers 422 naming the question.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The answers
-
answers
object, required
- Answers by question key.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
Answers by question key. |
-
201 The revision
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key.
-
data.client_id
string, required
- The client.
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When this revision was saved.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
data.superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
data.version
integer, required
- Its revision number.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key. |
| data.client_id |
string |
yes |
The client. |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When this revision was saved. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| data.superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| data.version |
integer |
yes |
Its revision number. |
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/clients/{id}/health-summary
Delete a client's health summary
As the Medical tab's Delete does; the audit trail keeps it.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The deleted summary
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.edited_at
string
- When it was last edited.
-
data.generated_at
string
- When it was written.
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version; send it back to edit.
-
data.model_used
string
- The AI model that wrote it.
-
data.text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.edited_at |
string |
no |
When it was last edited. |
| data.generated_at |
string |
no |
When it was written. |
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version; send it back to edit. |
| data.model_used |
string |
no |
The AI model that wrote it. |
| data.text |
string |
yes |
The summary, in Markdown. |
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/health-summary
Get a client's health summary
The AI-written summary on the client's Medical tab. None yet is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The summary
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.edited_at
string
- When it was last edited.
-
data.generated_at
string
- When it was written.
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version; send it back to edit.
-
data.model_used
string
- The AI model that wrote it.
-
data.text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.edited_at |
string |
no |
When it was last edited. |
| data.generated_at |
string |
no |
When it was written. |
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version; send it back to edit. |
| data.model_used |
string |
no |
The AI model that wrote it. |
| data.text |
string |
yes |
The summary, in Markdown. |
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/clients/{id}/health-summary
Edit a client's health summary
As the Medical tab's Edit does: replaces the summary's text. Send the lock_version it was read with; a newer one answers 409.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The new text
-
lock_version
integer, required
- The lock_version it was read with.
-
text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
The lock_version it was read with. |
| text |
string |
yes |
The summary, in Markdown. |
-
200 The summary
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.edited_at
string
- When it was last edited.
-
data.generated_at
string
- When it was written.
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version; send it back to edit.
-
data.model_used
string
- The AI model that wrote it.
-
data.text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.edited_at |
string |
no |
When it was last edited. |
| data.generated_at |
string |
no |
When it was written. |
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version; send it back to edit. |
| data.model_used |
string |
no |
The AI model that wrote it. |
| data.text |
string |
yes |
The summary, in Markdown. |
-
409 Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/health-summary
Write or rewrite a client's health summary
As the Medical tab's Generate and Regenerate do: the AI summarises the client's conditions, allergies, medications and surgeries, replacing any summary there was. A client whose medical record lists none of them, and who has no summary yet, is 422 no_conditions. The AI being unavailable is 503 ai_unavailable.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
201 The summary
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.edited_at
string
- When it was last edited.
-
data.generated_at
string
- When it was written.
-
data.id
string, required
- The record's id.
-
data.lock_version
integer, required
- Its version; send it back to edit.
-
data.model_used
string
- The AI model that wrote it.
-
data.text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.edited_at |
string |
no |
When it was last edited. |
| data.generated_at |
string |
no |
When it was written. |
| data.id |
string |
yes |
The record's id. |
| data.lock_version |
integer |
yes |
Its version; send it back to edit. |
| data.model_used |
string |
no |
The AI model that wrote it. |
| data.text |
string |
yes |
The summary, in Markdown. |
-
422 Code no_conditions: Unprocessable Content, as the operation's description says.
Error
-
503 Code ai_unavailable: Service Unavailable, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/clients/{id}/information-sheet
Update a client's information sheet
Writes the fields sent, as the Information Sheet page's Save does, the client, medical and case manager parts in one transaction; null or blank clears a field, except first_name, last_name and ssn, where it is 422 null_not_allowed. The answer names the fields written; the SSN is never returned.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The fields to write
-
address
string
- As the Information Sheet names it; null or blank clears it.
-
allergies
string
- As the Information Sheet names it; null or blank clears it.
-
city
string
- As the Information Sheet names it; null or blank clears it.
-
clinic_name
string
- As the Information Sheet names it; null or blank clears it.
-
date_of_birth
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_address
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_name
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_phone
string
- As the Information Sheet names it; null or blank clears it.
-
emergency_contact_name
string
- As the Information Sheet names it; null or blank clears it.
-
emergency_contact_phone
string
- As the Information Sheet names it; null or blank clears it.
-
field_staff_instructions
string
- As the Information Sheet names it; null or blank clears it.
-
first_name
string
- As the Information Sheet names it; never blank.
-
gender
string
- As the Information Sheet names it; null or blank clears it.
-
home_phone
string
- As the Information Sheet names it; null or blank clears it.
-
last_name
string
- As the Information Sheet names it; never blank.
-
manager_email
string
- As the Information Sheet names it; null or blank clears it.
-
manager_fax
string
- As the Information Sheet names it; null or blank clears it.
-
manager_name
string
- As the Information Sheet names it; null or blank clears it.
-
manager_phone
string
- As the Information Sheet names it; null or blank clears it.
-
medicaid_id
string
- As the Information Sheet names it; null or blank clears it.
-
medications
string
- As the Information Sheet names it; null or blank clears it.
-
mobile_phone
string
- As the Information Sheet names it; null or blank clears it.
-
other_conditions
string
- As the Information Sheet names it; null or blank clears it.
-
physical_conditions
string
- As the Information Sheet names it; null or blank clears it.
-
ssn
string
- The client's SSN, never returned; leave it out to keep the stored one.
-
state
string
- As the Information Sheet names it; null or blank clears it.
-
supervisor_name
string
- As the Information Sheet names it; null or blank clears it.
-
supervisor_phone
string
- As the Information Sheet names it; null or blank clears it.
-
zip
string
- As the Information Sheet names it; null or blank clears it.
| Field |
Type |
Required |
Description |
| address |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| allergies |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| city |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| clinic_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| date_of_birth |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_address |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| emergency_contact_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| emergency_contact_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| field_staff_instructions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| first_name |
string |
no |
As the Information Sheet names it; never blank. |
| gender |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| home_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| last_name |
string |
no |
As the Information Sheet names it; never blank. |
| manager_email |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_fax |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| medicaid_id |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| medications |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| mobile_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| other_conditions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| physical_conditions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| ssn |
string |
no |
The client's SSN, never returned; leave it out to keep the stored one. |
| state |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| supervisor_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| supervisor_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| zip |
string |
no |
As the Information Sheet names it; null or blank clears it. |
-
200 What was written
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.fields
array of string, required
- The fields written.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.fields |
array of string |
yes |
The fields written. |
-
422 Code null_not_allowed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/medical
Read a client's medical information
The doctor, conditions, allergies, medications, field staff instructions and functional limitations the client page's Medical tab shows; every field null when none were ever saved. The read is recorded on the PHI access log.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The medical information
object
-
data
object, required
-
data.allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.client_id
string, required
- The client.
-
data.clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
data.functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
data.functional_limitations.other
string
- Any other limitation.
-
data.functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
data.functional_limitations.speech
boolean
- Whether the client has this limitation.
-
data.functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.vision
boolean
- Whether the client has this limitation.
-
data.medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.client_id |
string |
yes |
The client. |
| data.clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| data.functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.other |
string |
no |
Any other limitation. |
| data.functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| data.medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
-
default An error, in the shared envelope.
Error
PATCH /api/v1/clients/{id}/medical
Change a client's medical information
Writes the fields sent, as the Medical tab's Save does, creating the record on the first write; a blank or null clears a field. 422 nothing_to_change for a body with none of these fields. Audited against the credential.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The fields to write
-
allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
functional_limitations.other
string
- Any other limitation.
-
functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
functional_limitations.speech
boolean
- Whether the client has this limitation.
-
functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
functional_limitations.vision
boolean
- Whether the client has this limitation.
-
medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.other |
string |
no |
Any other limitation. |
| functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
-
200 The medical information
object
-
data
object, required
-
data.allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.client_id
string, required
- The client.
-
data.clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
data.functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
data.functional_limitations.other
string
- Any other limitation.
-
data.functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
data.functional_limitations.speech
boolean
- Whether the client has this limitation.
-
data.functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
data.functional_limitations.vision
boolean
- Whether the client has this limitation.
-
data.medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
data.surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.client_id |
string |
yes |
The client. |
| data.clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| data.functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.other |
string |
no |
Any other limitation. |
| data.functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| data.functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| data.medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| data.surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
-
422 Code nothing_to_change: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/clients/{id}/next-action-snoozes
Undo a Next Actions snooze
As the page's Undo does: the suggestion is back on the caller's Next Actions for that client. A suggestion that was not snoozed answers the same.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| suggestion_id |
query |
yes |
The suggestion to bring back. |
-
200 The suggestion
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.suggestion_id |
string |
yes |
The Next Actions suggestion. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/next-action-snoozes
Snooze a client's Next Actions suggestion
As the client page's Snooze does: the suggestion leaves the caller's Next Actions for that client until the snooze ends. Snoozing it again moves the end.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The suggestion
-
days
integer
- Days to snooze it, 1 to 365. Leave it out for 7, as the page does.
-
suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| days |
integer |
no |
Days to snooze it, 1 to 365. Leave it out for 7, as the page does. |
| suggestion_id |
string |
yes |
The Next Actions suggestion. |
-
201 The snooze
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.snoozed_until
string, required
- When it comes back.
-
data.suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.snoozed_until |
string |
yes |
When it comes back. |
| data.suggestion_id |
string |
yes |
The Next Actions suggestion. |
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/other-services
List a client's other services
The outside providers serving the client (adult day care, a CNA, an RN, PT, another), oldest first, as the client page lists them.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of other services
object
-
data
array of ClientOtherService, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientOtherService |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/other-services
Record a client's other service
As the client page does. No kind, an unknown day or a field past its length answers 422 naming the field.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
ClientOtherServiceInput
The other service
-
201 The other service
object
-
data
ClientOtherService, required
| Field |
Type |
Required |
Description |
| data |
ClientOtherService |
yes |
|
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/par-check
Get a client's PAR unit check
The client page's PAR panel: the current PAR's units by our arithmetic beside the units on the case manager's letter. A client with no current plan carrying a PAR is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The check
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
data.other_pars
array of object, required
- The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services.
-
data.other_pars[].flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
data.other_pars[].par_effective_date
string
- The PAR's first day.
-
data.other_pars[].par_expiry_date
string
- The PAR's last day.
-
data.other_pars[].par_number
string
- The PAR's number.
-
data.other_pars[].services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
data.other_pars[].services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
data.other_pars[].services[].billing_code
string
- The billing code.
-
data.other_pars[].services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
data.other_pars[].services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
data.other_pars[].services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
data.other_pars[].services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
data.other_pars[].services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
data.other_pars[].services[].hours_weekly
string
- Authorized hours a week.
-
data.other_pars[].services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
data.other_pars[].services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
data.other_pars[].services[].service
string, required
-
data.other_pars[].services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
data.other_pars[].services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
data.other_pars[].services[].units_on_par
integer
- The units the case manager's letter carries.
-
data.other_pars[].services[].variance
integer
- units_on_par less total_units.
-
data.other_pars[].weeks
string
- The PAR's weeks, as the panel prints them.
-
data.par_effective_date
string
- The PAR's first day.
-
data.par_expiry_date
string
- The PAR's last day.
-
data.par_number
string
- The PAR's number.
-
data.services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
data.services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
data.services[].billing_code
string
- The billing code.
-
data.services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
data.services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
data.services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
data.services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
data.services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
data.services[].hours_weekly
string
- Authorized hours a week.
-
data.services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
data.services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
data.services[].service
string, required
-
data.services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
data.services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
data.services[].units_on_par
integer
- The units the case manager's letter carries.
-
data.services[].variance
integer
- units_on_par less total_units.
-
data.weeks
string
- The PAR's weeks, as the panel prints them.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| data.other_pars |
array of object |
yes |
The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services. |
| data.other_pars[].flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| data.other_pars[].par_effective_date |
string |
no |
The PAR's first day. |
| data.other_pars[].par_expiry_date |
string |
no |
The PAR's last day. |
| data.other_pars[].par_number |
string |
no |
The PAR's number. |
| data.other_pars[].services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| data.other_pars[].services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| data.other_pars[].services[].billing_code |
string |
no |
The billing code. |
| data.other_pars[].services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| data.other_pars[].services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| data.other_pars[].services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| data.other_pars[].services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| data.other_pars[].services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| data.other_pars[].services[].hours_weekly |
string |
no |
Authorized hours a week. |
| data.other_pars[].services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| data.other_pars[].services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| data.other_pars[].services[].service |
string |
yes |
|
| data.other_pars[].services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| data.other_pars[].services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| data.other_pars[].services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| data.other_pars[].services[].variance |
integer |
no |
units_on_par less total_units. |
| data.other_pars[].weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
| data.par_effective_date |
string |
no |
The PAR's first day. |
| data.par_expiry_date |
string |
no |
The PAR's last day. |
| data.par_number |
string |
no |
The PAR's number. |
| data.services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| data.services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| data.services[].billing_code |
string |
no |
The billing code. |
| data.services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| data.services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| data.services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| data.services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| data.services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| data.services[].hours_weekly |
string |
no |
Authorized hours a week. |
| data.services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| data.services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| data.services[].service |
string |
yes |
|
| data.services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| data.services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| data.services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| data.services[].variance |
integer |
no |
units_on_par less total_units. |
| data.weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/clients/{id}/par-check
Save a client's PAR unit check
As the PAR panel's Save does: writes the figures sent onto the PAR's plans of care, all or none. Send a service's figures under its name; each goes to the current PAR that has a plan for that service (the check or one of other_pars). A figure left out keeps its value, and null or blank clears it. A service no current PAR has a plan for is 422.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The figures
-
hma
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
hma.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
hma.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
hma.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
hma.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
hma.units_on_par
integer
- The units the case manager's letter carries.
-
homemaker
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
homemaker.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
homemaker.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
homemaker.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
homemaker.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
homemaker.units_on_par
integer
- The units the case manager's letter carries.
-
personal_care
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
personal_care.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
personal_care.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
personal_care.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
personal_care.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
personal_care.units_on_par
integer
- The units the case manager's letter carries.
| Field |
Type |
Required |
Description |
| hma |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| hma.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| hma.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| hma.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| hma.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| hma.units_on_par |
integer |
no |
The units the case manager's letter carries. |
| homemaker |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| homemaker.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| homemaker.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| homemaker.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| homemaker.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| homemaker.units_on_par |
integer |
no |
The units the case manager's letter carries. |
| personal_care |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| personal_care.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| personal_care.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| personal_care.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| personal_care.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| personal_care.units_on_par |
integer |
no |
The units the case manager's letter carries. |
-
200 The check
object
-
data
object, required
-
data.client_id
string, required
- The client.
-
data.flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
data.other_pars
array of object, required
- The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services.
-
data.other_pars[].flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
data.other_pars[].par_effective_date
string
- The PAR's first day.
-
data.other_pars[].par_expiry_date
string
- The PAR's last day.
-
data.other_pars[].par_number
string
- The PAR's number.
-
data.other_pars[].services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
data.other_pars[].services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
data.other_pars[].services[].billing_code
string
- The billing code.
-
data.other_pars[].services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
data.other_pars[].services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
data.other_pars[].services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
data.other_pars[].services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
data.other_pars[].services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
data.other_pars[].services[].hours_weekly
string
- Authorized hours a week.
-
data.other_pars[].services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
data.other_pars[].services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
data.other_pars[].services[].service
string, required
-
data.other_pars[].services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
data.other_pars[].services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
data.other_pars[].services[].units_on_par
integer
- The units the case manager's letter carries.
-
data.other_pars[].services[].variance
integer
- units_on_par less total_units.
-
data.other_pars[].weeks
string
- The PAR's weeks, as the panel prints them.
-
data.par_effective_date
string
- The PAR's first day.
-
data.par_expiry_date
string
- The PAR's last day.
-
data.par_number
string
- The PAR's number.
-
data.services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
data.services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
data.services[].billing_code
string
- The billing code.
-
data.services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
data.services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
data.services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
data.services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
data.services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
data.services[].hours_weekly
string
- Authorized hours a week.
-
data.services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
data.services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
data.services[].service
string, required
-
data.services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
data.services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
data.services[].units_on_par
integer
- The units the case manager's letter carries.
-
data.services[].variance
integer
- units_on_par less total_units.
-
data.weeks
string
- The PAR's weeks, as the panel prints them.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.client_id |
string |
yes |
The client. |
| data.flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| data.other_pars |
array of object |
yes |
The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services. |
| data.other_pars[].flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| data.other_pars[].par_effective_date |
string |
no |
The PAR's first day. |
| data.other_pars[].par_expiry_date |
string |
no |
The PAR's last day. |
| data.other_pars[].par_number |
string |
no |
The PAR's number. |
| data.other_pars[].services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| data.other_pars[].services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| data.other_pars[].services[].billing_code |
string |
no |
The billing code. |
| data.other_pars[].services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| data.other_pars[].services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| data.other_pars[].services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| data.other_pars[].services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| data.other_pars[].services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| data.other_pars[].services[].hours_weekly |
string |
no |
Authorized hours a week. |
| data.other_pars[].services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| data.other_pars[].services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| data.other_pars[].services[].service |
string |
yes |
|
| data.other_pars[].services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| data.other_pars[].services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| data.other_pars[].services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| data.other_pars[].services[].variance |
integer |
no |
units_on_par less total_units. |
| data.other_pars[].weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
| data.par_effective_date |
string |
no |
The PAR's first day. |
| data.par_expiry_date |
string |
no |
The PAR's last day. |
| data.par_number |
string |
no |
The PAR's number. |
| data.services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| data.services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| data.services[].billing_code |
string |
no |
The billing code. |
| data.services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| data.services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| data.services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| data.services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| data.services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| data.services[].hours_weekly |
string |
no |
Authorized hours a week. |
| data.services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| data.services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| data.services[].service |
string |
yes |
|
| data.services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| data.services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| data.services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| data.services[].variance |
integer |
no |
units_on_par less total_units. |
| data.weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/relations
List a client's people
The client's relations, current and ended, each with its contact, ordered by kind, then rank, then start date, as the client page's People section lists them. kind narrows to one kind. Needs clients.view; a client outside the caller's reach answers 403 forbidden.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| kind |
query |
no |
Only this kind of relation. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of relations
object
-
data
array of ClientRelation, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientRelation |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
403 Forbidden, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/relations
Relate a person to a client
As the People section's Add does: names an existing contact by contact_id or creates one from contact. A current relation of the same single-current kind, or of the same kind and rank, is ended on the new one's start date and kept as history. Replacing a single-current kind (responsible_party, representative, case_manager, case_manager_supervisor, cma_office) must name the relation it replaces in replaces; without it, or naming one no longer current or at an old lock_version, it answers 409 stale_record and saves nothing. An unknown kind, or a contact with every field blank, answers 422 validation_failed naming the field. warnings lists what the agency may want to check (a possible duplicate person, a representative who is also the client's caregiver); they never stop the save. Needs clients.manage.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
ClientRelationInput
The relation
-
201 The relation and its warnings
object
-
data
ClientRelation, required
-
warnings
array of object, required
- What the act was done with that the agency may want to fix; usually empty. Never a refusal: the act was done.
-
warnings[].fix
object
- Where it is fixed, when a page fixes it.
-
warnings[].fix.label
string, required
- What the link says.
-
warnings[].fix.path
string, required
- The app route that fixes it.
-
warnings[].id
string, required
- The rule that raised it, stable, e.g. client_care.medicaid_id_pending.
-
warnings[].message
string, required
- For a person to read.
| Field |
Type |
Required |
Description |
| data |
ClientRelation |
yes |
|
| warnings |
array of object |
yes |
What the act was done with that the agency may want to fix; usually empty. Never a refusal: the act was done. |
| warnings[].fix |
object |
no |
Where it is fixed, when a page fixes it. |
| warnings[].fix.label |
string |
yes |
What the link says. |
| warnings[].fix.path |
string |
yes |
The app route that fixes it. |
| warnings[].id |
string |
yes |
The rule that raised it, stable, e.g. client_care.medicaid_id_pending. |
| warnings[].message |
string |
yes |
For a person to read. |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Code validation_failed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/relations/{relation_id}/end
End a client's relation
As the People section's End does: the relation stays as history with ends_on set, today (Mountain) when the body sends none. A relation already ended answers 200 with it unchanged. A relation that is not this client's answers 404. Needs clients.manage.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
| relation_id |
path |
yes |
The relation. |
Request body
application/json
object
When it ends
-
ends_on
string
- YYYY-MM-DD; today (Mountain) when left out.
| Field |
Type |
Required |
Description |
| ends_on |
string |
no |
YYYY-MM-DD; today (Mountain) when left out. |
-
200 The ended relation
object
-
data
ClientRelation, required
| Field |
Type |
Required |
Description |
| data |
ClientRelation |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/clients/{id}/satisfaction-surveys
List a client's satisfaction surveys
Newest first, drafts and completed, as the client's Surveys tab lists them.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of surveys
object
-
data
array of SatisfactionSurvey, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SatisfactionSurvey |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
POST /api/v1/clients/{id}/satisfaction-surveys
Start a satisfaction survey
A draft, as the Surveys tab's New does; survey_date is required.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
SatisfactionSurveyInput
The survey
-
201 The survey
object
-
data
SatisfactionSurvey, required
| Field |
Type |
Required |
Description |
| data |
SatisfactionSurvey |
yes |
|
-
default An error, in the shared envelope.
Error
GET /api/v1/consent-forms/{id}
Get an intake notice
Its answers, state and signatures.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The notice
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data.client_id
string, required
- The client.
-
data.declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data.defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data.form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When the notice was started.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data.client_id |
string |
yes |
The client. |
| data.declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data.defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data.form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When the notice was started. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
-
default An error, in the shared envelope.
Error
PATCH /api/v1/consent-forms/{id}
Answer an intake notice
Saves answers on a draft notice, as its page does. A signed notice answers 409 record_locked; it is corrected with an addendum or voided. A stale lock_version answers 409. Another agency's notice is 404, before the body is judged.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The answers
-
answers
object, required
- Answers by question key; a key sent counts as chosen, and a blank clears its answer. Keys not sent keep their answer.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
Answers by question key; a key sent counts as chosen, and a blank clears its answer. Keys not sent keep their answer. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The notice
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data.client_id
string, required
- The client.
-
data.declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data.defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data.form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When the notice was started.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data.client_id |
string |
yes |
The client. |
| data.declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data.defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data.form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When the notice was started. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/consent-forms/{id}/signatures
Sign an intake notice
Records agency staff's signature, typed as the credential's user: on a rights acknowledgement it documents that the notice was given; on a disclosure notice only with declined_reason, which records that the client declined and the notice was conveyed verbally. The first signature locks the notice. A line already signed answers 422 already_signed, one the notice does not take 422 role_not_allowed, a voided notice 409 voided. Another agency's notice is 404, before the body is judged. An agency API key answers 403 signature_requires_person: a key is not a person and signs nothing; a member signs in the web app or through an AI app they connected.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
declined_reason
string
- On a draft disclosure notice: why the client declined to sign. Saved with the office signature in one step, that the notice was conveyed verbally.
-
role
string, required
- office: agency staff, signed as you. A rights acknowledgement is complete with it; a disclosure notice takes it only with declined_reason. client and representative are drawn on the device in the app and answer 422 drawn_required here.
| Field |
Type |
Required |
Description |
| declined_reason |
string |
no |
On a draft disclosure notice: why the client declined to sign. Saved with the office signature in one step, that the notice was conveyed verbally. |
| role |
string |
yes |
office: agency staff, signed as you. A rights acknowledgement is complete with it; a disclosure notice takes it only with declined_reason. client and representative are drawn on the device in the app and answer 422 drawn_required here. |
-
200 The notice, and what signing it warned of
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data.client_id
string, required
- The client.
-
data.declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data.defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data.form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When the notice was started.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
warnings
array of object, required
- What the record page warns of before this line is signed, judged on the record as it was before signing; usually empty. Never a refusal: the line is signed. Each has an id (resolved-empty: a Resolved complaint whose investigation and resolution are empty; reporter: an incident's reporter line signed by a member other than the reporter it names; complaint-contact: a rights notice whose complaint contact is empty), the text, and, where answering one of the record's questions fixes it, that question_key.
-
warnings[].id
string, required
- The warning's stable id.
-
warnings[].question_key
string
- The record's question that fixes it, when one does.
-
warnings[].text
string, required
- What the signer is warned of.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data.client_id |
string |
yes |
The client. |
| data.declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data.defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data.form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When the notice was started. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| warnings |
array of object |
yes |
What the record page warns of before this line is signed, judged on the record as it was before signing; usually empty. Never a refusal: the line is signed. Each has an id (resolved-empty: a Resolved complaint whose investigation and resolution are empty; reporter: an incident's reporter line signed by a member other than the reporter it names; complaint-contact: a rights notice whose complaint contact is empty), the text, and, where answering one of the record's questions fixes it, that question_key. |
| warnings[].id |
string |
yes |
The warning's stable id. |
| warnings[].question_key |
string |
no |
The record's question that fixes it, when one does. |
| warnings[].text |
string |
yes |
What the signer is warned of. |
-
403 Code signature_requires_person: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Conflict, as the operation's description says.
Error
-
422 Codes already_signed, role_not_allowed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/contacts
Find contacts
Contacts whose first name, last name or organization match every word of search, ordered by name, among those related (now or before) to a client the caller may open. A search over 8 words answers 400 bad_request. Needs clients.view.
| Parameter |
In |
Required |
Description |
| search |
query |
no |
Words a name or organization must all match. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of contacts
object
-
data
array of Contact, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Contact |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Code bad_request: Bad Request, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/contacts/{id}
Get a contact
One contact. One related only to clients outside the caller's reach answers 403 forbidden. Needs clients.view.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The contact
object
-
data
Contact, required
| Field |
Type |
Required |
Description |
| data |
Contact |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/contacts/{id}
Change a contact
As the People section's Edit does: the change reaches every client the contact serves, each of which must be in the caller's reach. Send the lock_version it was read with; one changed since answers 409 stale_record and saves nothing. A refused value answers 422 naming the field. Needs clients.manage.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
ContactInput
What to change
-
200 The contact
object
-
data
Contact, required
| Field |
Type |
Required |
Description |
| data |
Contact |
yes |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/contacts/{id}/merge
Merge contacts that are the same person
US-120.13: the contacts loser_ids names are the same person as the one in the path. Every relation of each one, current and ended, moves to the path's contact, whose own fields are kept; a relation that would list the person twice on a client is kept as deleted history; each one named is deleted; one audit row records the merge. Every client of every contact named must be in the credential's reach. An empty loser_ids, more than 50, or the path's own id among them is 422 invalid; a contact that is not this agency's or is already deleted (so repeating a finished merge) is 404 not_found; a credential without clients.manage is 403; a merge another write got to first is 409 stale. Nothing is written on any refusal.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
ContactMerge
The contacts to merge
-
200 The contact merged into
object
-
data
Contact, required
| Field |
Type |
Required |
Description |
| data |
Contact |
yes |
|
-
403 Forbidden, as the operation's description says.
Error
-
404 Code not_found: Not Found, as the operation's description says.
Error
-
409 Conflict, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/emergency-info/{id}
Delete an emergency information revision
Deletes a draft revision, as the page's history does; the audit trail keeps it. A signed, amended or voided revision answers 409 record_locked and nothing is deleted. Another agency's revision is 404.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The deleted revision
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key.
-
data.client_id
string, required
- The client.
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When this revision was saved.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
data.superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
data.version
integer, required
- Its revision number.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key. |
| data.client_id |
string |
yes |
The client. |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When this revision was saved. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| data.superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| data.version |
integer |
yes |
Its revision number. |
-
404 Not Found, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/emergency-info/{id}/signatures
Sign an emergency information revision
Records agency staff's signature, typed as the credential's user (US-101.32). The revision is complete once the client or their authorized representative has also signed, drawn on the device in the app; that line answers 422 drawn_required here. The first signature locks the revision: it is never deleted or changed, and a later save adds the next revision as a draft. A line already signed answers 422 already_signed, a voided revision 409 voided, one another request changed while this one ran 409 stale_record. Another agency's revision is 404, before the body is judged. An agency API key answers 403 signature_requires_person: a key is not a person and signs nothing; a member signs in the web app or through an AI app they connected.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
role
string, required
- Whose line to sign: office, agency staff, signed as you. The client's or authorized representative's line is drawn on the device in the app and answers 422 drawn_required here.
| Field |
Type |
Required |
Description |
| role |
string |
yes |
Whose line to sign: office, agency staff, signed as you. The client's or authorized representative's line is drawn on the device in the app and answers 422 drawn_required here. |
-
200 The revision
object
-
data
object, required
-
data.answers
object, required
- The answers, by question key.
-
data.client_id
string, required
- The client.
-
data.id
string, required
- The record's id.
-
data.inserted_at
string
- When this revision was saved.
-
data.missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data.missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data.missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data.record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
data.signatures
array of object
- The live signatures, oldest first.
-
data.signatures[].method
string, required
- How it was signed.
-
data.signatures[].role
string, required
- The line signed.
-
data.signatures[].signed_at
string, required
- When.
-
data.signatures[].signer_name
string, required
- Who signed.
-
data.signed_at
string
- When the first signature locked it; null on a draft.
-
data.signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
data.superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
data.version
integer, required
- Its revision number.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.answers |
object |
yes |
The answers, by question key. |
| data.client_id |
string |
yes |
The client. |
| data.id |
string |
yes |
The record's id. |
| data.inserted_at |
string |
no |
When this revision was saved. |
| data.missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data.missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data.missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data.record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| data.signatures |
array of object |
no |
The live signatures, oldest first. |
| data.signatures[].method |
string |
yes |
How it was signed. |
| data.signatures[].role |
string |
yes |
The line signed. |
| data.signatures[].signed_at |
string |
yes |
When. |
| data.signatures[].signer_name |
string |
yes |
Who signed. |
| data.signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data.signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| data.superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| data.version |
integer |
yes |
Its revision number. |
-
403 Code signature_requires_person: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Codes already_signed, drawn_required: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/satisfaction-surveys/{id}
Change a satisfaction survey
Send only what changes, with the lock_version read; a stale one answers 409.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
SatisfactionSurveyInput
What to change
-
200 The survey
object
-
data
SatisfactionSurvey, required
| Field |
Type |
Required |
Description |
| data |
SatisfactionSurvey |
yes |
|
-
409 Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/satisfaction-surveys/{id}/complete
Complete a satisfaction survey
Saves any final answers and marks it completed, as the Surveys tab's Complete does. Send the lock_version read.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body
application/json
SatisfactionSurveyInput
Final answers
-
200 The survey
object
-
data
SatisfactionSurvey, required
| Field |
Type |
Required |
Description |
| data |
SatisfactionSurvey |
yes |
|
-
default An error, in the shared envelope.
Error
Payroll
DELETE /api/v1/caregivers/{id}/adp-hire
Clear a send to ADP that RUN does not have
As "I checked RUN: not there" on ADP workers does: clears the caregiver's send ADP did not answer (or one still in flight two minutes after it started), or one waiting in RUN's New Hire Wizard that was never finished, so Add to ADP is offered again. 409 hire_not_abandonable for any other (none open, or a send still in flight). 403 read_only for a read-only agency. Credentials whose member holds payroll.send_to_adp only (403 forbidden otherwise); 404 for a caregiver this agency does not have, before anything else; 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The cleared send
object
-
data
object, required
-
data.caregiver_id
string, required
- The caregiver.
-
data.message
string, required
- The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again.
-
data.status
string, required
- Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there").
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.caregiver_id |
string |
yes |
The caregiver. |
| data.message |
string |
yes |
The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again. |
| data.status |
string |
yes |
Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there"). |
-
403 Code read_only: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes hire_not_abandonable, not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/caregivers/{id}/adp-hire
Add a caregiver to ADP as a new hire
As Add to ADP on ADP workers does: sends the caregiver to RUN as a new hire (worker.hire) with the legal first and last name, address, hire date and SSN, each left out when missing (RUN's New Hire Wizard asks for it); an ADP user finishes the hire there. Sent once, never retried. Answers what the caregiver's row shows: sent (ADP named the worker; it is now linked), pending_in_adp (linked by the next sync once the hire is finished), or unconfirmed (ADP did not answer: check RUN's new hires before sending again, then DELETE this to clear it). At full access only: 403 submission_blocked while the agency's HomeCareBilling billing blocks submission, 403 read_only for a read-only agency. 409 hire_push_off unless the connection is RUN with allow_hire_push on; 409 already_linked for a caregiver with an ADP worker or an open send; 422 hire_refused when ADP refused the hire; 502 adp_unreachable when the request never reached ADP (nothing sent). Credentials whose member holds payroll.send_to_adp only (403 forbidden otherwise); 404 for a caregiver this agency does not have, before anything else; 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 Where the send stands
object
-
data
object, required
-
data.caregiver_id
string, required
- The caregiver.
-
data.message
string, required
- The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again.
-
data.status
string, required
- Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there").
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.caregiver_id |
string |
yes |
The caregiver. |
| data.message |
string |
yes |
The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again. |
| data.status |
string |
yes |
Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there"). |
-
403 Codes read_only, submission_blocked: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes already_linked, hire_push_off, not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
422 Code hire_refused: Unprocessable Content, as the operation's description says.
Error
-
502 Code adp_unreachable: Bad Gateway, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/cash-advances
List the agency's cash advances
US-102.37: as the Cash advances page lists them, newest first, filtered by status, search (the caregiver's name) and deduct_in_month (YYYY-MM, the payroll month an advance is deducted in; absent is every month, where the page starts at the current one). totals sums amount and remaining_balance over every advance the filters match, not this page.
| Parameter |
In |
Required |
Description |
| status |
query |
no |
One of outstanding, partially_repaid, fully_repaid, written_off. |
| search |
query |
no |
Part of the caregiver's name (at most 100 characters). |
| deduct_in_month |
query |
no |
YYYY-MM: the payroll month the advances are deducted in. |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of cash advances
object
-
data
array of object, required
-
data[].advance_date
string
-
data[].amount
string
- The amount advanced.
-
data[].caregiver_id
string
- The record's id.
-
data[].caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
data[].check_number
string
- The check the advance was paid by.
-
data[].deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
data[].id
string
- The record's id.
-
data[].reason
string
- Why it was advanced, as typed.
-
data[].remaining_balance
string
- What is still owed.
-
data[].status
string
- outstanding, partially_repaid, fully_repaid or written_off.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
-
totals
object, required
- Over every advance the filters match, not this page.
-
totals.amount
string
- The amounts advanced.
-
totals.remaining_balance
string
- What is still owed.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].advance_date |
string |
no |
|
| data[].amount |
string |
no |
The amount advanced. |
| data[].caregiver_id |
string |
no |
The record's id. |
| data[].caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| data[].check_number |
string |
no |
The check the advance was paid by. |
| data[].deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| data[].id |
string |
no |
The record's id. |
| data[].reason |
string |
no |
Why it was advanced, as typed. |
| data[].remaining_balance |
string |
no |
What is still owed. |
| data[].status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
| totals |
object |
yes |
Over every advance the filters match, not this page. |
| totals.amount |
string |
no |
The amounts advanced. |
| totals.remaining_balance |
string |
no |
What is still owed. |
-
default An error, in the shared envelope.
Error
POST /api/v1/cash-advances
Advance cash to a caregiver
Records a cash advance to one of the agency's caregivers, as Cash advances does; payroll recovers it. A caregiver of another agency answers 422.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The advance
-
advance_date
string, required
- YYYY-MM-DD.
-
amount
string, required
- A positive decimal.
-
caregiver_id
string, required
- The caregiver.
-
check_number
string
- The check the advance was paid by, at most 20 characters.
-
deduct_in_month
string
- The payroll month the advance is deducted in, held as the 1st of that month; absent, the advance date's month.
-
reason
string
- Why it is advanced; optional.
| Field |
Type |
Required |
Description |
| advance_date |
string |
yes |
YYYY-MM-DD. |
| amount |
string |
yes |
A positive decimal. |
| caregiver_id |
string |
yes |
The caregiver. |
| check_number |
string |
no |
The check the advance was paid by, at most 20 characters. |
| deduct_in_month |
string |
no |
The payroll month the advance is deducted in, held as the 1st of that month; absent, the advance date's month. |
| reason |
string |
no |
Why it is advanced; optional. |
-
201 The advance
object
-
data
object, required
-
data.advance_date
string
-
data.amount
string
- The amount advanced.
-
data.caregiver_id
string
- The record's id.
-
data.caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
data.check_number
string
- The check the advance was paid by.
-
data.deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
data.id
string
- The record's id.
-
data.reason
string
- Why it was advanced, as typed.
-
data.remaining_balance
string
- What is still owed.
-
data.status
string
- outstanding, partially_repaid, fully_repaid or written_off.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.advance_date |
string |
no |
|
| data.amount |
string |
no |
The amount advanced. |
| data.caregiver_id |
string |
no |
The record's id. |
| data.caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| data.check_number |
string |
no |
The check the advance was paid by. |
| data.deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| data.id |
string |
no |
The record's id. |
| data.reason |
string |
no |
Why it was advanced, as typed. |
| data.remaining_balance |
string |
no |
What is still owed. |
| data.status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/cash-advances/{id}/repayments
Record a repayment of an advance
Lowers the advance's remaining balance by amount, as Cash advances does. A repaid or written-off advance answers 422. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The repayment
-
amount
string, required
- A positive decimal.
-
notes
string
- Free text on the repayment.
-
repayment_date
string, required
- YYYY-MM-DD.
| Field |
Type |
Required |
Description |
| amount |
string |
yes |
A positive decimal. |
| notes |
string |
no |
Free text on the repayment. |
| repayment_date |
string |
yes |
YYYY-MM-DD. |
-
200 The advance
object
-
data
object, required
-
data.advance_date
string
-
data.amount
string
- The amount advanced.
-
data.caregiver_id
string
- The record's id.
-
data.caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
data.check_number
string
- The check the advance was paid by.
-
data.deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
data.id
string
- The record's id.
-
data.reason
string
- Why it was advanced, as typed.
-
data.remaining_balance
string
- What is still owed.
-
data.status
string
- outstanding, partially_repaid, fully_repaid or written_off.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.advance_date |
string |
no |
|
| data.amount |
string |
no |
The amount advanced. |
| data.caregiver_id |
string |
no |
The record's id. |
| data.caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| data.check_number |
string |
no |
The check the advance was paid by. |
| data.deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| data.id |
string |
no |
The record's id. |
| data.reason |
string |
no |
Why it was advanced, as typed. |
| data.remaining_balance |
string |
no |
What is still owed. |
| data.status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
-
404 Not Found, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/cash-advances/{id}/write-off
Write off what remains of an advance
As Cash advances does, with written_off_reason. A repaid or written-off advance answers 422. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Why
-
written_off_reason
string
- Why it is written off.
| Field |
Type |
Required |
Description |
| written_off_reason |
string |
no |
Why it is written off. |
-
200 The advance
object
-
data
object, required
-
data.advance_date
string
-
data.amount
string
- The amount advanced.
-
data.caregiver_id
string
- The record's id.
-
data.caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
data.check_number
string
- The check the advance was paid by.
-
data.deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
data.id
string
- The record's id.
-
data.reason
string
- Why it was advanced, as typed.
-
data.remaining_balance
string
- What is still owed.
-
data.status
string
- outstanding, partially_repaid, fully_repaid or written_off.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.advance_date |
string |
no |
|
| data.amount |
string |
no |
The amount advanced. |
| data.caregiver_id |
string |
no |
The record's id. |
| data.caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| data.check_number |
string |
no |
The check the advance was paid by. |
| data.deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| data.id |
string |
no |
The record's id. |
| data.reason |
string |
no |
Why it was advanced, as typed. |
| data.remaining_balance |
string |
no |
What is still owed. |
| data.status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
-
404 Not Found, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll-exports
Start a payroll export for a pay period
A pending export for billing_period_start to billing_period_end, with the agency's ADP company code, as Payroll does before it generates the file.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The pay period
-
billing_period_end
string, required
- YYYY-MM-DD.
-
billing_period_start
string, required
- YYYY-MM-DD.
| Field |
Type |
Required |
Description |
| billing_period_end |
string |
yes |
YYYY-MM-DD. |
| billing_period_start |
string |
yes |
YYYY-MM-DD. |
-
201 The export
object
-
data
object, required
-
data.adp_co_code
string
-
data.billing_period_end
string
-
data.billing_period_start
string
-
data.file_ready
boolean
- Whether GET .../file has a file to return.
-
data.format
string
- adp (Workforce Now) or adp_run.
-
data.id
string
- The record's id.
-
data.status
string
- pending, generated or exported.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.adp_co_code |
string |
no |
|
| data.billing_period_end |
string |
no |
|
| data.billing_period_start |
string |
no |
|
| data.file_ready |
boolean |
no |
Whether GET .../file has a file to return. |
| data.format |
string |
no |
adp (Workforce Now) or adp_run. |
| data.id |
string |
no |
The record's id. |
| data.status |
string |
no |
pending, generated or exported. |
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll-exports/{id}/check
Check a payroll export before sending it to ADP
As Payroll exports > Check lists them: every line ADP would refuse and why, with the page where each is fixed, sorted unsendable, refusal, warning, then by caregiver last name. Changes nothing; any member at every access level, no Idempotency-Key. An id naming none of the agency's exports answers 404 not_found, whatever else holds; then 409 payroll_integration_off while the ADP payroll integration is off for the agency.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The findings
object
-
data
array of object, required
-
data[].caregiver_id
string, required
- The caregiver, or null for the export as a whole.
-
data[].code
string, required
- Which rule found it.
-
data[].fix_path
string, required
- The HomeCareBilling page where it is fixed.
-
data[].message
string, required
- The sentence Payroll exports > Check shows.
-
data[].severity
string, required
- unsendable (no line of the ADP file can be written), refusal (ADP refuses this line; the rest goes) or warning (sent as it is).
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].caregiver_id |
string |
yes |
The caregiver, or null for the export as a whole. |
| data[].code |
string |
yes |
Which rule found it. |
| data[].fix_path |
string |
yes |
The HomeCareBilling page where it is fixed. |
| data[].message |
string |
yes |
The sentence Payroll exports > Check shows. |
| data[].severity |
string |
yes |
unsendable (no line of the ADP file can be written), refusal (ADP refuses this line; the rest goes) or warning (sent as it is). |
-
404 Code not_found: Not Found, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll-exports/{id}/file
Download a payroll export's ADP file
The generated CSV, as Payroll exports > Download serves it. A pending export answers 409 not_generated; a file that is gone 410 file_missing. With format adp_import, the file ADP imports as it is, built from the timesheets and cash advances the export was generated from, as Download for ADP builds it: RUN's Time Sheet Import (file Monthly-03012026-03312026.csv and the like) or the Workforce Now paydata file (PR{co}EPI.csv), every line ADP would refuse left out (POST /payroll-exports/{id}/check names them). With entry_sheet, the RUN sheet the office types from, as Entry sheet (to type from) builds it. A format answers 409 payroll_integration_off while the ADP payroll integration is off for the agency, and adp_import answers 422 with the check's unsendable code (product_unknown, no_company_code) and message when no line can be written. Any member at every access level. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| format |
query |
no |
adp_import or entry_sheet builds that file (US-111.6); leave it out for the stored file. |
-
200 The CSV
string
-
404 Not Found, as the operation's description says.
Error
-
409 Code not_generated (the export is pending) or payroll_integration_off (a format was asked while the ADP payroll integration is off).
Error
-
410 Code file_missing: the record exists and its file does not. Nothing changed.
Error
-
422 Code unknown_file_format, or the pre-send check's unsendable code (product_unknown, no_company_code) with its message: no line of the ADP file can be written.
Error
-
500 Code internal_error: a failure on our side, which was logged. When its message says nothing changed (the file store refused the request, the virus scan could not be queued, the upload could not be read), nothing did, the same request fails the same way until it is fixed, and the Idempotency-Key stays free.
Error
-
503 Code storage_unavailable (the file store did not answer) or, on an upload, temporarily_unavailable (its uploaded file could not be read): nothing changed, and the same request can succeed later. Retry after the Retry-After seconds; a write retried with the same Idempotency-Key runs again.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll-exports/{id}/generate
Generate a payroll export's ADP file
Builds the ADP CSV (format adp for Workforce Now, adp_run for RUN) from the period's approved timesheets, overtime included, as Payroll does, and answers the export and its warnings. A generated export can be generated again; an exported one answers 422 export_already_finalized; no approved timesheets 422 no_approved_timesheets; no ADP company code 422 adp_settings_missing. 1099 contractors are left out of the file (a warning counts them and their hours); a period whose every caregiver is a contractor answers 422 all_caregivers_contractors. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
| format |
query |
yes |
|
-
200 The export and its warnings
object
-
data
object, required
-
data.adp_co_code
string
-
data.billing_period_end
string
-
data.billing_period_start
string
-
data.file_ready
boolean
- Whether GET .../file has a file to return.
-
data.format
string
- adp (Workforce Now) or adp_run.
-
data.id
string
- The record's id.
-
data.status
string
- pending, generated or exported.
-
warnings
array of string, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.adp_co_code |
string |
no |
|
| data.billing_period_end |
string |
no |
|
| data.billing_period_start |
string |
no |
|
| data.file_ready |
boolean |
no |
Whether GET .../file has a file to return. |
| data.format |
string |
no |
adp (Workforce Now) or adp_run. |
| data.id |
string |
no |
The record's id. |
| data.status |
string |
no |
pending, generated or exported. |
| warnings |
array of string |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Codes adp_settings_missing, all_caregivers_contractors, export_already_finalized, no_approved_timesheets: Unprocessable Content, as the operation's description says.
Error
-
500 Code internal_error: a failure on our side, which was logged. When its message says nothing changed (the file store refused the request, the virus scan could not be queued, the upload could not be read), nothing did, the same request fails the same way until it is fixed, and the Idempotency-Key stays free.
Error
-
503 Code storage_unavailable (the file store did not answer) or, on an upload, temporarily_unavailable (its uploaded file could not be read): nothing changed, and the same request can succeed later. Retry after the Retry-After seconds; a write retried with the same Idempotency-Key runs again.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll-exports/{id}/mark-exported
Mark a payroll export sent to ADP
As Payroll exports does once the file is uploaded to ADP. With record_repayments true, the cash advances the payroll deducts are then repaid in one transaction, and cash_advance_repayments_recorded counts them; if that fails, none is recorded, the export stays marked exported, and warnings says so. A caregiver the file deducted more from than was still owed is named in warnings, as the repayment is capped at the balance. Marking it again records no second repayment. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body
application/json
object
Options
-
record_repayments
boolean
- true also records, for the payroll that deducts the month's cash advances, a repayment of each advance for its remaining balance, dated the period end and naming the export, as Payroll exports' Mark Downloaded does with its box checked. Default false.
| Field |
Type |
Required |
Description |
| record_repayments |
boolean |
no |
true also records, for the payroll that deducts the month's cash advances, a repayment of each advance for its remaining balance, dated the period end and naming the export, as Payroll exports' Mark Downloaded does with its box checked. Default false. |
-
200 The export
object
-
cash_advance_repayments_recorded
integer
- With record_repayments true, how many repayments were recorded.
-
data
object, required
-
data.adp_co_code
string
-
data.billing_period_end
string
-
data.billing_period_start
string
-
data.file_ready
boolean
- Whether GET .../file has a file to return.
-
data.format
string
- adp (Workforce Now) or adp_run.
-
data.id
string
- The record's id.
-
data.status
string
- pending, generated or exported.
-
warnings
array of string
| Field |
Type |
Required |
Description |
| cash_advance_repayments_recorded |
integer |
no |
With record_repayments true, how many repayments were recorded. |
| data |
object |
yes |
|
| data.adp_co_code |
string |
no |
|
| data.billing_period_end |
string |
no |
|
| data.billing_period_start |
string |
no |
|
| data.file_ready |
boolean |
no |
Whether GET .../file has a file to return. |
| data.format |
string |
no |
adp (Workforce Now) or adp_run. |
| data.id |
string |
no |
The record's id. |
| data.status |
string |
no |
pending, generated or exported. |
| warnings |
array of string |
no |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll-exports/{id}/submissions
Send a payroll export to ADP
As Payroll exports > Send to ADP does: checks the generated export, then queues one line per caregiver to post to ADP and answers the submission at once; poll GET /payroll-exports/{id}/submissions/{submission_id} for each line's result. A caregiver the check refuses, or with no linked ADP worker, is a refused line and the rest go. A press while a send of the export is a standing send answers that send; one ADP already has answers the last send with unchanged true. With resend true, as Fix and resend does: reads what ADP holds for the period, then replaces each line ADP accepted before by its item ids and adds the rest, superseding the earlier send. 409 needs_choice (details.lines, both figures per caregiver) when a line's hours in ADP are not what was sent; send again with choices. 409 resend_required when the hours changed after a send ADP holds lines of (use resend), 409 awaiting_confirmation while an earlier send is unconfirmed, 409 export_exported for an export marked downloaded, 502 read_back_failed when ADP did not answer the read-back. On an SFTP drop connection the send uploads the export's Workforce Now paydata file to the agency's ADP folder once: every caregiver in the file is a sent line, and the export is not marked exported; once ADP holds the file, resend answers 409 not_replaceable. 422 unsendable (with the findings' messages) when the check finds an export ADP cannot take, 422 not_sendable_status for an export that is not generated. Any member at full access, with a key or a grant holding hcb.submit; 403 submission_blocked while the agency's HomeCareBilling billing blocks submission (Download for ADP still works), 403 read_only for a read-only agency or key, 403 insufficient_scope for a grant without hcb.submit; 404 for an export or submission this agency does not have; 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body
application/json
object
Nothing to send; resend and choices for Fix and resend
-
choices
object
- Per caregiver id, replace (HomeCareBilling's hours) or keep (ADP's), for each line a 409 needs_choice listed.
-
resend
boolean
- true for Fix and resend: lines ADP accepted before are replaced by their ADP item ids, new ones added.
| Field |
Type |
Required |
Description |
| choices |
object |
no |
Per caregiver id, replace (HomeCareBilling's hours) or keep (ADP's), for each line a 409 needs_choice listed. |
| resend |
boolean |
no |
true for Fix and resend: lines ADP accepted before are replaced by their ADP item ids, new ones added. |
-
200 The submission
object
-
data
object, required
-
data.attempt
integer, required
- 1 for the first send of the export, one more per resend.
-
data.confirmed_at
string
- When every line was answered.
-
data.id
string, required
- The record's id.
-
data.line_count
integer, required
- How many caregivers' lines the submission has.
-
data.lines
array of object, required
-
data.lines[].caregiver_id
string
- The caregiver the line pays.
-
data.lines[].error_code
string
- ADP's code, or HomeCareBilling's when it never reached ADP.
-
data.lines[].error_message
string
- Why the line was refused.
-
data.lines[].id
string, required
- The record's id.
-
data.lines[].label
string, required
- What Payroll exports shows for the line.
-
data.lines[].status
string, required
- pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file.
-
data.message
string
- With unchanged: what Payroll exports shows.
-
data.payroll_export_id
string, required
- The payroll export sent.
-
data.sent_at
string
- When posting began.
-
data.status
string, required
- queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it.
-
data.unchanged
boolean
- Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.attempt |
integer |
yes |
1 for the first send of the export, one more per resend. |
| data.confirmed_at |
string |
no |
When every line was answered. |
| data.id |
string |
yes |
The record's id. |
| data.line_count |
integer |
yes |
How many caregivers' lines the submission has. |
| data.lines |
array of object |
yes |
|
| data.lines[].caregiver_id |
string |
no |
The caregiver the line pays. |
| data.lines[].error_code |
string |
no |
ADP's code, or HomeCareBilling's when it never reached ADP. |
| data.lines[].error_message |
string |
no |
Why the line was refused. |
| data.lines[].id |
string |
yes |
The record's id. |
| data.lines[].label |
string |
yes |
What Payroll exports shows for the line. |
| data.lines[].status |
string |
yes |
pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file. |
| data.message |
string |
no |
With unchanged: what Payroll exports shows. |
| data.payroll_export_id |
string |
yes |
The payroll export sent. |
| data.sent_at |
string |
no |
When posting began. |
| data.status |
string |
yes |
queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it. |
| data.unchanged |
boolean |
no |
Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full. |
-
403 Codes insufficient_scope, read_only, submission_blocked: Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes awaiting_confirmation, export_exported, needs_choice, not_api_connection, not_replaceable, payroll_integration_off, resend_required: Conflict, as the operation's description says.
Error
-
422 Code not_sendable_status: Unprocessable Content, as the operation's description says.
Error
-
502 Code read_back_failed: Bad Gateway, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll-exports/{id}/submissions/{submission_id}
Read a send to ADP and its lines
As Payroll exports shows a send's results: the submission's status and, per caregiver, the line's status, label and ADP's error, never the hours or rates posted. Changes nothing: any member at every access level. 404 for an export or submission this agency does not have; 409 payroll_integration_off while the agency's ADP API connection is off.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| submission_id |
path |
yes |
The submission's id. |
| limit |
query |
no |
Rows per page (default 50, at most 100; a larger value is served as 100). |
| offset |
query |
no |
Rows to skip. |
-
200 The submission
object
-
data
object, required
-
data.attempt
integer, required
- 1 for the first send of the export, one more per resend.
-
data.confirmed_at
string
- When every line was answered.
-
data.id
string, required
- The record's id.
-
data.line_count
integer, required
- How many caregivers' lines the submission has.
-
data.lines
array of object, required
-
data.lines[].caregiver_id
string
- The caregiver the line pays.
-
data.lines[].error_code
string
- ADP's code, or HomeCareBilling's when it never reached ADP.
-
data.lines[].error_message
string
- Why the line was refused.
-
data.lines[].id
string, required
- The record's id.
-
data.lines[].label
string, required
- What Payroll exports shows for the line.
-
data.lines[].status
string, required
- pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file.
-
data.message
string
- With unchanged: what Payroll exports shows.
-
data.payroll_export_id
string, required
- The payroll export sent.
-
data.sent_at
string
- When posting began.
-
data.status
string, required
- queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it.
-
data.unchanged
boolean
- Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.attempt |
integer |
yes |
1 for the first send of the export, one more per resend. |
| data.confirmed_at |
string |
no |
When every line was answered. |
| data.id |
string |
yes |
The record's id. |
| data.line_count |
integer |
yes |
How many caregivers' lines the submission has. |
| data.lines |
array of object |
yes |
|
| data.lines[].caregiver_id |
string |
no |
The caregiver the line pays. |
| data.lines[].error_code |
string |
no |
ADP's code, or HomeCareBilling's when it never reached ADP. |
| data.lines[].error_message |
string |
no |
Why the line was refused. |
| data.lines[].id |
string |
yes |
The record's id. |
| data.lines[].label |
string |
yes |
What Payroll exports shows for the line. |
| data.lines[].status |
string |
yes |
pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file. |
| data.message |
string |
no |
With unchanged: what Payroll exports shows. |
| data.payroll_export_id |
string |
yes |
The payroll export sent. |
| data.sent_at |
string |
no |
When posting began. |
| data.status |
string |
yes |
queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it. |
| data.unchanged |
boolean |
no |
Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full. |
-
404 Not Found, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll-summary
Read the Payroll Summary of a month or one of its pay periods
US-102.37: each caregiver's hours, rates, pay and cash advance, as the Payroll Summary page computes them, sorted by name and paged; totals are over every row. period is "month" (or absent) for the whole month or a pay period's index (pay_periods lists them, from the agency's pay period frequency); anything else is the whole month, and period_start and period_end say which was read. A cash advance another payroll file holds is in the row's cash_advance_held, worded as the page words it, and is not in cash_advance or the totals.
| Parameter |
In |
Required |
Description |
| year |
query |
yes |
The payroll month's year. |
| month |
query |
yes |
The payroll month, 1 to 12. |
| period |
query |
no |
"month" for the whole month, or a pay period's index (0, 1, ...). |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of the Payroll Summary
object
-
adp_left_out
object
- The 1099 contractors the ADP files leave out over every row of the period, and their hours.
-
adp_left_out.count
integer
- How many contractors.
-
adp_left_out.hours
string
- Their hours, all regular.
-
data
array of PayrollSummaryRow, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
pay_periods
array of object, required
- The month's pay periods, from the agency's pay period frequency.
-
pay_periods[].index
integer
- The period's index, the period parameter that reads it.
-
pay_periods[].period_end
string
-
pay_periods[].period_start
string
-
period_end
string, required
- The last day read.
-
period_start
string, required
- The first day read.
-
total
integer, required
- Every matching row.
-
totals
object, required
- Over every row of the period, not this page; a row with no pay counts 0 in total_pay.
-
totals.attendant_hours
string
-
totals.cash_advance
string
-
totals.daily_overtime_hours
string
-
totals.overtime_hours
string
-
totals.regular_hours
string
-
totals.total_pay
string
-
totals.travel_hours
string
-
warnings
array of string, required
- The page's attendant classification warnings.
| Field |
Type |
Required |
Description |
| adp_left_out |
object |
no |
The 1099 contractors the ADP files leave out over every row of the period, and their hours. |
| adp_left_out.count |
integer |
no |
How many contractors. |
| adp_left_out.hours |
string |
no |
Their hours, all regular. |
| data |
array of PayrollSummaryRow |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| pay_periods |
array of object |
yes |
The month's pay periods, from the agency's pay period frequency. |
| pay_periods[].index |
integer |
no |
The period's index, the period parameter that reads it. |
| pay_periods[].period_end |
string |
no |
|
| pay_periods[].period_start |
string |
no |
|
| period_end |
string |
yes |
The last day read. |
| period_start |
string |
yes |
The first day read. |
| total |
integer |
yes |
Every matching row. |
| totals |
object |
yes |
Over every row of the period, not this page; a row with no pay counts 0 in total_pay. |
| totals.attendant_hours |
string |
no |
|
| totals.cash_advance |
string |
no |
|
| totals.daily_overtime_hours |
string |
no |
|
| totals.overtime_hours |
string |
no |
|
| totals.regular_hours |
string |
no |
|
| totals.total_pay |
string |
no |
|
| totals.travel_hours |
string |
no |
|
| warnings |
array of string |
yes |
The page's attendant classification warnings. |
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll/connection
Read the ADP payroll connection
As Settings > Payroll shows it: which ADP the agency runs, how payroll reaches it, the methods offered, the file settings, and whether each secret is set (never its value). An agency with no connection yet gets one, sent as a file to an unknown ADP. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the ADP payroll integration is off for the agency.
-
200 The connection
object
-
data
object, required
-
data.certificate_expires_at
string, required
- When the ADP API certificate expires; null when there is none (own_api only).
-
data.enabled
boolean, required
- Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch).
-
data.health
object, required
-
data.health.certificate_expires_at
string, required
- When the ADP API certificate expires.
-
data.health.consecutive_failures
integer, required
- Failures since the last success.
-
data.health.last_failure_at
string, required
- The last failed one.
-
data.health.last_success_at
string, required
- The last successful token request or call to ADP.
-
data.health.message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
data.health.paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
data.health.status
string, required
- The connection's state.
-
data.health.status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
-
data.method
string, required
- How payroll reaches ADP.
-
data.methods_offered
array of string, required
- The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on.
-
data.notice
string, required
- On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null.
-
data.product
string, required
- Which ADP the agency runs: run, wfn or unknown.
-
data.secrets_set
object, required
-
data.secrets_set.certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
data.secrets_set.client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
data.secrets_set.client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
data.secrets_set.private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
data.secrets_set.sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
-
data.settings
object, required
-
data.settings.allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
data.settings.employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
data.settings.mark_exported_on
string, required
- When a sent export is marked exported.
-
data.settings.rate_mode
string, required
- How API methods send a pay rate.
-
data.settings.rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
data.settings.run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
data.settings.run_file_version
string, required
- The RUN Time Sheet Import file version.
-
data.settings.send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
data.settings.sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
data.settings.sftp_host
string, required
- The SFTP drop's host; null when unset.
-
data.settings.sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
data.settings.sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
data.settings.sftp_user
string, required
- The SFTP drop's user; null when unset.
-
data.sftp_key_fingerprint
string, required
- The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered.
-
data.status
string, required
- The connection's state.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.certificate_expires_at |
string |
yes |
When the ADP API certificate expires; null when there is none (own_api only). |
| data.enabled |
boolean |
yes |
Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch). |
| data.health |
object |
yes |
|
| data.health.certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| data.health.consecutive_failures |
integer |
yes |
Failures since the last success. |
| data.health.last_failure_at |
string |
yes |
The last failed one. |
| data.health.last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| data.health.message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| data.health.paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| data.health.status |
string |
yes |
The connection's state. |
| data.health.status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
| data.method |
string |
yes |
How payroll reaches ADP. |
| data.methods_offered |
array of string |
yes |
The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on. |
| data.notice |
string |
yes |
On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null. |
| data.product |
string |
yes |
Which ADP the agency runs: run, wfn or unknown. |
| data.secrets_set |
object |
yes |
|
| data.secrets_set.certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| data.secrets_set.client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| data.secrets_set.client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| data.secrets_set.private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| data.secrets_set.sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
| data.settings |
object |
yes |
|
| data.settings.allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| data.settings.employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| data.settings.mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| data.settings.rate_mode |
string |
yes |
How API methods send a pay rate. |
| data.settings.rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| data.settings.run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| data.settings.run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| data.settings.send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| data.settings.sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| data.settings.sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| data.settings.sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| data.settings.sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| data.settings.sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
| data.sftp_key_fingerprint |
string |
yes |
The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered. |
| data.status |
string |
yes |
The connection's state. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/payroll/connection
Change the ADP payroll connection
As Settings > Payroll's Save and switch do, through the same checks; send only what changes. A RUN company code that is not 1 to 10 letters and numbers answers 422 naming run_company_code; a method not offered for the product stores file, and notice says so. A body turning enabled on is taken while the integration is off for the agency, when the platform and its plan allow it. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the ADP payroll integration is off for the agency.
Request body (required)
application/json
object
What to change
-
allow_hire_push
boolean
- RUN: let HomeCareBilling start new hires in RUN (Add to ADP on ADP workers), which sends the caregiver's SSN. Off by default.
-
employee_id_template
string
- payroll_assigned (ADP's Employee ID, the default) or time_clock (the Time Clock ID).
-
enabled
boolean
- Turn the ADP payroll integration on or off for the agency. Off keeps the connection, its settings and earning codes.
-
mark_exported_on
string
- API methods: all_accepted (the default) marks the export exported when ADP accepts every line; manual leaves it to Mark Downloaded.
-
method
string
- How payroll reaches ADP; one of methods_offered. Any other is stored as file, with notice saying so.
-
product
string
- Which ADP the agency runs: run (signs in at runpayroll.adp.com), wfn (workforcenow.adp.com) or unknown.
-
run_company_code
string
- RUN's company code or IID, 1 to 10 letters and numbers; null or blank clears it.
-
run_file_version
string
- The RUN Time Sheet Import file version.
-
send_contractors
boolean
- Send 1099 contractors' hours to ADP too.
| Field |
Type |
Required |
Description |
| allow_hire_push |
boolean |
no |
RUN: let HomeCareBilling start new hires in RUN (Add to ADP on ADP workers), which sends the caregiver's SSN. Off by default. |
| employee_id_template |
string |
no |
payroll_assigned (ADP's Employee ID, the default) or time_clock (the Time Clock ID). |
| enabled |
boolean |
no |
Turn the ADP payroll integration on or off for the agency. Off keeps the connection, its settings and earning codes. |
| mark_exported_on |
string |
no |
API methods: all_accepted (the default) marks the export exported when ADP accepts every line; manual leaves it to Mark Downloaded. |
| method |
string |
no |
How payroll reaches ADP; one of methods_offered. Any other is stored as file, with notice saying so. |
| product |
string |
no |
Which ADP the agency runs: run (signs in at runpayroll.adp.com), wfn (workforcenow.adp.com) or unknown. |
| run_company_code |
string |
no |
RUN's company code or IID, 1 to 10 letters and numbers; null or blank clears it. |
| run_file_version |
string |
no |
The RUN Time Sheet Import file version. |
| send_contractors |
boolean |
no |
Send 1099 contractors' hours to ADP too. |
-
200 The connection as saved
object
-
data
object, required
-
data.certificate_expires_at
string, required
- When the ADP API certificate expires; null when there is none (own_api only).
-
data.enabled
boolean, required
- Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch).
-
data.health
object, required
-
data.health.certificate_expires_at
string, required
- When the ADP API certificate expires.
-
data.health.consecutive_failures
integer, required
- Failures since the last success.
-
data.health.last_failure_at
string, required
- The last failed one.
-
data.health.last_success_at
string, required
- The last successful token request or call to ADP.
-
data.health.message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
data.health.paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
data.health.status
string, required
- The connection's state.
-
data.health.status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
-
data.method
string, required
- How payroll reaches ADP.
-
data.methods_offered
array of string, required
- The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on.
-
data.notice
string, required
- On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null.
-
data.product
string, required
- Which ADP the agency runs: run, wfn or unknown.
-
data.secrets_set
object, required
-
data.secrets_set.certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
data.secrets_set.client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
data.secrets_set.client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
data.secrets_set.private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
data.secrets_set.sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
-
data.settings
object, required
-
data.settings.allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
data.settings.employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
data.settings.mark_exported_on
string, required
- When a sent export is marked exported.
-
data.settings.rate_mode
string, required
- How API methods send a pay rate.
-
data.settings.rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
data.settings.run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
data.settings.run_file_version
string, required
- The RUN Time Sheet Import file version.
-
data.settings.send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
data.settings.sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
data.settings.sftp_host
string, required
- The SFTP drop's host; null when unset.
-
data.settings.sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
data.settings.sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
data.settings.sftp_user
string, required
- The SFTP drop's user; null when unset.
-
data.sftp_key_fingerprint
string, required
- The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered.
-
data.status
string, required
- The connection's state.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.certificate_expires_at |
string |
yes |
When the ADP API certificate expires; null when there is none (own_api only). |
| data.enabled |
boolean |
yes |
Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch). |
| data.health |
object |
yes |
|
| data.health.certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| data.health.consecutive_failures |
integer |
yes |
Failures since the last success. |
| data.health.last_failure_at |
string |
yes |
The last failed one. |
| data.health.last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| data.health.message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| data.health.paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| data.health.status |
string |
yes |
The connection's state. |
| data.health.status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
| data.method |
string |
yes |
How payroll reaches ADP. |
| data.methods_offered |
array of string |
yes |
The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on. |
| data.notice |
string |
yes |
On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null. |
| data.product |
string |
yes |
Which ADP the agency runs: run, wfn or unknown. |
| data.secrets_set |
object |
yes |
|
| data.secrets_set.certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| data.secrets_set.client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| data.secrets_set.client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| data.secrets_set.private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| data.secrets_set.sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
| data.settings |
object |
yes |
|
| data.settings.allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| data.settings.employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| data.settings.mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| data.settings.rate_mode |
string |
yes |
How API methods send a pay rate. |
| data.settings.rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| data.settings.run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| data.settings.run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| data.settings.send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| data.settings.sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| data.settings.sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| data.settings.sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| data.settings.sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| data.settings.sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
| data.sftp_key_fingerprint |
string |
yes |
The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered. |
| data.status |
string |
yes |
The connection's state. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll/connection/connect-code
Get an ADP Marketplace connect code
As Settings > Payroll's Connect in ADP Marketplace does: a new single-use code to paste into the ADP Marketplace checkout form when buying HomeCareBilling's connector, and when it expires (7 days). A new code replaces the old one, and the connection waits for its ADP Marketplace order. The code is answered once and never stored. Issued only where the tab offers one: 409 marketplace_not_offered unless the connection's ADP product is RUN and HomeCareBilling's ADP Marketplace listing is set; 409 already_connected while the connection is connected through ADP Marketplace, waiting for its ADP administrator's consent, or needs attention (a new code would stop its sending); nothing changes either way. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while connecting through ADP Marketplace is off for the agency.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
-
201 The code
object
-
data
object, required
-
data.connect_code
string, required
- The single-use code to paste into the ADP Marketplace checkout form. Answered only here, never stored or shown again; a new code replaces the old.
-
data.expires_at
string, required
- When the code stops working, 7 days after it was made.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.connect_code |
string |
yes |
The single-use code to paste into the ADP Marketplace checkout form. Answered only here, never stored or shown again; a new code replaces the old. |
| data.expires_at |
string |
yes |
When the code stops working, 7 days after it was made. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes already_connected, marketplace_not_offered, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PUT /api/v1/payroll/connection/credentials
Save the ADP API Central credentials
As Settings > Payroll's credentials do: the client ID and secret API Central issued and the certificate it signed for the request from POST /payroll/connection/csr; send only what changes. A certificate that is not one, fits neither HomeCareBilling's request nor its current key, or has expired answers 422 invalid_certificate with the tab's sentence, and nothing is saved. Answers the connection, never a secret. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while sending with the agency's own API credentials is off for it.
Request body (required)
application/json
object
What API Central issued
-
certificate_pem
string
- The certificate API Central signed for the request from POST /payroll/connection/csr, PEM; absent or blank keeps the saved one.
-
client_id
string
- The API Central project's client ID; absent or blank keeps the saved one.
-
client_secret
string
- The API Central project's client secret; absent or blank keeps the saved one. Never answered.
| Field |
Type |
Required |
Description |
| certificate_pem |
string |
no |
The certificate API Central signed for the request from POST /payroll/connection/csr, PEM; absent or blank keeps the saved one. |
| client_id |
string |
no |
The API Central project's client ID; absent or blank keeps the saved one. |
| client_secret |
string |
no |
The API Central project's client secret; absent or blank keeps the saved one. Never answered. |
-
200 The connection as saved
object
-
data
object, required
-
data.certificate_expires_at
string, required
- When the ADP API certificate expires; null when there is none (own_api only).
-
data.enabled
boolean, required
- Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch).
-
data.health
object, required
-
data.health.certificate_expires_at
string, required
- When the ADP API certificate expires.
-
data.health.consecutive_failures
integer, required
- Failures since the last success.
-
data.health.last_failure_at
string, required
- The last failed one.
-
data.health.last_success_at
string, required
- The last successful token request or call to ADP.
-
data.health.message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
data.health.paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
data.health.status
string, required
- The connection's state.
-
data.health.status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
-
data.method
string, required
- How payroll reaches ADP.
-
data.methods_offered
array of string, required
- The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on.
-
data.notice
string, required
- On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null.
-
data.product
string, required
- Which ADP the agency runs: run, wfn or unknown.
-
data.secrets_set
object, required
-
data.secrets_set.certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
data.secrets_set.client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
data.secrets_set.client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
data.secrets_set.private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
data.secrets_set.sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
-
data.settings
object, required
-
data.settings.allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
data.settings.employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
data.settings.mark_exported_on
string, required
- When a sent export is marked exported.
-
data.settings.rate_mode
string, required
- How API methods send a pay rate.
-
data.settings.rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
data.settings.run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
data.settings.run_file_version
string, required
- The RUN Time Sheet Import file version.
-
data.settings.send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
data.settings.sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
data.settings.sftp_host
string, required
- The SFTP drop's host; null when unset.
-
data.settings.sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
data.settings.sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
data.settings.sftp_user
string, required
- The SFTP drop's user; null when unset.
-
data.sftp_key_fingerprint
string, required
- The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered.
-
data.status
string, required
- The connection's state.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.certificate_expires_at |
string |
yes |
When the ADP API certificate expires; null when there is none (own_api only). |
| data.enabled |
boolean |
yes |
Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch). |
| data.health |
object |
yes |
|
| data.health.certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| data.health.consecutive_failures |
integer |
yes |
Failures since the last success. |
| data.health.last_failure_at |
string |
yes |
The last failed one. |
| data.health.last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| data.health.message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| data.health.paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| data.health.status |
string |
yes |
The connection's state. |
| data.health.status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
| data.method |
string |
yes |
How payroll reaches ADP. |
| data.methods_offered |
array of string |
yes |
The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on. |
| data.notice |
string |
yes |
On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null. |
| data.product |
string |
yes |
Which ADP the agency runs: run, wfn or unknown. |
| data.secrets_set |
object |
yes |
|
| data.secrets_set.certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| data.secrets_set.client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| data.secrets_set.client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| data.secrets_set.private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| data.secrets_set.sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
| data.settings |
object |
yes |
|
| data.settings.allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| data.settings.employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| data.settings.mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| data.settings.rate_mode |
string |
yes |
How API methods send a pay rate. |
| data.settings.rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| data.settings.run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| data.settings.run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| data.settings.send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| data.settings.sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| data.settings.sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| data.settings.sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| data.settings.sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| data.settings.sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
| data.sftp_key_fingerprint |
string |
yes |
The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered. |
| data.status |
string |
yes |
The connection's state. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
422 Code invalid_certificate: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll/connection/csr
Make the ADP API Central certificate request
As Settings > Payroll's Create certificate request does: makes a new key pair, keeps its private key in HomeCareBilling, and answers the request to give API Central to sign. A live connection keeps its current key until the certificate signed for this request is saved. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while sending with the agency's own API credentials is off for it.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
-
201 The request
object
-
data
object, required
-
data.csr_pem
string, required
- The certificate request to give API Central, PEM. HomeCareBilling keeps its private key; no answer carries it.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.csr_pem |
string |
yes |
The certificate request to give API Central, PEM. HomeCareBilling keeps its private key; no answer carries it. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PUT /api/v1/payroll/connection/sftp
Save the ADP SFTP drop's settings and key
As Settings > Payroll's SFTP form does: the host, port, user and folder ADP gave the agency for its Automated Paydata Integration, and the private key file; send only what changes. A key that is not an OpenSSH or PEM private key without a passphrase answers 422 invalid_private_key with the tab's sentence, a port that is not a whole number from 1 to 65535 answers 422 invalid_port, and nothing is saved. A new host or port forgets the trusted host key. Answers the connection: the key only as secrets_set.sftp_private_key and sftp_key_fingerprint, never its value. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the SFTP drop is off for the agency.
Request body (required)
application/json
object
The SFTP drop's settings
-
folder
string
- The folder ADP picks paydata files up from; absent, blank or null keeps the saved one.
-
host
string
- The SFTP server ADP gave the agency, a host name; absent, blank or null keeps the saved one. A new host trusts the next Test connection's host key.
-
port
integer | string
- The SFTP server's port, 1 to 65535; absent or null keeps the saved one, an empty string clears it, and none saved connects on 22. A new port trusts the next Test connection's host key.
-
private_key
string
- The private key file ADP gave the agency (OpenSSH or PEM, no passphrase), as text; absent, blank or null keeps the saved one. Never answered.
-
user
string
- The SFTP user ADP gave the agency; absent, blank or null keeps the saved one.
| Field |
Type |
Required |
Description |
| folder |
string |
no |
The folder ADP picks paydata files up from; absent, blank or null keeps the saved one. |
| host |
string |
no |
The SFTP server ADP gave the agency, a host name; absent, blank or null keeps the saved one. A new host trusts the next Test connection's host key. |
| port |
integer | string |
no |
The SFTP server's port, 1 to 65535; absent or null keeps the saved one, an empty string clears it, and none saved connects on 22. A new port trusts the next Test connection's host key. |
| private_key |
string |
no |
The private key file ADP gave the agency (OpenSSH or PEM, no passphrase), as text; absent, blank or null keeps the saved one. Never answered. |
| user |
string |
no |
The SFTP user ADP gave the agency; absent, blank or null keeps the saved one. |
-
200 The connection as saved
object
-
data
object, required
-
data.certificate_expires_at
string, required
- When the ADP API certificate expires; null when there is none (own_api only).
-
data.enabled
boolean, required
- Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch).
-
data.health
object, required
-
data.health.certificate_expires_at
string, required
- When the ADP API certificate expires.
-
data.health.consecutive_failures
integer, required
- Failures since the last success.
-
data.health.last_failure_at
string, required
- The last failed one.
-
data.health.last_success_at
string, required
- The last successful token request or call to ADP.
-
data.health.message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
data.health.paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
data.health.status
string, required
- The connection's state.
-
data.health.status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
-
data.method
string, required
- How payroll reaches ADP.
-
data.methods_offered
array of string, required
- The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on.
-
data.notice
string, required
- On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null.
-
data.product
string, required
- Which ADP the agency runs: run, wfn or unknown.
-
data.secrets_set
object, required
-
data.secrets_set.certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
data.secrets_set.client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
data.secrets_set.client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
data.secrets_set.private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
data.secrets_set.sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
-
data.settings
object, required
-
data.settings.allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
data.settings.employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
data.settings.mark_exported_on
string, required
- When a sent export is marked exported.
-
data.settings.rate_mode
string, required
- How API methods send a pay rate.
-
data.settings.rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
data.settings.run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
data.settings.run_file_version
string, required
- The RUN Time Sheet Import file version.
-
data.settings.send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
data.settings.sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
data.settings.sftp_host
string, required
- The SFTP drop's host; null when unset.
-
data.settings.sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
data.settings.sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
data.settings.sftp_user
string, required
- The SFTP drop's user; null when unset.
-
data.sftp_key_fingerprint
string, required
- The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered.
-
data.status
string, required
- The connection's state.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.certificate_expires_at |
string |
yes |
When the ADP API certificate expires; null when there is none (own_api only). |
| data.enabled |
boolean |
yes |
Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch). |
| data.health |
object |
yes |
|
| data.health.certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| data.health.consecutive_failures |
integer |
yes |
Failures since the last success. |
| data.health.last_failure_at |
string |
yes |
The last failed one. |
| data.health.last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| data.health.message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| data.health.paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| data.health.status |
string |
yes |
The connection's state. |
| data.health.status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
| data.method |
string |
yes |
How payroll reaches ADP. |
| data.methods_offered |
array of string |
yes |
The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on. |
| data.notice |
string |
yes |
On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null. |
| data.product |
string |
yes |
Which ADP the agency runs: run, wfn or unknown. |
| data.secrets_set |
object |
yes |
|
| data.secrets_set.certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| data.secrets_set.client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| data.secrets_set.client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| data.secrets_set.private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| data.secrets_set.sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
| data.settings |
object |
yes |
|
| data.settings.allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| data.settings.employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| data.settings.mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| data.settings.rate_mode |
string |
yes |
How API methods send a pay rate. |
| data.settings.rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| data.settings.run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| data.settings.run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| data.settings.send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| data.settings.sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| data.settings.sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| data.settings.sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| data.settings.sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| data.settings.sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
| data.sftp_key_fingerprint |
string |
yes |
The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered. |
| data.status |
string |
yes |
The connection's state. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
422 Codes invalid_port, invalid_private_key: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll/connection/test
Test the ADP connection
As Settings > Payroll's Test connection does, for the connection's method. With the agency's own API Central credentials: one read at ADP with the saved credentials, recording the answer on the connection (active on success, needs_attention with the reason on a failure); connected false with the tab's sentence when ADP refused, did not answer, or a credential is missing. With the SFTP drop: signs in with the saved key and lists the folder, answering "Connected. {folder} holds {count} files." or which step failed; the first success trusts the server's host key; nothing is written to the server. 409 not_api_connection, recording nothing, while the connection sends payroll by file. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the connection's method is off for the agency.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
-
200 What ADP answered
object
-
data
object, required
-
data.connected
boolean, required
- Whether ADP answered with the saved credentials, or the SFTP drop signed in and listed its folder.
-
data.message
string, required
- The sentence Settings > Payroll's Test connection shows.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.connected |
boolean |
yes |
Whether ADP answered with the saved credentials, or the SFTP drop signed in and listed its folder. |
| data.message |
string |
yes |
The sentence Settings > Payroll's Test connection shows. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll/earning-mappings
List the ADP earning mappings
As /payroll/earnings shows them: all twelve slots, every hour kind for employees then contractors, each the saved code or else HomeCareBilling's proposal (saved false). A fixed set, so not paged. Credentials whose member holds payroll.view or agency_settings.view only (403 forbidden otherwise); 409 payroll_integration_off while the ADP payroll integration is off for the agency.
-
200 The slots
object
-
data
array of object, required
-
data[].earning_code
string, required
- The ADP earning code carrying these hours; null when the slot is unmapped.
-
data[].file_column
integer, required
- The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column.
-
data[].hour_kind
string, required
- The kind of hours.
-
data[].rate_code
string, required
- The ADP rate code, or null.
-
data[].saved
boolean, required
- true for a saved code; false for HomeCareBilling's proposal, used until one is saved.
-
data[].source
string, required
- admin when a member saved it, adp_default when read from ADP; null on a proposal.
-
data[].worker_type
string, required
- Employees or contractors.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].earning_code |
string |
yes |
The ADP earning code carrying these hours; null when the slot is unmapped. |
| data[].file_column |
integer |
yes |
The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column. |
| data[].hour_kind |
string |
yes |
The kind of hours. |
| data[].rate_code |
string |
yes |
The ADP rate code, or null. |
| data[].saved |
boolean |
yes |
true for a saved code; false for HomeCareBilling's proposal, used until one is saved. |
| data[].source |
string |
yes |
admin when a member saved it, adp_default when read from ADP; null on a proposal. |
| data[].worker_type |
string |
yes |
Employees or contractors. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PUT /api/v1/payroll/earning-mappings
Save one ADP earning mapping
As a row's Save on /payroll/earnings does: sets the slot hour_kind and worker_type name, or clears it with a null or blank earning_code. A refused field answers 422 naming it. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the ADP payroll integration is off for the agency.
Request body (required)
application/json
object
The slot and its codes
-
earning_code
string, required
- The ADP earning code, 1 to 10 letters or digits as on your ADP Earnings Codes report (upcased and trimmed); null or blank clears the slot back to its proposal.
-
file_column
integer
- The Workforce Now "Hours N" pair, 3 to 50, not used by another slot. Left out keeps it; null clears it.
-
hour_kind
string, required
- The kind of hours to map.
-
rate_code
string
- On RUN, BASE, RATE_2 to RATE_5 or HRLY4SLRY1; elsewhere up to 10 letters, digits or underscores. Left out keeps it; null clears it.
-
worker_type
string, required
- employee or contractor.
| Field |
Type |
Required |
Description |
| earning_code |
string |
yes |
The ADP earning code, 1 to 10 letters or digits as on your ADP Earnings Codes report (upcased and trimmed); null or blank clears the slot back to its proposal. |
| file_column |
integer |
no |
The Workforce Now "Hours N" pair, 3 to 50, not used by another slot. Left out keeps it; null clears it. |
| hour_kind |
string |
yes |
The kind of hours to map. |
| rate_code |
string |
no |
On RUN, BASE, RATE_2 to RATE_5 or HRLY4SLRY1; elsewhere up to 10 letters, digits or underscores. Left out keeps it; null clears it. |
| worker_type |
string |
yes |
employee or contractor. |
-
200 The slot as saved
object
-
data
object, required
-
data.earning_code
string, required
- The ADP earning code carrying these hours; null when the slot is unmapped.
-
data.file_column
integer, required
- The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column.
-
data.hour_kind
string, required
- The kind of hours.
-
data.rate_code
string, required
- The ADP rate code, or null.
-
data.saved
boolean, required
- true for a saved code; false for HomeCareBilling's proposal, used until one is saved.
-
data.source
string, required
- admin when a member saved it, adp_default when read from ADP; null on a proposal.
-
data.worker_type
string, required
- Employees or contractors.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.earning_code |
string |
yes |
The ADP earning code carrying these hours; null when the slot is unmapped. |
| data.file_column |
integer |
yes |
The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column. |
| data.hour_kind |
string |
yes |
The kind of hours. |
| data.rate_code |
string |
yes |
The ADP rate code, or null. |
| data.saved |
boolean |
yes |
true for a saved code; false for HomeCareBilling's proposal, used until one is saved. |
| data.source |
string |
yes |
admin when a member saved it, adp_default when read from ADP; null on a proposal. |
| data.worker_type |
string |
yes |
Employees or contractors. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code payroll_integration_off: Conflict, as the operation's description says.
Error
-
422 Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll/earning-mappings/sync
Sync ADP's earning codes now
As /payroll/earnings' Sync from ADP does: queues a read of the agency's ADP earning codes, rate codes and pay cycles, which proposes the regular and overtime mappings ADP holds and lets Payroll exports > Check compare exports with them. One sync per agency waits at a time. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
-
200 Queued
object
-
data
object, required
-
data.queued
boolean, required
- True: the sync is queued, or already waiting to run.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.queued |
boolean |
yes |
True: the sync is queued, or already waiting to run. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll/w4-changes
List the caregivers whose W-4 change payroll has not been sent
US-102.37: the Payroll Summary's W-4 panel, longest waiting first: each caregiver whose filing status or dependents changed since POST /caregivers/{id}/w4-sent-to-payroll last cleared it, with the values now on file.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of W-4 changes
object
-
data
array of W4Change, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of W4Change |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
default An error, in the shared envelope.
Error
GET /api/v1/payroll/workers
List the ADP workers and their caregivers
As /payroll/workers lists them, by ADP name: each ADP worker of the agency's API connection with the caregiver it is linked to, how, and the row's warning. filter=no_adp_worker lists instead the caregivers no ADP worker is linked to. Credentials whose member holds payroll.view or agency_settings.view only (403 forbidden otherwise); 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| filter |
query |
no |
all (default), needs_person (no caregiver yet), linked, or no_adp_worker (caregivers no ADP worker is linked to). |
| limit |
query |
no |
Rows per page (default 50, at most 100; a larger value is served as 100). |
| offset |
query |
no |
Rows to skip. |
-
200 A page of workers
object
-
data
array of object, required
-
data[].adp_hire_date
string
- The hire date ADP holds.
-
data[].adp_name
string
- The worker's name as ADP spells it.
-
data[].adp_status
string, required
- The worker's status in ADP.
-
data[].adp_status_date
string
- When that status began, in ADP.
-
data[].adp_worker_id
string
- ADP's employee or file number for the worker.
-
data[].associate_oid
string
- ADP's id for the worker.
-
data[].caregiver_id
string, required
- The paired caregiver; null while the worker needs a person.
-
data[].caregiver_name
string
- The paired caregiver's name.
-
data[].id
string, required
- The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker.
-
data[].linked_at
string
- When it was linked.
-
data[].linked_by_name
string
- Who linked it, for a manual link.
-
data[].match_method
string
- How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP.
-
data[].missing_from_adp
boolean, required
- True when ADP's last complete worker list no longer held this worker; it then reads terminated.
-
data[].warning
string
- What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].adp_hire_date |
string |
no |
The hire date ADP holds. |
| data[].adp_name |
string |
no |
The worker's name as ADP spells it. |
| data[].adp_status |
string |
yes |
The worker's status in ADP. |
| data[].adp_status_date |
string |
no |
When that status began, in ADP. |
| data[].adp_worker_id |
string |
no |
ADP's employee or file number for the worker. |
| data[].associate_oid |
string |
no |
ADP's id for the worker. |
| data[].caregiver_id |
string |
yes |
The paired caregiver; null while the worker needs a person. |
| data[].caregiver_name |
string |
no |
The paired caregiver's name. |
| data[].id |
string |
yes |
The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker. |
| data[].linked_at |
string |
no |
When it was linked. |
| data[].linked_by_name |
string |
no |
Who linked it, for a manual link. |
| data[].match_method |
string |
no |
How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP. |
| data[].missing_from_adp |
boolean |
yes |
True when ADP's last complete worker list no longer held this worker; it then reads terminated. |
| data[].warning |
string |
no |
What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
DELETE /api/v1/payroll/workers/{id}/link
Unlink an ADP worker
As a /payroll/workers row's Unlink does: the worker needs a person again, and no sync links it on its own. The caregiver's ADP number is left as it is. A worker with no caregiver answers itself. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The row as unlinked
object
-
data
object, required
-
data.adp_hire_date
string
- The hire date ADP holds.
-
data.adp_name
string
- The worker's name as ADP spells it.
-
data.adp_status
string, required
- The worker's status in ADP.
-
data.adp_status_date
string
- When that status began, in ADP.
-
data.adp_worker_id
string
- ADP's employee or file number for the worker.
-
data.associate_oid
string
- ADP's id for the worker.
-
data.caregiver_id
string, required
- The paired caregiver; null while the worker needs a person.
-
data.caregiver_name
string
- The paired caregiver's name.
-
data.id
string, required
- The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker.
-
data.linked_at
string
- When it was linked.
-
data.linked_by_name
string
- Who linked it, for a manual link.
-
data.match_method
string
- How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP.
-
data.missing_from_adp
boolean, required
- True when ADP's last complete worker list no longer held this worker; it then reads terminated.
-
data.warning
string
- What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.adp_hire_date |
string |
no |
The hire date ADP holds. |
| data.adp_name |
string |
no |
The worker's name as ADP spells it. |
| data.adp_status |
string |
yes |
The worker's status in ADP. |
| data.adp_status_date |
string |
no |
When that status began, in ADP. |
| data.adp_worker_id |
string |
no |
ADP's employee or file number for the worker. |
| data.associate_oid |
string |
no |
ADP's id for the worker. |
| data.caregiver_id |
string |
yes |
The paired caregiver; null while the worker needs a person. |
| data.caregiver_name |
string |
no |
The paired caregiver's name. |
| data.id |
string |
yes |
The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker. |
| data.linked_at |
string |
no |
When it was linked. |
| data.linked_by_name |
string |
no |
Who linked it, for a manual link. |
| data.match_method |
string |
no |
How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP. |
| data.missing_from_adp |
boolean |
yes |
True when ADP's last complete worker list no longer held this worker; it then reads terminated. |
| data.warning |
string |
no |
What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/payroll/workers/{id}/link
Link an ADP worker to a caregiver
As a /payroll/workers row's Link does: pairs the worker with the caregiver, and writes the worker's ADP number to the caregiver when the caregiver has none and no other caregiver holds it. 409 already_linked when the worker already has a caregiver; 409 caregiver_already_linked when the caregiver is on another worker; 404 for a worker or caregiver not the agency's. Credentials whose member holds agency_settings.manage only (403 forbidden otherwise); 409 payroll_integration_off while the agency's ADP API connection is off; 409 not_api_connection while it sends payroll by file or SFTP.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The caregiver
-
caregiver_id
string, required
- The caregiver this ADP worker is.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver this ADP worker is. |
-
200 The row as linked
object
-
data
object, required
-
data.adp_hire_date
string
- The hire date ADP holds.
-
data.adp_name
string
- The worker's name as ADP spells it.
-
data.adp_status
string, required
- The worker's status in ADP.
-
data.adp_status_date
string
- When that status began, in ADP.
-
data.adp_worker_id
string
- ADP's employee or file number for the worker.
-
data.associate_oid
string
- ADP's id for the worker.
-
data.caregiver_id
string, required
- The paired caregiver; null while the worker needs a person.
-
data.caregiver_name
string
- The paired caregiver's name.
-
data.id
string, required
- The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker.
-
data.linked_at
string
- When it was linked.
-
data.linked_by_name
string
- Who linked it, for a manual link.
-
data.match_method
string
- How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP.
-
data.missing_from_adp
boolean, required
- True when ADP's last complete worker list no longer held this worker; it then reads terminated.
-
data.warning
string
- What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.adp_hire_date |
string |
no |
The hire date ADP holds. |
| data.adp_name |
string |
no |
The worker's name as ADP spells it. |
| data.adp_status |
string |
yes |
The worker's status in ADP. |
| data.adp_status_date |
string |
no |
When that status began, in ADP. |
| data.adp_worker_id |
string |
no |
ADP's employee or file number for the worker. |
| data.associate_oid |
string |
no |
ADP's id for the worker. |
| data.caregiver_id |
string |
yes |
The paired caregiver; null while the worker needs a person. |
| data.caregiver_name |
string |
no |
The paired caregiver's name. |
| data.id |
string |
yes |
The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker. |
| data.linked_at |
string |
no |
When it was linked. |
| data.linked_by_name |
string |
no |
Who linked it, for a manual link. |
| data.match_method |
string |
no |
How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP. |
| data.missing_from_adp |
boolean |
yes |
True when ADP's last complete worker list no longer held this worker; it then reads terminated. |
| data.warning |
string |
no |
What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one. |
-
403 Forbidden, as the operation's description says.
Error
-
404 Not Found, as the operation's description says.
Error
-
409 Codes already_linked, caregiver_already_linked, not_api_connection, payroll_integration_off: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/service-rates/import
Import the agency's rates from a CSV file
Reads the file as Service rates > Import reads it (at most 5,000 rows; columns matched by name), with effective_date for its rows (today when absent). A rate cell with more than two places is rounded half-up to cents rather than refused. preview true answers the first rows checked and writes nothing: each row's rate_per_unit as it would be stored (null for a cell that is no rate, refused in errors) and its notes, which name any rounding ("6.9575 rounded to 6.96"); otherwise every new rate is created and duplicates skipped, and the counts answered.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
object
The file
-
csv
string
- The file as CSV text, header row first.
-
csv_base64
string
- Or the file's bytes, base64.
-
effective_date
string
- YYYY-MM-DD, for the file's rows; today when left out.
-
preview
boolean
- Check the rows and write nothing.
| Field |
Type |
Required |
Description |
| csv |
string |
no |
The file as CSV text, header row first. |
| csv_base64 |
string |
no |
Or the file's bytes, base64. |
| effective_date |
string |
no |
YYYY-MM-DD, for the file's rows; today when left out. |
| preview |
boolean |
no |
Check the rows and write nothing. |
-
200 The preview or the import's counts
object
-
data
object, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
-
default An error, in the shared envelope.
Error
PUT /api/v1/service-rates/schedule-source
Choose the fee schedule the agency bills against
use_system_fee_schedule true bills against the system's published schedule, false against the agency's own rates, as the service rates page's switch sets it. Nothing stored is changed; the setting changes which rate is used. Sending the current value changes nothing.
Request body (required)
application/json
object
The choice
-
use_system_fee_schedule
boolean, required
- true bills against the system's schedule, false the agency's own rates.
| Field |
Type |
Required |
Description |
| use_system_fee_schedule |
boolean |
yes |
true bills against the system's schedule, false the agency's own rates. |
-
200 The choice as saved
object
-
data
object, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
-
default An error, in the shared envelope.
Error
DELETE /api/v1/service-rates/{id}
Delete one of the agency's own rates
As the service rates page deletes one. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The rate
object
-
data
object, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/service-rates/{id}/transition
Change a rate from a date
Closes the rate the day before effective_date and opens its successor at rate_per_unit from that day, as the rate list's Change Rate does. Only rate_per_unit and effective_date are read: the successor keeps the rate's code, modifiers and description. A closed rate answers 422 rate_already_closed, before any date is looked at, so a retried transition never opens a second successor. An effective_date that is missing or not YYYY-MM-DD answers 422 missing_effective_date; one not after the current one 422 effective_date_must_be_after_current; either one carries any other refused field's error in details. A rate_per_unit that is not a number, or a start date another rate of the same code and modifiers already has, answers 422 with the field's error in details. Another agency's record answers 404 and nothing is written.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The new rate and its first day
-
effective_date
string, required
- YYYY-MM-DD.
-
rate_per_unit
string | number, required
- The new rate, a decimal, as text (a leading $ is allowed) or a JSON number.
| Field |
Type |
Required |
Description |
| effective_date |
string |
yes |
YYYY-MM-DD. |
| rate_per_unit |
string | number |
yes |
The new rate, a decimal, as text (a leading $ is allowed) or a JSON number. |
-
200 The rate
object
-
data
object, required
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
-
404 Not Found, as the operation's description says.
Error
-
422 Codes effective_date_must_be_after_current, missing_effective_date, rate_already_closed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
Work orders
POST /api/v1/assignments/{id}/work-orders/generate
Generate a month's Work Order from a Plan of Care
Lays out the month's Work Order for this assignment's client and caregiver from the client's Plan of Care and the assignment's schedule, as the Plan of Care page's Generate does. A Work Order already in that slot answers 409 work_order_exists unless overwrite is true, which replaces its days. An assignment with no schedule for the shift answers 422 no_schedule. Warnings never stop the generation.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The month and options
-
lrp
boolean
- Optional: generate the Homemaker Work Order from the client's LRP (legally responsible person) Homemaker plan instead of the regular one, as that plan's page does. Default false.
-
month
integer, required
- The month, 1 to 12.
-
overwrite
boolean
- Optional: replace the days of a Work Order already in the slot. Default false.
-
schedule_pattern
array of integer
- Optional: the weekdays the Work Order runs on, as the Work Order takes them.
-
service_type_override
string
- Optional: generate this service instead of the assignment's own; legacy is one Work Order carrying both.
-
shift_number
integer
- Optional: the shift, 1 to 4; default 1.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| lrp |
boolean |
no |
Optional: generate the Homemaker Work Order from the client's LRP (legally responsible person) Homemaker plan instead of the regular one, as that plan's page does. Default false. |
| month |
integer |
yes |
The month, 1 to 12. |
| overwrite |
boolean |
no |
Optional: replace the days of a Work Order already in the slot. Default false. |
| schedule_pattern |
array of integer |
no |
Optional: the weekdays the Work Order runs on, as the Work Order takes them. |
| service_type_override |
string |
no |
Optional: generate this service instead of the assignment's own; legacy is one Work Order carrying both. |
| shift_number |
integer |
no |
Optional: the shift, 1 to 4; default 1. |
| year |
integer |
yes |
The year. |
-
201 The Work Order and its warnings
object
-
data
WorkOrder, required
-
warnings
array of string, required
- What the generation found; never a refusal.
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
| warnings |
array of string |
yes |
What the generation found; never a refusal. |
-
409 Code work_order_exists: Conflict, as the operation's description says.
Error
-
422 Code no_schedule: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/plans-of-care/{id}/resolve-over-authorization
Trim a month's Work Orders back to a Plan of Care's authorization
For each task the client's Work Orders schedule over the plan in that month, takes visits off the largest contributor first until the total equals the authorization, as the plan page's Resolve does. target, optional, names the Work Order to trim per task (its key or plan task id); a target that cannot absorb the whole overage answers 422 residual_over_authorization and trims nothing. Answers each change; an empty list when nothing was over.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The month and an optional target
-
month
integer, required
- The month, 1 to 12.
-
target
object
- Optional: task key or plan task id => the Work Order id to trim it from.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| month |
integer |
yes |
The month, 1 to 12. |
| target |
object |
no |
Optional: task key or plan task id => the Work Order id to trim it from. |
| year |
integer |
yes |
The year. |
-
200 The trims made
object
-
data
array of object, required
-
data[].caregiver_id
string
- The record's id.
-
data[].from
integer
- Visits a week before the trim.
-
data[].task
string
- The task's key on the plan.
-
data[].task_definition_id
string
- The record's id.
-
data[].task_label
string
- The task as the plan names it.
-
data[].to
integer
- Visits a week after it; 0 means the task was taken off.
-
data[].work_order_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].caregiver_id |
string |
no |
The record's id. |
| data[].from |
integer |
no |
Visits a week before the trim. |
| data[].task |
string |
no |
The task's key on the plan. |
| data[].task_definition_id |
string |
no |
The record's id. |
| data[].task_label |
string |
no |
The task as the plan names it. |
| data[].to |
integer |
no |
Visits a week after it; 0 means the task was taken off. |
| data[].work_order_id |
string |
no |
The record's id. |
-
422 Code residual_over_authorization: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/plans-of-care/{id}/work-orders/distribute
Split a Plan of Care across caregivers for a month
Makes one Work Order per caregiver from the plan, each carrying the visits a week given for it, as /care-plans/:id/generate-work-orders does. frequencies maps each caregiver id to plan task ids (from GET /plans-of-care/{id}) and visits a week; a caregiver whose counts are all 0 gets none. A split over the authorization is saved, with a warning. A plan task id the plan no longer carries answers 409 plan_changed and writes nothing.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The month and the split
-
month
integer, required
- The month, 1 to 12.
-
selections
array of object, required
- One per service and shift being generated.
-
selections[].frequencies
object, required
- caregiver id => plan task id => visits a week. A caregiver whose counts are all 0 gets no Work Order.
-
selections[].service_type
string, required
- The service.
-
selections[].shift_number
integer
- Optional: the shift, 1 to 4; default 1.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| month |
integer |
yes |
The month, 1 to 12. |
| selections |
array of object |
yes |
One per service and shift being generated. |
| selections[].frequencies |
object |
yes |
caregiver id => plan task id => visits a week. A caregiver whose counts are all 0 gets no Work Order. |
| selections[].service_type |
string |
yes |
The service. |
| selections[].shift_number |
integer |
no |
Optional: the shift, 1 to 4; default 1. |
| year |
integer |
yes |
The year. |
-
201 The Work Orders made and the warnings
object
-
data
array of WorkOrder, required
-
services
array of object, required
- Per service the plan authorizes, as the Generate Work Orders page's totals show it: authorized_minutes and task_minutes a week, and rounding, quarter_hour when the tasks come to less than the authorization by under 15 minutes (the calculator rounds them up to the next quarter hour), under when by 15 minutes or more, else null.
-
services[].authorized_minutes
integer, required
-
services[].rounding
string, required
-
services[].service
string, required
-
services[].task_minutes
integer, required
-
shift_plan_work_orders
array of object, required
- The Work Orders the client's Shift Plan made that are in force in the month, each with its shift_id, so a month made here as well as there shows; empty when the client has no Shift Plan. Never a refusal.
-
shift_plan_work_orders[].caregiver
object, required
- The Work Order's caregiver; null when it has none.
-
shift_plan_work_orders[].caregiver.first_name
string
-
shift_plan_work_orders[].caregiver.id
string
- The record's id.
-
shift_plan_work_orders[].caregiver.last_name
string
-
shift_plan_work_orders[].closing_date
string, required
- Its Closing Date; null while it stays open.
-
shift_plan_work_orders[].effective_date
string, required
- Its Effective Date.
-
shift_plan_work_orders[].id
string, required
- The record's id.
-
shift_plan_work_orders[].number
integer, required
- The Work Order's WO #.
-
shift_plan_work_orders[].service
string, required
- The Work Order's service.
-
shift_plan_work_orders[].shift_id
string
- The Shift Plan's shift that made it; only on a Work Order the plan made.
-
warnings
array of object, required
- What the distribution found, each with a code: over_authorized (tasks this split puts over the plan), already_over_authorized (tasks over before it), plan_outside_month (the plan's dates do not reach the month, naming a plan that does), existing_work_orders (caregivers skipped because they already have the month's Work Order, named), not_on_work_orders (plan tasks no Work Order could carry). The Work Orders are made regardless.
-
warnings[].code
string, required
| Field |
Type |
Required |
Description |
| data |
array of WorkOrder |
yes |
|
| services |
array of object |
yes |
Per service the plan authorizes, as the Generate Work Orders page's totals show it: authorized_minutes and task_minutes a week, and rounding, quarter_hour when the tasks come to less than the authorization by under 15 minutes (the calculator rounds them up to the next quarter hour), under when by 15 minutes or more, else null. |
| services[].authorized_minutes |
integer |
yes |
|
| services[].rounding |
string |
yes |
|
| services[].service |
string |
yes |
|
| services[].task_minutes |
integer |
yes |
|
| shift_plan_work_orders |
array of object |
yes |
The Work Orders the client's Shift Plan made that are in force in the month, each with its shift_id, so a month made here as well as there shows; empty when the client has no Shift Plan. Never a refusal. |
| shift_plan_work_orders[].caregiver |
object |
yes |
The Work Order's caregiver; null when it has none. |
| shift_plan_work_orders[].caregiver.first_name |
string |
no |
|
| shift_plan_work_orders[].caregiver.id |
string |
no |
The record's id. |
| shift_plan_work_orders[].caregiver.last_name |
string |
no |
|
| shift_plan_work_orders[].closing_date |
string |
yes |
Its Closing Date; null while it stays open. |
| shift_plan_work_orders[].effective_date |
string |
yes |
Its Effective Date. |
| shift_plan_work_orders[].id |
string |
yes |
The record's id. |
| shift_plan_work_orders[].number |
integer |
yes |
The Work Order's WO #. |
| shift_plan_work_orders[].service |
string |
yes |
The Work Order's service. |
| shift_plan_work_orders[].shift_id |
string |
no |
The Shift Plan's shift that made it; only on a Work Order the plan made. |
| warnings |
array of object |
yes |
What the distribution found, each with a code: over_authorized (tasks this split puts over the plan), already_over_authorized (tasks over before it), plan_outside_month (the plan's dates do not reach the month, naming a plan that does), existing_work_orders (caregivers skipped because they already have the month's Work Order, named), not_on_work_orders (plan tasks no Work Order could carry). The Work Orders are made regardless. |
| warnings[].code |
string |
yes |
|
-
409 Code plan_changed: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/provider-type-templates/{id}/certification
Change a provider type's certification
Saves the English certification its cards print and its translation into the agency's card language, as Settings > Provider Type Templates does. certification_version is the one GET /api/v1/provider-type-modifiers returned: one saved since answers 409 stale_record. The first save on a system default makes the agency's own copy, which answers with its own id. Needs agency_settings.manage (403 forbidden otherwise).
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The wording and the version read
-
certification_text
string
- English; empty for the standard wording.
-
certification_version
string, required
- As GET /api/v1/provider-type-modifiers (find_provider_type_modifiers) returned it.
-
translation
string
- Optional: into the agency's card language.
| Field |
Type |
Required |
Description |
| certification_text |
string |
no |
English; empty for the standard wording. |
| certification_version |
string |
yes |
As GET /api/v1/provider-type-modifiers (find_provider_type_modifiers) returned it. |
| translation |
string |
no |
Optional: into the agency's card language. |
-
200 The certification
object
-
data
object, required
-
data.certification_text
string
-
data.certification_translations
object
-
data.certification_version
string
-
data.code
string
-
data.id
string
- The record's id.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.certification_text |
string |
no |
|
| data.certification_translations |
object |
no |
|
| data.certification_version |
string |
no |
|
| data.code |
string |
no |
|
| data.id |
string |
no |
The record's id. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/work-orders
List work orders
What was ordered for one client, caregiver and month. The agency's work orders in month order, newest month first, archived ones left out. With updated_since the order is change order, for a sync that pages with after_id.
| Parameter |
In |
Required |
Description |
| limit |
query |
no |
Rows per page (default 100, at most 200; a larger value is served as 200). |
| offset |
query |
no |
Rows to skip. |
| status |
query |
no |
Only records with this status. |
| client_id |
query |
no |
Only records of this client. |
| caregiver_id |
query |
no |
Only records of this caregiver. |
| updated_since |
query |
no |
Only records changed at or after this instant (ISO 8601, with an offset), compared to the second. The list is then in change order: updated_at, then id. |
| after_id |
query |
no |
With updated_since, a cursor: send the last record's updated_at as updated_since and its id as after_id to get the next page. Use this, not offset, to sync: an offset skips a record when an earlier one changes between two requests. The sync is at least once: timestamps are whole seconds and set before commit, so a record changed in the cursor's second, or committed late, can fall behind the cursor. Start each sync pass a minute before the newest updated_at you saw, and treat every record returned as current: apply it over what you hold. A record can change twice within one second, and not every change moves lock_version, so the same updated_at and lock_version do not mean the same content. |
| wo_type |
query |
no |
Only Work Orders of this type. |
| expires_within_days |
query |
no |
Only Work Orders whose end date (expires_on) falls within this many days of today, and not closed before today. |
-
200 A page of work orders
object
-
data
array of WorkOrder, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of WorkOrder |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
-
400 Code bad_request: a malformed limit, offset, search, updated_since, after_id or filter, named in the message.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders
Create a work order
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
Request body (required)
application/json
WorkOrderCreate
The work order's fields
-
201 The created work order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
422 Code validation_failed: a field was refused; details names each field and why. Nothing was saved.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/work-orders/{id}
Get a work order
What was ordered for one client, caregiver and month.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The work order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
404 Code not_found: no work order with that id in this agency, including another agency's.
Error
-
default An error, in the shared envelope.
Error
PATCH /api/v1/work-orders/{id}
Update a work order
Sets only the fields sent. lock_version is required: send the value you read, and a record changed since answers 409 stale_record. A completed or archived work order is not edited through the API: any PATCH to one answers 422 not_editable.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
WorkOrderUpdate
The fields to change
-
200 The updated work order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
404 Code not_found: no work order with that id in this agency, including another agency's.
Error
-
409 Code stale_record: the work order changed since the lock_version sent was read, or while this request ran. Nothing was saved; read it again and retry.
Error
-
422 Code validation_failed: a field was refused; details names each field and why. Nothing was saved.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/archive
Archive a Work Order
Archives it, in any status, as the page does. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/change-caregiver
Give a Work Order to another caregiver
As the page's Change caregiver does: from the Effective Date or earlier, a copy for caregiver_id with the same schedule, tasks and Care Instructions takes its place and this Work Order is archived (a month a timesheet or signature froze keeps its row); from a later date, this Work Order closes the day before and the copy starts on from. It needs work_orders.manage (403 forbidden). The same caregiver answers 422 same_caregiver, an archived Work Order 422 work_order_archived, a caregiver not of this agency 422 validation_failed. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record. Answers the new Work Order's first month and the warnings the change found. Saved at once: send an Idempotency-Key so a retry makes no second copy.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The caregiver, the start date and lock_version
-
caregiver_id
string, required
- The caregiver who takes over.
-
from
string, required
- The first day the new caregiver works it, YYYY-MM-DD. On or before the Effective Date the whole Work Order moves and this one is archived; later, this one closes the day before.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver who takes over. |
| from |
string |
yes |
The first day the new caregiver works it, YYYY-MM-DD. On or before the Effective Date the whole Work Order moves and this one is archived; later, this one closes the day before. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
201 The new Work Order
object
-
data
WorkOrder, required
-
warnings
array of object
- What the change found (an overlap, a month kept); never holds it.
-
warnings[].kind
string, required
- What was found.
-
warnings[].message
string, required
- The page's words for it.
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
| warnings |
array of object |
no |
What the change found (an overlap, a month kept); never holds it. |
| warnings[].kind |
string |
yes |
What was found. |
| warnings[].message |
string |
yes |
The page's words for it. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Codes same_caregiver, validation_failed, work_order_archived: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/close-document
Generate a Work Order's close document
Snapshots a completed Work Order's hours, billing and close details. An in-progress one answers 422 not_completed; one that has a close document 422 close_document_exists.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
201 The close document
object
-
data
CloseDocument, required
| Field |
Type |
Required |
Description |
| data |
CloseDocument |
yes |
|
-
422 Codes close_document_exists, not_completed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PUT /api/v1/work-orders/{id}/days/{date}
Mark a date of a Work Order's month worked or not
shaded false marks the date not worked, clearing its visits and marks; true marks it worked again from the plan, as the timesheet page does. A date with recorded work answers 422 recorded_work naming it unless confirm is true; a frozen month 422 frozen; a date changed since seen 409 stale_record.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| date |
path |
yes |
|
Request body (required)
application/json
object
The change
-
confirm
boolean
- Optional: mark a date with recorded work not worked.
-
seen
string
- The date's value from seen_by_date on GET /api/v1/work-orders/{id} (the get_work_order tool answers it too), to refuse a date changed since that read.
-
shaded
boolean, required
- true worked, false not worked.
| Field |
Type |
Required |
Description |
| confirm |
boolean |
no |
Optional: mark a date with recorded work not worked. |
| seen |
string |
no |
The date's value from seen_by_date on GET /api/v1/work-orders/{id} (the get_work_order tool answers it too), to refuse a date changed since that read. |
| shaded |
boolean |
yes |
true worked, false not worked. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Code recorded_work: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/dismiss-guidance
Dismiss a Work Order's Getting Started guidance
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/dismiss-warnings
Dismiss a Work Order's generation warnings
Clears the warnings generating it found, as the page does once they are read. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/duplicate
Duplicate a Work Order
Two forms. Without mode: copies it into the month after it, or into month and year when both are sent, with its tasks and weekly pattern; a live Work Order already holding that month's slot answers 409 slot_taken naming its WO #. With mode (US-102.35): makes a new standing Work Order from this one, with the next WO #, as the page's Duplicate does: keep_both, close_previous (this Work Order is closed at closing_date in the same write; it needs the lock_version the Work Order was read with, and one changed since answers 409 stale_record) or temporary, for client_id and caregiver_id when sent. Every form needs work_orders.manage (403 forbidden). A choice the page refuses (a missing date, a Closing Date before this Work Order's Effective Date) answers 422 duplicate_refused in its words, a close of an archived Work Order 422 work_order_archived, a client or caregiver not of this agency 422 validation_failed. A field another mode takes is 400. Answers the copy's first month and the warnings the copy and the close found. Saved at once: send an Idempotency-Key so a retry makes no second copy. Mixing the two forms' fields is 400.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body
application/json
object
The target month, or the mode and its dates
-
caregiver_id
string
- With mode: the copy's caregiver, this agency's; this Work Order's when not sent.
-
client_id
string
- With mode: the copy's client, this agency's; this Work Order's when not sent.
-
closing_date
string
- close_previous: this Work Order's Closing Date; the day before effective_date when not sent, as the page's dialog fills it in. Refused before this Work Order's own Effective Date.
-
effective_date
string
- keep_both and close_previous, which need it: the copy's Effective Date.
-
lock_version
integer
- With mode: the lock_version this Work Order was read with. close_previous needs it, since it closes this Work Order: one changed since answers 409 stale_record, as a second close from the page is refused. Checked when sent with the other modes.
-
mode
string
- Makes a new standing Work Order as the page's Duplicate does: keep_both keeps this one as it is; close_previous closes it at closing_date; temporary makes a copy that runs temporary_from to temporary_to. Not with month or year.
-
month
integer
- Target month; send with year.
-
temporary_from
string
- temporary, which needs it: the copy's first day.
-
temporary_to
string
- temporary, which needs it: the copy's last day.
-
year
integer
- Target year; send with month.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
no |
With mode: the copy's caregiver, this agency's; this Work Order's when not sent. |
| client_id |
string |
no |
With mode: the copy's client, this agency's; this Work Order's when not sent. |
| closing_date |
string |
no |
close_previous: this Work Order's Closing Date; the day before effective_date when not sent, as the page's dialog fills it in. Refused before this Work Order's own Effective Date. |
| effective_date |
string |
no |
keep_both and close_previous, which need it: the copy's Effective Date. |
| lock_version |
integer |
no |
With mode: the lock_version this Work Order was read with. close_previous needs it, since it closes this Work Order: one changed since answers 409 stale_record, as a second close from the page is refused. Checked when sent with the other modes. |
| mode |
string |
no |
Makes a new standing Work Order as the page's Duplicate does: keep_both keeps this one as it is; close_previous closes it at closing_date; temporary makes a copy that runs temporary_from to temporary_to. Not with month or year. |
| month |
integer |
no |
Target month; send with year. |
| temporary_from |
string |
no |
temporary, which needs it: the copy's first day. |
| temporary_to |
string |
no |
temporary, which needs it: the copy's last day. |
| year |
integer |
no |
Target year; send with month. |
-
201 The new Work Order
object
-
data
WorkOrder, required
-
warnings
array of object
- With mode: what the copy and the close found (an overlap with another of the caregiver's Work Orders, a month kept), which never holds the copy.
-
warnings[].kind
string, required
- What was found.
-
warnings[].message
string, required
- The page's words for it.
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
| warnings |
array of object |
no |
With mode: what the copy and the close found (an overlap with another of the caregiver's Work Orders, a month kept), which never holds the copy. |
| warnings[].kind |
string |
yes |
What was found. |
| warnings[].message |
string |
yes |
The page's words for it. |
-
400 Bad Request, as the operation's description says.
Error
-
403 Forbidden, as the operation's description says.
Error
-
409 Codes slot_taken, stale_record: Conflict, as the operation's description says.
Error
-
422 Codes duplicate_refused, validation_failed, work_order_archived: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/fill-from-care-logs
Deprecated
Deprecated: list a Work Order's delivered days (formerly Fill from care logs)
Deprecated (US-118.17): writes nothing. A Work Order's delivered days now come straight from its care logs, so there is nothing to fill or keep in step. Answers the dates of the month the assembled month has a delivery on, in unchanged, with filled, updated, differences and flagged empty, and leaves lock_version as sent, so a retry at the same version answers the same. A Work Order that is not in progress still answers 422 not_editable. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record. Deprecated on 2026-11-16; from 00:00 UTC on 2027-05-16 it answers 410 Gone. See /developers/changelog.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The delivered days
object
-
data
object, required
-
data.differences
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
data.differences[].date
string
-
data.differences[].reason
string
-
data.filled
array of string, required
- Always empty: the fill writes nothing (US-118.17).
-
data.flagged
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
data.flagged[].date
string
-
data.flagged[].reason
string
-
data.unchanged
array of string, required
- Every date of the month with a delivery (a live care log the Work Order holds), each once, in order.
-
data.updated
array of string, required
- Always empty: the fill writes nothing (US-118.17).
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.differences |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.differences[].date |
string |
no |
|
| data.differences[].reason |
string |
no |
|
| data.filled |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.flagged |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.flagged[].date |
string |
no |
|
| data.flagged[].reason |
string |
no |
|
| data.unchanged |
array of string |
yes |
Every date of the month with a delivery (a live care log the Work Order holds), each once, in order. |
| data.updated |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
410 Gone, as the operation's description says.
Error
-
422 Code not_editable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/fill-from-evv
Deprecated
Deprecated: list a Work Order's delivered days (formerly Fill from EVV)
Deprecated (US-118.17): writes nothing. A Work Order's delivered days now come straight from its care logs, so there is nothing to fill or keep in step. Answers the dates of the month the assembled month has a delivery on, in unchanged, with filled, updated, differences and flagged empty, and leaves lock_version as sent, so a retry at the same version answers the same. A Work Order that is not in progress still answers 422 not_editable. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record. Deprecated on 2026-11-16; from 00:00 UTC on 2027-05-16 it answers 410 Gone. See /developers/changelog.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The delivered days
object
-
data
object, required
-
data.differences
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
data.differences[].date
string
-
data.differences[].entry_id
string
- The record's id.
-
data.differences[].entry_time_in
string
- HH:MM:SS, Mountain.
-
data.differences[].entry_time_out
string
- HH:MM:SS, Mountain.
-
data.differences[].visit_clock_in
string
- The visit's clock-in (UTC).
-
data.differences[].visit_clock_out
string
- The visit's clock-out (UTC).
-
data.differences[].visit_id
string
- The record's id.
-
data.filled
array of string, required
- Always empty: the fill writes nothing (US-118.17).
-
data.flagged
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
data.flagged[].date
string
-
data.flagged[].reason
string
-
data.unchanged
array of string, required
- Every date of the month with a delivery (a live care log the Work Order holds), each once, in order.
-
data.updated
array of string, required
- Always empty: the fill writes nothing (US-118.17).
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.differences |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.differences[].date |
string |
no |
|
| data.differences[].entry_id |
string |
no |
The record's id. |
| data.differences[].entry_time_in |
string |
no |
HH:MM:SS, Mountain. |
| data.differences[].entry_time_out |
string |
no |
HH:MM:SS, Mountain. |
| data.differences[].visit_clock_in |
string |
no |
The visit's clock-in (UTC). |
| data.differences[].visit_clock_out |
string |
no |
The visit's clock-out (UTC). |
| data.differences[].visit_id |
string |
no |
The record's id. |
| data.filled |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.flagged |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| data.flagged[].date |
string |
no |
|
| data.flagged[].reason |
string |
no |
|
| data.unchanged |
array of string |
yes |
Every date of the month with a delivery (a live care log the Work Order holds), each once, in order. |
| data.updated |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
410 Gone, as the operation's description says.
Error
-
422 Code not_editable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/paper-signatures
Flip a Work Order's paper-signatures mark
Marks the paper Time & Services card collected, or unmarks it when it was, as the page's toggle does. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
GET /api/v1/work-orders/{id}/plan
A Work Order's weekly plan
The plan in force today of the Work Order this month row belongs to, as the Work Order page shows its grid: each weekday's visits and each task line with its minutes and per-weekday counts. lock_version is what a change sends back.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
-
200 The plan
object
-
data
object, required
-
data.lines
array of object, required
-
data.lines[].minutes
integer
- Minutes each time (the line's Min/Task).
-
data.lines[].notes
string
- The line's notes.
-
data.lines[].task_definition_id
string, required
- The record's id.
-
data.lines[].weekday_counts
array of integer
- Times on each weekday, Monday first.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.slot_days
object, required
- Weekday, 1 (Monday) to 7, to its visits in order.
-
data.work_order_id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.lines |
array of object |
yes |
|
| data.lines[].minutes |
integer |
no |
Minutes each time (the line's Min/Task). |
| data.lines[].notes |
string |
no |
The line's notes. |
| data.lines[].task_definition_id |
string |
yes |
The record's id. |
| data.lines[].weekday_counts |
array of integer |
no |
Times on each weekday, Monday first. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.slot_days |
object |
yes |
Weekday, 1 (Monday) to 7, to its visits in order. |
| data.work_order_id |
string |
yes |
The record's id. |
-
default An error, in the shared envelope.
Error
PATCH /api/v1/work-orders/{id}/plan
Change a Work Order's weekly plan
Writes the weekdays and lines sent into the plan in force today, as the Work Order page saves its grid, then lays the change onto every open month. A weekday sent replaces that day's visits ([] clears it); a line sent replaces that task's line; drop_lines removes lines. lock_version is the plan's as read: a plan changed since answers 409 stale_record, unless it already holds what is sent, which answers 200 with nothing written. A task definition that is not the agency's answers 422 unknown_task_definition. frozen_months names months that keep their schedule (a returned timesheet, a sent claim).
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
Request body (required)
application/json
object
The days and lines to write
-
drop_lines
array of string
- Task definition ids whose lines to remove.
-
lines
array of object
- Task lines: task_definition_id, minutes, weekday_counts (seven, Monday first), notes.
-
lines[].minutes
integer
- Minutes each time (the line's Min/Task).
-
lines[].notes
string
- The line's notes.
-
lines[].task_definition_id
string, required
- The record's id.
-
lines[].weekday_counts
array of integer
- Times on each weekday, Monday first.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
slot_days
object
- Weekday 1 (Monday) to 7 => its visits, each time_in and time_out (HH:MM:SS); [] clears the day.
| Field |
Type |
Required |
Description |
| drop_lines |
array of string |
no |
Task definition ids whose lines to remove. |
| lines |
array of object |
no |
Task lines: task_definition_id, minutes, weekday_counts (seven, Monday first), notes. |
| lines[].minutes |
integer |
no |
Minutes each time (the line's Min/Task). |
| lines[].notes |
string |
no |
The line's notes. |
| lines[].task_definition_id |
string |
yes |
The record's id. |
| lines[].weekday_counts |
array of integer |
no |
Times on each weekday, Monday first. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| slot_days |
object |
no |
Weekday 1 (Monday) to 7 => its visits, each time_in and time_out (HH:MM:SS); [] clears the day. |
-
200 The plan as saved
object
-
data
object, required
-
data.lines
array of object, required
-
data.lines[].minutes
integer
- Minutes each time (the line's Min/Task).
-
data.lines[].notes
string
- The line's notes.
-
data.lines[].task_definition_id
string, required
- The record's id.
-
data.lines[].weekday_counts
array of integer
- Times on each weekday, Monday first.
-
data.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data.slot_days
object, required
- Weekday, 1 (Monday) to 7, to its visits in order.
-
data.work_order_id
string, required
- The record's id.
-
frozen_months
array of object
-
warnings
array of object
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.lines |
array of object |
yes |
|
| data.lines[].minutes |
integer |
no |
Minutes each time (the line's Min/Task). |
| data.lines[].notes |
string |
no |
The line's notes. |
| data.lines[].task_definition_id |
string |
yes |
The record's id. |
| data.lines[].weekday_counts |
array of integer |
no |
Times on each weekday, Monday first. |
| data.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data.slot_days |
object |
yes |
Weekday, 1 (Monday) to 7, to its visits in order. |
| data.work_order_id |
string |
yes |
The record's id. |
| frozen_months |
array of object |
no |
|
| warnings |
array of object |
no |
|
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Code unknown_task_definition: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/reopen
Reopen a completed Work Order
Moves a completed Work Order back to in progress, clearing its close details, as the page does. An in-progress one answers 422 not_completed; a replacement holding its slot 409 slot_taken. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Codes slot_taken, stale_record: Conflict, as the operation's description says.
Error
-
422 Code not_completed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/signatures
Sign a Work Order
Records one signature (client, provider, supervisor_designee or supervisor) on a completed Work Order, dated date or today, as the page's signature pad does. An in-progress one answers 422 not_completed. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record. An agency API key answers 403 signature_requires_person: a key is not a person and signs nothing; a member signs in the web app or through an AI app they connected.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The signature
-
date
string
- The signature date, YYYY-MM-DD: today when left out or null.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
signature
string, required
- The signature as the pad saves it: a base64 PNG of at most 50 KB, with or without a data:image/png;base64, prefix.
-
signature_type
string, required
- Whose signature.
| Field |
Type |
Required |
Description |
| date |
string |
no |
The signature date, YYYY-MM-DD: today when left out or null. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| signature |
string |
yes |
The signature as the pad saves it: a base64 PNG of at most 50 KB, with or without a data:image/png;base64, prefix. |
| signature_type |
string |
yes |
Whose signature. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
403 Code signature_requires_person: Forbidden, as the operation's description says.
Error
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
422 Code not_completed: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
PUT /api/v1/work-orders/{id}/tasks/{task_definition_id}/days/{date}
Mark a task done, not done or untouched on a date
Records what the caregiver says about a task on one date, as the caregiver app does, on that day's care log (the Work Order's client, caregiver, service and shift; drafted when the day has none): true done, false not done, null clears the mark. The answer is the care log's mark. Needs timesheets.manage (403 forbidden otherwise). A day on a submitted, approved or exported Returned Timesheet answers 409 frozen; a signed care log 409 record_locked; a completed or archived Work Order 422 not_editable; a date outside its month 422 date_out_of_range.
| Parameter |
In |
Required |
Description |
| id |
path |
yes |
|
| task_definition_id |
path |
yes |
|
| date |
path |
yes |
|
Request body (required)
application/json
object
The mark
-
completed
boolean, required
- true done, false not done, null untouched.
| Field |
Type |
Required |
Description |
| completed |
boolean |
yes |
true done, false not done, null untouched. |
-
200 The task's mark
object
-
data
object, required
-
data.completed
boolean
-
data.count
integer
- Times that day.
-
data.date
string
-
data.id
string
- The record's id.
-
data.notes
string
-
data.task_definition_id
string
- The record's id.
-
data.warnings
array of object
- Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order.
-
data.warnings[].code
string
-
data.warnings[].message
string
-
data.warnings[].task_definition_id
string
-
data.work_order_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.completed |
boolean |
no |
|
| data.count |
integer |
no |
Times that day. |
| data.date |
string |
no |
|
| data.id |
string |
no |
The record's id. |
| data.notes |
string |
no |
|
| data.task_definition_id |
string |
no |
The record's id. |
| data.warnings |
array of object |
no |
Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order. |
| data.warnings[].code |
string |
no |
|
| data.warnings[].message |
string |
no |
|
| data.warnings[].task_definition_id |
string |
no |
|
| data.work_order_id |
string |
no |
The record's id. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Code record_locked: Conflict, as the operation's description says.
Error
-
422 Codes date_out_of_range, not_editable: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/timesheet
Generate a Work Order's caregiver report
Writes the timesheet of a completed Work Order from its days and tasks, as the Work Order page's Generate timesheet does. One that is not completed answers 422 work_order_not_ready, one with no hours 422 hours_not_verified, and one that has a report 409 timesheet_exists.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
201 The caregiver report
object
-
data
Timesheet, required
| Field |
Type |
Required |
Description |
| data |
Timesheet |
yes |
|
-
409 Code timesheet_exists: Conflict, as the operation's description says.
Error
-
422 Codes hours_not_verified, work_order_not_ready: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/timesheet/overwrite
Write a Work Order's caregiver report again
Writes the timesheet of a completed Work Order again from its days and tasks as they are now, as the Work Order page's Overwrite does: the report on file, and the month's assignment reports billing the same hours, are deleted and a new one is written (with none on file, one is generated). A report with a claim on a live batch answers 409 has_claims, naming how many claims by status and the reports carrying them, and nothing changes; one with entries typed from the card 409 entries_typed. A Work Order that is not completed answers 422 work_order_not_ready.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
-
201 The new caregiver report
object
-
data
Timesheet, required
| Field |
Type |
Required |
Description |
| data |
Timesheet |
yes |
|
-
409 Codes entries_typed, has_claims: Conflict, as the operation's description says.
Error
-
422 Code work_order_not_ready: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/transition
Change a Work Order's status
Moves it to status, as the page's status control does. Completing one writes the caregiver report, or finds the one on file, and timesheet says which; a Work Order with no verified hours still completes. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The new status
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
status
string, required
- The new status.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| status |
string |
yes |
The new status. |
-
200 The Work Order and the caregiver report outcome
object
-
data
WorkOrder, required
-
timesheet
object, required
-
timesheet.outcome
string
-
timesheet.reason
string
- Why none was written.
-
timesheet.timesheet_id
string
- The caregiver report.
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
| timesheet |
object |
yes |
|
| timesheet.outcome |
string |
no |
|
| timesheet.reason |
string |
no |
Why none was written. |
| timesheet.timesheet_id |
string |
no |
The caregiver report. |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/unarchive
Unarchive a Work Order
Puts an archived Work Order back. A replacement already holding its slot answers 409 slot_taken naming its WO #. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order
object
-
data
WorkOrder, required
| Field |
Type |
Required |
Description |
| data |
WorkOrder |
yes |
|
-
409 Codes slot_taken, stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/unplanned-tasks
Record a task done that the plan did not hold
Adds a task done on a date that the Work Order's plan did not put there, as the caregiver app does, on that day's care log with the notes as its reason. Needs timesheets.manage (403 forbidden otherwise); a day on a submitted, approved or exported Returned Timesheet answers 409 frozen. A task_definition_id the agency cannot use (not a UUID, unknown, or another agency's; the system definitions it can see are accepted) answers 422 unknown_task_definition; a date outside the Work Order's month 422 date_out_of_range; a completed or archived Work Order 422 not_editable.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
The task
-
date
string, required
- The date, YYYY-MM-DD.
-
notes
string
- Optional notes.
-
task_definition_id
string, required
- The task's definition id.
| Field |
Type |
Required |
Description |
| date |
string |
yes |
The date, YYYY-MM-DD. |
| notes |
string |
no |
Optional notes. |
| task_definition_id |
string |
yes |
The task's definition id. |
-
201 The task's mark
object
-
data
object, required
-
data.completed
boolean
-
data.count
integer
- Times that day.
-
data.date
string
-
data.id
string
- The record's id.
-
data.notes
string
-
data.task_definition_id
string
- The record's id.
-
data.warnings
array of object
- Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order.
-
data.warnings[].code
string
-
data.warnings[].message
string
-
data.warnings[].task_definition_id
string
-
data.work_order_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.completed |
boolean |
no |
|
| data.count |
integer |
no |
Times that day. |
| data.date |
string |
no |
|
| data.id |
string |
no |
The record's id. |
| data.notes |
string |
no |
|
| data.task_definition_id |
string |
no |
The record's id. |
| data.warnings |
array of object |
no |
Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order. |
| data.warnings[].code |
string |
no |
|
| data.warnings[].message |
string |
no |
|
| data.warnings[].task_definition_id |
string |
no |
|
| data.work_order_id |
string |
no |
The record's id. |
-
403 Forbidden, as the operation's description says.
Error
-
409 Conflict, as the operation's description says.
Error
-
422 Codes date_out_of_range, not_editable, unknown_task_definition: Unprocessable Content, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
POST /api/v1/work-orders/{id}/verify-for-billing
Verify a Work Order's hours for billing
Sets its verified hours, first and second half: the hours of the month's caregiver report when one is on file (the returned card billing reads), else the hours its days in the month carry. Completes it when it is in progress, writing the caregiver report or finding the one on file, as the timesheet page's Verify hours does. timesheet says what happened to the report and completion whether this call completed it. A Work Order with no hours still verifies; timesheet then answers none with the reason. lock_version is the one the Work Order was read with: a Work Order changed since answers 409 stale_record.
| Parameter |
In |
Required |
Description |
| Idempotency-Key |
header |
yes |
1-255 printable ASCII characters, unique per intended write and scoped to the API key sending it. A retry with the same key and the same request (method, path, query string and body) replays the first answer; the same key with any other request is 422. While the first request is still running, a retry is 409: wait and retry. An answer that says nothing persisted leaves the key free, so a retry with it runs again: a 503 with Retry-After, a 500 for a failure on our side that changed nothing (a file store refusal, an audit record that could not be written), and a 410 file_missing. Keys bind for 24 hours. |
| id |
path |
yes |
|
Request body (required)
application/json
object
Its lock_version
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
-
200 The Work Order, the caregiver report outcome and the completion
object
-
completion
string, required
- completed_now when this call completed the Work Order; already_complete when it was.
-
data
WorkOrder, required
-
timesheet
object, required
-
timesheet.outcome
string
-
timesheet.reason
string
- Why none was written.
-
timesheet.timesheet_id
string
- The caregiver report.
| Field |
Type |
Required |
Description |
| completion |
string |
yes |
completed_now when this call completed the Work Order; already_complete when it was. |
| data |
WorkOrder |
yes |
|
| timesheet |
object |
yes |
|
| timesheet.outcome |
string |
no |
|
| timesheet.reason |
string |
no |
Why none was written. |
| timesheet.timesheet_id |
string |
no |
The caregiver report. |
-
409 Code stale_record: Conflict, as the operation's description says.
Error
-
default An error, in the shared envelope.
Error
Schemas
AccountSidSet
-
masked
string, required
- Its last four characters, as ****1234; empty when none.
-
set
boolean, required
- Whether an Account SID is saved.
| Field |
Type |
Required |
Description |
| masked |
string |
yes |
Its last four characters, as ****1234; empty when none. |
| set |
boolean |
yes |
Whether an Account SID is saved. |
AdpSettings
-
adp_batch_description
string, required
- The batch description; null clears it.
-
adp_co_code
string, required
- The ADP company code; null clears it.
-
adp_earning_code_map
object, required
- Attendant hours to an ADP Hours column, as the tab's JSON; an empty object leaves the column out.
-
biweekly_anchor_date
string, required
- The first day of any one biweekly pay period, such as 2026-10-02: biweekly periods run every 14 days from it, across month ends. Read only while pay_period_frequency is biweekly; null starts each month's periods on the 1st. Exports already made keep their dates.
-
cash_advance_in_adp_run
boolean, required
- Whether the ADP Run file deducts each caregiver's cash advance as a negative Misc Amount.
-
daily_overtime_enabled
boolean, required
- Whether daily overtime is reported.
-
default_attendant_pay_rate
string, required
- The attendant hourly rate, such as 18.50: above zero, two decimals; null clears it.
-
holiday_pay_rate
string, required
- The holiday hourly rate: above zero, two decimals; null clears it.
-
mileage_pay_rate
string, required
- The rate per mile, such as 0.67: above zero, two decimals; null clears it.
-
pay_period_frequency
string, required
- The pay period.
| Field |
Type |
Required |
Description |
| adp_batch_description |
string |
yes |
The batch description; null clears it. |
| adp_co_code |
string |
yes |
The ADP company code; null clears it. |
| adp_earning_code_map |
object |
yes |
Attendant hours to an ADP Hours column, as the tab's JSON; an empty object leaves the column out. |
| biweekly_anchor_date |
string |
yes |
The first day of any one biweekly pay period, such as 2026-10-02: biweekly periods run every 14 days from it, across month ends. Read only while pay_period_frequency is biweekly; null starts each month's periods on the 1st. Exports already made keep their dates. |
| cash_advance_in_adp_run |
boolean |
yes |
Whether the ADP Run file deducts each caregiver's cash advance as a negative Misc Amount. |
| daily_overtime_enabled |
boolean |
yes |
Whether daily overtime is reported. |
| default_attendant_pay_rate |
string |
yes |
The attendant hourly rate, such as 18.50: above zero, two decimals; null clears it. |
| holiday_pay_rate |
string |
yes |
The holiday hourly rate: above zero, two decimals; null clears it. |
| mileage_pay_rate |
string |
yes |
The rate per mile, such as 0.67: above zero, two decimals; null clears it. |
| pay_period_frequency |
string |
yes |
The pay period. |
AdpSettingsUpdate
-
adp_batch_description
string
- The batch description; null clears it.
-
adp_co_code
string
- The ADP company code; null clears it.
-
adp_earning_code_map
object
- Attendant hours to an ADP Hours column, as the tab's JSON; an empty object leaves the column out.
-
biweekly_anchor_date
string
- The first day of any one biweekly pay period, such as 2026-10-02: biweekly periods run every 14 days from it, across month ends. Read only while pay_period_frequency is biweekly; null starts each month's periods on the 1st. Exports already made keep their dates.
-
cash_advance_in_adp_run
boolean
- Whether the ADP Run file deducts each caregiver's cash advance as a negative Misc Amount.
-
daily_overtime_enabled
boolean
- Whether daily overtime is reported.
-
default_attendant_pay_rate
string
- The attendant hourly rate, such as 18.50: above zero, two decimals; null clears it.
-
holiday_pay_rate
string
- The holiday hourly rate: above zero, two decimals; null clears it.
-
mileage_pay_rate
string
- The rate per mile, such as 0.67: above zero, two decimals; null clears it.
-
pay_period_frequency
string
- The pay period.
| Field |
Type |
Required |
Description |
| adp_batch_description |
string |
no |
The batch description; null clears it. |
| adp_co_code |
string |
no |
The ADP company code; null clears it. |
| adp_earning_code_map |
object |
no |
Attendant hours to an ADP Hours column, as the tab's JSON; an empty object leaves the column out. |
| biweekly_anchor_date |
string |
no |
The first day of any one biweekly pay period, such as 2026-10-02: biweekly periods run every 14 days from it, across month ends. Read only while pay_period_frequency is biweekly; null starts each month's periods on the 1st. Exports already made keep their dates. |
| cash_advance_in_adp_run |
boolean |
no |
Whether the ADP Run file deducts each caregiver's cash advance as a negative Misc Amount. |
| daily_overtime_enabled |
boolean |
no |
Whether daily overtime is reported. |
| default_attendant_pay_rate |
string |
no |
The attendant hourly rate, such as 18.50: above zero, two decimals; null clears it. |
| holiday_pay_rate |
string |
no |
The holiday hourly rate: above zero, two decimals; null clears it. |
| mileage_pay_rate |
string |
no |
The rate per mile, such as 0.67: above zero, two decimals; null clears it. |
| pay_period_frequency |
string |
no |
The pay period. |
AgencyApiKey
-
created_at
string
- When it was created (UTC).
-
created_by_id
string
- The admin who created it.
-
id
string, required
- The record's id.
-
last_used_at
string
- Its last request (UTC).
-
name
string, required
- The key's name.
-
revoked_at
string
- When it was revoked (UTC).
-
role
string, required
- What the key may do.
| Field |
Type |
Required |
Description |
| created_at |
string |
no |
When it was created (UTC). |
| created_by_id |
string |
no |
The admin who created it. |
| id |
string |
yes |
The record's id. |
| last_used_at |
string |
no |
Its last request (UTC). |
| name |
string |
yes |
The key's name. |
| revoked_at |
string |
no |
When it was revoked (UTC). |
| role |
string |
yes |
What the key may do. |
AgencyApiKeyCreate
-
name
string, required
- A name for the integration.
-
role
string, required
- What the key may do.
| Field |
Type |
Required |
Description |
| name |
string |
yes |
A name for the integration. |
| role |
string |
yes |
What the key may do. |
AgencyApiKeyCreated
-
data
object, required
-
data.created_at
string
- When it was created (UTC).
-
data.created_by_id
string
- The admin who created it.
-
data.id
string, required
- The record's id.
-
data.last_used_at
string
- Its last request (UTC).
-
data.name
string, required
- The key's name.
-
data.revoked_at
string
- When it was revoked (UTC).
-
data.role
string, required
- What the key may do.
-
secret
string, required
- The secret, shown this once.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.created_at |
string |
no |
When it was created (UTC). |
| data.created_by_id |
string |
no |
The admin who created it. |
| data.id |
string |
yes |
The record's id. |
| data.last_used_at |
string |
no |
Its last request (UTC). |
| data.name |
string |
yes |
The key's name. |
| data.revoked_at |
string |
no |
When it was revoked (UTC). |
| data.role |
string |
yes |
What the key may do. |
| secret |
string |
yes |
The secret, shown this once. |
AgencyApiKeyPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].created_at
string
- When it was created (UTC).
-
data[].created_by_id
string
- The admin who created it.
-
data[].id
string, required
- The record's id.
-
data[].last_used_at
string
- Its last request (UTC).
-
data[].name
string, required
- The key's name.
-
data[].revoked_at
string
- When it was revoked (UTC).
-
data[].role
string, required
- What the key may do.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].created_at |
string |
no |
When it was created (UTC). |
| data[].created_by_id |
string |
no |
The admin who created it. |
| data[].id |
string |
yes |
The record's id. |
| data[].last_used_at |
string |
no |
Its last request (UTC). |
| data[].name |
string |
yes |
The key's name. |
| data[].revoked_at |
string |
no |
When it was revoked (UTC). |
| data[].role |
string |
yes |
What the key may do. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
AgencyInvitation
-
email
string, required
- Who was invited.
-
expires_at
string
- When the link stops working (UTC).
-
id
string, required
- The record's id.
-
invited_at
string
- When it was sent (UTC).
-
invited_by_id
string
- The member who invited.
-
role
string, required
- The role they join with.
-
status
string, required
- Where it stands.
| Field |
Type |
Required |
Description |
| email |
string |
yes |
Who was invited. |
| expires_at |
string |
no |
When the link stops working (UTC). |
| id |
string |
yes |
The record's id. |
| invited_at |
string |
no |
When it was sent (UTC). |
| invited_by_id |
string |
no |
The member who invited. |
| role |
string |
yes |
The role they join with. |
| status |
string |
yes |
Where it stands. |
AgencyInvitationCreate
-
email
string, required
- Their email address.
-
role
string, required
- The role they join with.
| Field |
Type |
Required |
Description |
| email |
string |
yes |
Their email address. |
| role |
string |
yes |
The role they join with. |
AgencyInvitationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].email
string, required
- Who was invited.
-
data[].expires_at
string
- When the link stops working (UTC).
-
data[].id
string, required
- The record's id.
-
data[].invited_at
string
- When it was sent (UTC).
-
data[].invited_by_id
string
- The member who invited.
-
data[].role
string, required
- The role they join with.
-
data[].status
string, required
- Where it stands.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].email |
string |
yes |
Who was invited. |
| data[].expires_at |
string |
no |
When the link stops working (UTC). |
| data[].id |
string |
yes |
The record's id. |
| data[].invited_at |
string |
no |
When it was sent (UTC). |
| data[].invited_by_id |
string |
no |
The member who invited. |
| data[].role |
string |
yes |
The role they join with. |
| data[].status |
string |
yes |
Where it stands. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
AgencyMember
-
email
string, required
- Their sign-in email.
-
id
string, required
- The member's user id.
-
joined_at
string
- When they joined (UTC).
-
last_seen_at
string
- When they last signed in here (UTC).
-
name
string
- Their display name; null shows the email.
-
role
string, required
- Their role in this agency.
-
status
string, required
- Whether they may sign in here.
| Field |
Type |
Required |
Description |
| email |
string |
yes |
Their sign-in email. |
| id |
string |
yes |
The member's user id. |
| joined_at |
string |
no |
When they joined (UTC). |
| last_seen_at |
string |
no |
When they last signed in here (UTC). |
| name |
string |
no |
Their display name; null shows the email. |
| role |
string |
yes |
Their role in this agency. |
| status |
string |
yes |
Whether they may sign in here. |
AgencyMemberPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].email
string, required
- Their sign-in email.
-
data[].id
string, required
- The member's user id.
-
data[].joined_at
string
- When they joined (UTC).
-
data[].last_seen_at
string
- When they last signed in here (UTC).
-
data[].name
string
- Their display name; null shows the email.
-
data[].role
string, required
- Their role in this agency.
-
data[].status
string, required
- Whether they may sign in here.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].email |
string |
yes |
Their sign-in email. |
| data[].id |
string |
yes |
The member's user id. |
| data[].joined_at |
string |
no |
When they joined (UTC). |
| data[].last_seen_at |
string |
no |
When they last signed in here (UTC). |
| data[].name |
string |
no |
Their display name; null shows the email. |
| data[].role |
string |
yes |
Their role in this agency. |
| data[].status |
string |
yes |
Whether they may sign in here. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
AgencyMemberUpdate
-
name
string
- Their display name; null or blank clears it, showing the email.
-
role
string
- Their role.
| Field |
Type |
Required |
Description |
| name |
string |
no |
Their display name; null or blank clears it, showing the email. |
| role |
string |
no |
Their role. |
AgencyProfile
The agency's identity, address and claim defaults. Changing them needs agency_settings.manage.
-
address_line1
string
- Street address.
-
address_line2
string
- Suite or unit.
-
city
string
- City.
-
default_diagnosis_code
string
- The default primary diagnosis code (ICD-10) for new claims.
-
default_place_of_service
string
- The default place of service code for new claims.
-
default_procedure_codes
object
- The procedure code (billing code, then its modifiers) each service's generated Work Orders bill under when the client has no billing assignment and the Plan of Care names no code (US-107.4). Keys personal_care and homemaker only. Sending it replaces the whole object: a service left out or blank has no default, and {} clears both.
-
default_procedure_codes.homemaker
string
- The Homemaker code, such as "S5130 U2".
-
default_procedure_codes.personal_care
string
- The Personal Care code, such as "T1019 U2".
-
default_rendering_npi
string
- The default Medicaid provider (location) id claims carry as rendering provider.
-
emergency_phone
string
- The number a caregiver calls in an emergency, printed on the emergency form and wallet card; the main phone prints while it is empty.
-
fax
string
- Fax number.
-
name
string, required
- The agency's name, as claims and printed forms carry it.
-
npi
string
- The agency's 10-digit NPI.
-
open_shifts
OpenShiftSettings
-
phone
string
- Phone number.
-
state
string
- Two-letter state code.
-
tax_id
string
- The agency's Tax ID, NN-NNNNNNN.
-
week_start_day
string
- The day the agency's printed weeks start on.
-
work_order_print_certification
boolean
- Whether a printed Work Order carries the notice, certification and signature lines (US-102.30); on unless the agency turns it off.
-
zip
string
- ZIP code, 5 or 9 digits.
| Field |
Type |
Required |
Description |
| address_line1 |
string |
no |
Street address. |
| address_line2 |
string |
no |
Suite or unit. |
| city |
string |
no |
City. |
| default_diagnosis_code |
string |
no |
The default primary diagnosis code (ICD-10) for new claims. |
| default_place_of_service |
string |
no |
The default place of service code for new claims. |
| default_procedure_codes |
object |
no |
The procedure code (billing code, then its modifiers) each service's generated Work Orders bill under when the client has no billing assignment and the Plan of Care names no code (US-107.4). Keys personal_care and homemaker only. Sending it replaces the whole object: a service left out or blank has no default, and {} clears both. |
| default_procedure_codes.homemaker |
string |
no |
The Homemaker code, such as "S5130 U2". |
| default_procedure_codes.personal_care |
string |
no |
The Personal Care code, such as "T1019 U2". |
| default_rendering_npi |
string |
no |
The default Medicaid provider (location) id claims carry as rendering provider. |
| emergency_phone |
string |
no |
The number a caregiver calls in an emergency, printed on the emergency form and wallet card; the main phone prints while it is empty. |
| fax |
string |
no |
Fax number. |
| name |
string |
yes |
The agency's name, as claims and printed forms carry it. |
| npi |
string |
no |
The agency's 10-digit NPI. |
| open_shifts |
OpenShiftSettings |
no |
|
| phone |
string |
no |
Phone number. |
| state |
string |
no |
Two-letter state code. |
| tax_id |
string |
no |
The agency's Tax ID, NN-NNNNNNN. |
| week_start_day |
string |
no |
The day the agency's printed weeks start on. |
| work_order_print_certification |
boolean |
no |
Whether a printed Work Order carries the notice, certification and signature lines (US-102.30); on unless the agency turns it off. |
| zip |
string |
no |
ZIP code, 5 or 9 digits. |
AgencyProfileUpdate
The profile fields to change; a field left out keeps its value. The agency has no lock_version: the update sets only what it sends.
-
address_line1
string
- Street address.
-
address_line2
string
- Suite or unit.
-
city
string
- City.
-
default_diagnosis_code
string
- The default primary diagnosis code (ICD-10) for new claims; cannot be cleared.
-
default_place_of_service
string
- The default place of service code for new claims; cannot be cleared.
-
default_procedure_codes
object
- The procedure code (billing code, then its modifiers) each service's generated Work Orders bill under when the client has no billing assignment and the Plan of Care names no code (US-107.4). Keys personal_care and homemaker only. Sending it replaces the whole object: a service left out or blank has no default, and {} clears both.
-
default_procedure_codes.homemaker
string
- The Homemaker code, such as "S5130 U2".
-
default_procedure_codes.personal_care
string
- The Personal Care code, such as "T1019 U2".
-
default_rendering_npi
string
- The default Medicaid provider (location) id claims carry as rendering provider.
-
emergency_phone
string
- The number a caregiver calls in an emergency, printed on the emergency form and wallet card; the main phone prints while it is empty.
-
fax
string
- Fax number.
-
name
string
- The agency's name, as claims and printed forms carry it.
-
npi
string
- The agency's 10-digit NPI.
-
open_shifts
OpenShiftSettings
-
phone
string
- Phone number.
-
state
string
- Two-letter state code.
-
tax_id
string
- The agency's Tax ID, NN-NNNNNNN.
-
week_start_day
string
- The day the agency's printed weeks start on.
-
work_order_print_certification
boolean
- Whether a printed Work Order carries the notice, certification and signature lines (US-102.30); on unless the agency turns it off.
-
zip
string
- ZIP code, 5 or 9 digits.
| Field |
Type |
Required |
Description |
| address_line1 |
string |
no |
Street address. |
| address_line2 |
string |
no |
Suite or unit. |
| city |
string |
no |
City. |
| default_diagnosis_code |
string |
no |
The default primary diagnosis code (ICD-10) for new claims; cannot be cleared. |
| default_place_of_service |
string |
no |
The default place of service code for new claims; cannot be cleared. |
| default_procedure_codes |
object |
no |
The procedure code (billing code, then its modifiers) each service's generated Work Orders bill under when the client has no billing assignment and the Plan of Care names no code (US-107.4). Keys personal_care and homemaker only. Sending it replaces the whole object: a service left out or blank has no default, and {} clears both. |
| default_procedure_codes.homemaker |
string |
no |
The Homemaker code, such as "S5130 U2". |
| default_procedure_codes.personal_care |
string |
no |
The Personal Care code, such as "T1019 U2". |
| default_rendering_npi |
string |
no |
The default Medicaid provider (location) id claims carry as rendering provider. |
| emergency_phone |
string |
no |
The number a caregiver calls in an emergency, printed on the emergency form and wallet card; the main phone prints while it is empty. |
| fax |
string |
no |
Fax number. |
| name |
string |
no |
The agency's name, as claims and printed forms carry it. |
| npi |
string |
no |
The agency's 10-digit NPI. |
| open_shifts |
OpenShiftSettings |
no |
|
| phone |
string |
no |
Phone number. |
| state |
string |
no |
Two-letter state code. |
| tax_id |
string |
no |
The agency's Tax ID, NN-NNNNNNN. |
| week_start_day |
string |
no |
The day the agency's printed weeks start on. |
| work_order_print_certification |
boolean |
no |
Whether a printed Work Order carries the notice, certification and signature lines (US-102.30); on unless the agency turns it off. |
| zip |
string |
no |
ZIP code, 5 or 9 digits. |
Agenda
What the agency needs to deal with on one day: reminders due that day, reminders already overdue, client and caregiver birthdays, and the billing work waiting.
-
billing
object, required
- The billing work waiting, for the day's month. Work orders and batches are null for a caller whose roles do not grant billing.view.
-
billing.batches_ready_to_submit
integer, required
-
billing.timesheets_awaiting_approval
integer, required
-
billing.work_orders_ready_to_bill
integer, required
-
birthdays
array of AgendaBirthday, required
-
caregiver_birthdays
array of AgendaCaregiverBirthday, required
-
date
string, required
- The agenda's day (Mountain time).
-
due_today
object, required
- Open reminders due on the day, morning to evening, untimed ones last; due_today_offset reads past the first page.
-
due_today.events
array of Reminder, required
-
due_today.limit
integer, required
- The most events one answer holds (100).
-
due_today.offset
integer, required
- How many were skipped.
-
due_today.total
integer, required
- How many there are in all.
-
due_today.truncated
boolean, required
- True when there are more than events holds; read on with the offset.
-
overdue
object, required
- Open reminders due before the day, most recently missed first; overdue_offset reads past the first page.
-
overdue.events
array of Reminder, required
-
overdue.limit
integer, required
- The most events one answer holds (100).
-
overdue.offset
integer, required
- How many were skipped.
-
overdue.total
integer, required
- How many there are in all.
-
overdue.truncated
boolean, required
- True when there are more than events holds; read on with the offset.
| Field |
Type |
Required |
Description |
| billing |
object |
yes |
The billing work waiting, for the day's month. Work orders and batches are null for a caller whose roles do not grant billing.view. |
| billing.batches_ready_to_submit |
integer |
yes |
|
| billing.timesheets_awaiting_approval |
integer |
yes |
|
| billing.work_orders_ready_to_bill |
integer |
yes |
|
| birthdays |
array of AgendaBirthday |
yes |
|
| caregiver_birthdays |
array of AgendaCaregiverBirthday |
yes |
|
| date |
string |
yes |
The agenda's day (Mountain time). |
| due_today |
object |
yes |
Open reminders due on the day, morning to evening, untimed ones last; due_today_offset reads past the first page. |
| due_today.events |
array of Reminder |
yes |
|
| due_today.limit |
integer |
yes |
The most events one answer holds (100). |
| due_today.offset |
integer |
yes |
How many were skipped. |
| due_today.total |
integer |
yes |
How many there are in all. |
| due_today.truncated |
boolean |
yes |
True when there are more than events holds; read on with the offset. |
| overdue |
object |
yes |
Open reminders due before the day, most recently missed first; overdue_offset reads past the first page. |
| overdue.events |
array of Reminder |
yes |
|
| overdue.limit |
integer |
yes |
The most events one answer holds (100). |
| overdue.offset |
integer |
yes |
How many were skipped. |
| overdue.total |
integer |
yes |
How many there are in all. |
| overdue.truncated |
boolean |
yes |
True when there are more than events holds; read on with the offset. |
AgendaBirthday
A client whose birthday falls on the agenda's day, as the Today page and the daily digest show it. Sample clients are left out.
-
client_first_name
string
- The client's first name.
-
client_id
string, required
- The client.
-
client_last_name
string
- The client's last name.
-
date
string, required
- The agenda's day.
-
title
string
- The agenda line, e.g. "Jane Doe's Birthday (age 82)".
| Field |
Type |
Required |
Description |
| client_first_name |
string |
no |
The client's first name. |
| client_id |
string |
yes |
The client. |
| client_last_name |
string |
no |
The client's last name. |
| date |
string |
yes |
The agenda's day. |
| title |
string |
no |
The agenda line, e.g. "Jane Doe's Birthday (age 82)". |
AgendaCaregiverBirthday
An active caregiver whose birthday falls on the agenda's day, as the Today page and the daily digest show it. Sample caregivers are left out.
-
caregiver_first_name
string
- The caregiver's first name.
-
caregiver_id
string, required
- The caregiver.
-
caregiver_last_name
string
- The caregiver's last name.
-
date
string, required
- The agenda's day.
-
title
string
- The agenda line, e.g. "Jane Doe's Birthday (caregiver, age 41)".
| Field |
Type |
Required |
Description |
| caregiver_first_name |
string |
no |
The caregiver's first name. |
| caregiver_id |
string |
yes |
The caregiver. |
| caregiver_last_name |
string |
no |
The caregiver's last name. |
| date |
string |
yes |
The agenda's day. |
| title |
string |
no |
The agenda line, e.g. "Jane Doe's Birthday (caregiver, age 41)". |
Assignment
A caregiver serving a client, under one billing code.
-
billing_code
string
- The HCPCS code billed for the service.
-
caregiver_id
string, required
- The caregiver serving.
-
client_id
string, required
- The client served.
-
effective_date
string
-
end_date
string
-
evv_exemption_date
string
-
evv_exemption_on_file
boolean
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
live_in
boolean
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers.
-
provider_type
string
-
relative_provider
boolean
- The caregiver is a relative of the client.
-
status
string, required
-
updated_at
string
- When the record last changed.
-
work_order_number
string
- The work order number the office typed on the assignment.
| Field |
Type |
Required |
Description |
| billing_code |
string |
no |
The HCPCS code billed for the service. |
| caregiver_id |
string |
yes |
The caregiver serving. |
| client_id |
string |
yes |
The client served. |
| effective_date |
string |
no |
|
| end_date |
string |
no |
|
| evv_exemption_date |
string |
no |
|
| evv_exemption_on_file |
boolean |
no |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| live_in |
boolean |
no |
|
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers. |
| provider_type |
string |
no |
|
| relative_provider |
boolean |
no |
The caregiver is a relative of the client. |
| status |
string |
yes |
|
| updated_at |
string |
no |
When the record last changed. |
| work_order_number |
string |
no |
The work order number the office typed on the assignment. |
AssignmentCreate
A new assignment. The client and caregiver must be active members of the agency, and the pair must not already have an open assignment for the provider type.
-
billing_code
string, required
- The HCPCS code billed for the service.
-
caregiver_id
string, required
- The caregiver serving.
-
client_id
string, required
- The client served.
-
effective_date
string, required
-
end_date
string
-
evv_exemption_date
string
-
evv_exemption_on_file
boolean
-
live_in
boolean
-
modifiers
array of string
- Billing code modifiers.
-
notes
string
- Free text; written, never returned.
-
provider_type
string, required
-
relative_provider
boolean
- The caregiver is a relative of the client.
-
work_order_number
string
- The work order number the office typed on the assignment.
| Field |
Type |
Required |
Description |
| billing_code |
string |
yes |
The HCPCS code billed for the service. |
| caregiver_id |
string |
yes |
The caregiver serving. |
| client_id |
string |
yes |
The client served. |
| effective_date |
string |
yes |
|
| end_date |
string |
no |
|
| evv_exemption_date |
string |
no |
|
| evv_exemption_on_file |
boolean |
no |
|
| live_in |
boolean |
no |
|
| modifiers |
array of string |
no |
Billing code modifiers. |
| notes |
string |
no |
Free text; written, never returned. |
| provider_type |
string |
yes |
|
| relative_provider |
boolean |
no |
The caregiver is a relative of the client. |
| work_order_number |
string |
no |
The work order number the office typed on the assignment. |
AssignmentPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Assignment, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Assignment |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
AssignmentSchedule
-
assignment_id
string, required
- The assignment.
-
lock_version
integer, required
- The assignment's lock_version, which the next schedule save sends.
-
shifts
array of object, required
- Each shift that has days, in shift order.
-
shifts[].days
array of object, required
-
shifts[].days[].day_of_week
string, required
-
shifts[].days[].end_time
string, required
-
shifts[].days[].ends_next_day
boolean, required
- The shift ends after midnight, on the next day.
-
shifts[].days[].hours
string
- The day's hours, a decimal.
-
shifts[].days[].start_time
string, required
-
shifts[].days[].work_order_number
string
- The WO # of the Work Order that places this day ("12"); null on a day the office entered. A save that sends a placed day back unchanged writes nothing for it.
-
shifts[].shift_number
integer, required
| Field |
Type |
Required |
Description |
| assignment_id |
string |
yes |
The assignment. |
| lock_version |
integer |
yes |
The assignment's lock_version, which the next schedule save sends. |
| shifts |
array of object |
yes |
Each shift that has days, in shift order. |
| shifts[].days |
array of object |
yes |
|
| shifts[].days[].day_of_week |
string |
yes |
|
| shifts[].days[].end_time |
string |
yes |
|
| shifts[].days[].ends_next_day |
boolean |
yes |
The shift ends after midnight, on the next day. |
| shifts[].days[].hours |
string |
no |
The day's hours, a decimal. |
| shifts[].days[].start_time |
string |
yes |
|
| shifts[].days[].work_order_number |
string |
no |
The WO # of the Work Order that places this day ("12"); null on a day the office entered. A save that sends a placed day back unchanged writes nothing for it. |
| shifts[].shift_number |
integer |
yes |
|
AssignmentScheduleSave
-
days
array of object, required
- The shift's days; an empty list clears the shift.
-
days[].day_of_week
string, required
- The day.
-
days[].end_time
string, required
- HH:MM or HH:MM:SS, 24-hour; after start_time, or at or before it when ends_next_day is true.
-
days[].ends_next_day
boolean
- True for a shift that ends after midnight, on the next day (22:30 to 00:30); default false.
-
days[].start_time
string, required
- HH:MM or HH:MM:SS, 24-hour.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
shift_number
integer
- The shift to save, 1 to 4, as GET names it; default 1. The shift query parameter does the same.
| Field |
Type |
Required |
Description |
| days |
array of object |
yes |
The shift's days; an empty list clears the shift. |
| days[].day_of_week |
string |
yes |
The day. |
| days[].end_time |
string |
yes |
HH:MM or HH:MM:SS, 24-hour; after start_time, or at or before it when ends_next_day is true. |
| days[].ends_next_day |
boolean |
no |
True for a shift that ends after midnight, on the next day (22:30 to 00:30); default false. |
| days[].start_time |
string |
yes |
HH:MM or HH:MM:SS, 24-hour. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| shift_number |
integer |
no |
The shift to save, 1 to 4, as GET names it; default 1. The shift query parameter does the same. |
AssignmentTransition
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
reason
string
- Why, kept in the status history.
-
status
string, required
- The new status.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| reason |
string |
no |
Why, kept in the status history. |
| status |
string |
yes |
The new status. |
AssignmentUpdate
Fields to change, plus the lock_version you read (required).
-
billing_code
string
- The HCPCS code billed for the service.
-
effective_date
string
-
end_date
string
-
evv_exemption_date
string
-
evv_exemption_on_file
boolean
-
live_in
boolean
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers.
-
notes
string
- Free text; written, never returned.
-
provider_type
string
-
relative_provider
boolean
- The caregiver is a relative of the client.
-
work_order_number
string
- The work order number the office typed on the assignment.
| Field |
Type |
Required |
Description |
| billing_code |
string |
no |
The HCPCS code billed for the service. |
| effective_date |
string |
no |
|
| end_date |
string |
no |
|
| evv_exemption_date |
string |
no |
|
| evv_exemption_on_file |
boolean |
no |
|
| live_in |
boolean |
no |
|
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers. |
| notes |
string |
no |
Free text; written, never returned. |
| provider_type |
string |
no |
|
| relative_provider |
boolean |
no |
The caregiver is a relative of the client. |
| work_order_number |
string |
no |
The work order number the office typed on the assignment. |
AttentionRow
Something about a client or caregiver that needs doing. An agency reminder names no subject and points at /today.
-
action_label
string, required
- What to do, e.g. "Renew by Nov 3".
-
due_on
string
- When it is due, or since when it has waited; null when no date applies.
-
kind
string, required
- Where the row comes from.
-
path
string, required
- The app page that does it, with its tab.
-
subject_id
string
- The client's or caregiver's id; null for the agency.
-
subject_name
string
- Last name, first name; null for the agency.
-
subject_type
string, required
- Whom the row is about.
| Field |
Type |
Required |
Description |
| action_label |
string |
yes |
What to do, e.g. "Renew by Nov 3". |
| due_on |
string |
no |
When it is due, or since when it has waited; null when no date applies. |
| kind |
string |
yes |
Where the row comes from. |
| path |
string |
yes |
The app page that does it, with its tab. |
| subject_id |
string |
no |
The client's or caregiver's id; null for the agency. |
| subject_name |
string |
no |
Last name, first name; null for the agency. |
| subject_type |
string |
yes |
Whom the row is about. |
AttentionRowPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of AttentionRow, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of AttentionRow |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
AuditReadiness
The agency's audit readiness: the summary's counts, and a page of the clients and caregivers with a gap (an item missing or expiring soon), most missing first.
-
caregivers_needing_attention
array of FileGaps, required
-
caregivers_needing_attention_total
integer
- How many caregivers have a gap.
-
clients_needing_attention
array of FileGaps, required
-
clients_needing_attention_total
integer
- How many clients have a gap.
-
limit
integer
- The page size of the two lists.
-
offset
integer
- The offset of the two lists.
-
overall_readiness_percentage
number
- Overall readiness, 0 to 100.
| Field |
Type |
Required |
Description |
| caregivers_needing_attention |
array of FileGaps |
yes |
|
| caregivers_needing_attention_total |
integer |
no |
How many caregivers have a gap. |
| clients_needing_attention |
array of FileGaps |
yes |
|
| clients_needing_attention_total |
integer |
no |
How many clients have a gap. |
| limit |
integer |
no |
The page size of the two lists. |
| offset |
integer |
no |
The offset of the two lists. |
| overall_readiness_percentage |
number |
no |
Overall readiness, 0 to 100. |
Batch
One uploaded claims file and the claims made from it. A batch can be deleted only before it is submitted, and it is then removed with its claims: no list or sync reports the removal, and GET of its id answers 404. So a client holding a batch with no submitted_at should re-read it by id to learn whether it still exists; a batch with submitted_at is never deleted.
-
auto_submit_requested
boolean
- Submit as soon as it validates.
-
claim_count
integer
- Claims in the batch.
-
claim_type
string
-
completed_at
string
- When processing finished.
-
error_message
string
- Why the batch failed, when it did.
-
failed_count
integer
- Claims refused.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
original_filename
string
- The uploaded file's name.
-
source
string
- Where the batch came from, e.g. upload.
-
status
string, required
- The batch's processing status, which the status filter matches. A delivered batch stays submitted: whether its claims were paid is on the claims (their status and paid fields), which change with their updated_at. completed and partially_completed occur only on sample (demo) batches.
-
submitted_at
string
- When the batch was sent to HCPF.
-
successful_count
integer
- Claims accepted.
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| auto_submit_requested |
boolean |
no |
Submit as soon as it validates. |
| claim_count |
integer |
no |
Claims in the batch. |
| claim_type |
string |
no |
|
| completed_at |
string |
no |
When processing finished. |
| error_message |
string |
no |
Why the batch failed, when it did. |
| failed_count |
integer |
no |
Claims refused. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| original_filename |
string |
no |
The uploaded file's name. |
| source |
string |
no |
Where the batch came from, e.g. upload. |
| status |
string |
yes |
The batch's processing status, which the status filter matches. A delivered batch stays submitted: whether its claims were paid is on the claims (their status and paid fields), which change with their updated_at. completed and partially_completed occur only on sample (demo) batches. |
| submitted_at |
string |
no |
When the batch was sent to HCPF. |
| successful_count |
integer |
no |
Claims accepted. |
| updated_at |
string |
no |
When the record last changed. |
BatchPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Batch, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Batch |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
BillingCode
A billing code a work order may carry, with the modifiers the Colorado fee schedules use. A work order also takes other modifiers in valid 837P format (two letters or digits), at most 4 and at most one program modifier; otherwise it answers 422 on modifiers.
-
code
string, required
- The HCPCS code.
-
modifiers
array of string, required
- The modifiers the fee schedules use; the same list for every code.
| Field |
Type |
Required |
Description |
| code |
string |
yes |
The HCPCS code. |
| modifiers |
array of string |
yes |
The modifiers the fee schedules use; the same list for every code. |
BillingCodePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of BillingCode, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of BillingCode |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Broadcast
-
delivery_method
string, required
- How it went out.
-
id
string, required
- The record's id.
-
recipient_count
integer, required
- Caregivers sent to.
-
recipient_scope
string
- Who it went to.
-
reply_count
integer
- Caregivers who texted back to it (#2567).
-
sent_at
string
- When it was sent (UTC).
-
skipped_count
integer
- Caregivers skipped: no contact for the method, or opted out of SMS.
-
yes_count
integer
- Of those, how many replies read as a yes.
| Field |
Type |
Required |
Description |
| delivery_method |
string |
yes |
How it went out. |
| id |
string |
yes |
The record's id. |
| recipient_count |
integer |
yes |
Caregivers sent to. |
| recipient_scope |
string |
no |
Who it went to. |
| reply_count |
integer |
no |
Caregivers who texted back to it (#2567). |
| sent_at |
string |
no |
When it was sent (UTC). |
| skipped_count |
integer |
no |
Caregivers skipped: no contact for the method, or opted out of SMS. |
| yes_count |
integer |
no |
Of those, how many replies read as a yes. |
BroadcastCreate
-
caregiver_ids
array of string
- pick: the caregivers to send to, whatever their status (former ones included). At most 1000.
-
delivery_method
string
- How to send it: email, sms or both. Leave it out for email.
-
include_former
boolean
- With tag: also caregivers no longer active. Leave it out for active only.
-
message
string, required
- The message.
-
recipient_scope
string
- Who to send it to. Leave it out for all, or for pick when caregiver_ids or tag is given.
-
tag
string
- pick: every caregiver carrying this tag (any case).
| Field |
Type |
Required |
Description |
| caregiver_ids |
array of string |
no |
pick: the caregivers to send to, whatever their status (former ones included). At most 1000. |
| delivery_method |
string |
no |
How to send it: email, sms or both. Leave it out for email. |
| include_former |
boolean |
no |
With tag: also caregivers no longer active. Leave it out for active only. |
| message |
string |
yes |
The message. |
| recipient_scope |
string |
no |
Who to send it to. Leave it out for all, or for pick when caregiver_ids or tag is given. |
| tag |
string |
no |
pick: every caregiver carrying this tag (any case). |
BroadcastPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].delivery_method
string, required
- How it went out.
-
data[].id
string, required
- The record's id.
-
data[].message
string
- What it said.
-
data[].recipient_count
integer, required
- Caregivers sent to.
-
data[].reply_count
integer
- Caregivers who texted back to it.
-
data[].sent_at
string
- When it was sent (UTC).
-
data[].skipped_count
integer
- Caregivers skipped: no contact for the method, or opted out of SMS.
-
data[].yes_count
integer
- Of those, how many replies read as a yes.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].delivery_method |
string |
yes |
How it went out. |
| data[].id |
string |
yes |
The record's id. |
| data[].message |
string |
no |
What it said. |
| data[].recipient_count |
integer |
yes |
Caregivers sent to. |
| data[].reply_count |
integer |
no |
Caregivers who texted back to it. |
| data[].sent_at |
string |
no |
When it was sent (UTC). |
| data[].skipped_count |
integer |
no |
Caregivers skipped: no contact for the method, or opted out of SMS. |
| data[].yes_count |
integer |
no |
Of those, how many replies read as a yes. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
BroadcastReply
-
caregiver_id
string, required
- The caregiver who replied.
-
caregiver_name
string
- The caregiver, last name first.
-
replied_at
string
- When it arrived (UTC).
-
reply
string, required
- Their latest text back.
-
yes
boolean, required
- Whether the reply reads as a yes.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver who replied. |
| caregiver_name |
string |
no |
The caregiver, last name first. |
| replied_at |
string |
no |
When it arrived (UTC). |
| reply |
string |
yes |
Their latest text back. |
| yes |
boolean |
yes |
Whether the reply reads as a yes. |
BroadcastReplyPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].caregiver_id
string, required
- The caregiver who replied.
-
data[].caregiver_name
string
- The caregiver, last name first.
-
data[].replied_at
string
- When it arrived (UTC).
-
data[].reply
string, required
- Their latest text back.
-
data[].yes
boolean, required
- Whether the reply reads as a yes.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].caregiver_id |
string |
yes |
The caregiver who replied. |
| data[].caregiver_name |
string |
no |
The caregiver, last name first. |
| data[].replied_at |
string |
no |
When it arrived (UTC). |
| data[].reply |
string |
yes |
Their latest text back. |
| data[].yes |
boolean |
yes |
Whether the reply reads as a yes. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
BroadcastSummary
-
delivery_method
string, required
- How it went out.
-
id
string, required
- The record's id.
-
message
string
- What it said.
-
recipient_count
integer, required
- Caregivers sent to.
-
reply_count
integer
- Caregivers who texted back to it.
-
sent_at
string
- When it was sent (UTC).
-
skipped_count
integer
- Caregivers skipped: no contact for the method, or opted out of SMS.
-
yes_count
integer
- Of those, how many replies read as a yes.
| Field |
Type |
Required |
Description |
| delivery_method |
string |
yes |
How it went out. |
| id |
string |
yes |
The record's id. |
| message |
string |
no |
What it said. |
| recipient_count |
integer |
yes |
Caregivers sent to. |
| reply_count |
integer |
no |
Caregivers who texted back to it. |
| sent_at |
string |
no |
When it was sent (UTC). |
| skipped_count |
integer |
no |
Caregivers skipped: no contact for the method, or opted out of SMS. |
| yes_count |
integer |
no |
Of those, how many replies read as a yes. |
CareLog
One caregiver's day for one client, for one service and shift, as the /care-logs list shows it, with its task counts.
-
attestation_skip_note
string
- The caregiver's note on that reason (required for other); null when none.
-
attestation_skip_reason
string
- Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given.
-
attestation_skipped_at
string
- When the reason was given; null when none was.
-
attestation_skipped_by_caregiver_id
string
- The caregiver who gave the reason; null when none was.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
finished_at
string
- When it was marked finished; null while open.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
- The day's notes.
-
record_state
string, required
- draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft).
-
replaces_id
string
- The voided care log this draft corrects; null when none.
-
service_date
string, required
- The day.
-
service_type
string
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4.
-
signed_at
string
- When it was first signed; null for a draft.
-
source
string
- Where it was captured: hcb_app, hcb_phone, office, paper_scan or import.
-
task_counts
object, required
-
task_counts.done
integer, required
- Tasks done.
-
task_counts.not_needed
integer, required
- Tasks not needed.
-
task_counts.refused
integer, required
- Tasks refused.
-
task_counts.unmarked
integer, required
- Tasks not marked yet.
-
time_in
string
- The entered start time, used only when no Visit is linked.
-
time_out
string
- The entered end time, used only when no Visit is linked.
-
updated_at
string
- When it last changed.
-
visit_id
string
- The Visit linked to the day, whose times are the care log's; null when none.
-
voided_at
string
- When it was voided; null unless voided.
| Field |
Type |
Required |
Description |
| attestation_skip_note |
string |
no |
The caregiver's note on that reason (required for other); null when none. |
| attestation_skip_reason |
string |
no |
Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given. |
| attestation_skipped_at |
string |
no |
When the reason was given; null when none was. |
| attestation_skipped_by_caregiver_id |
string |
no |
The caregiver who gave the reason; null when none was. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| finished_at |
string |
no |
When it was marked finished; null while open. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
The day's notes. |
| record_state |
string |
yes |
draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft). |
| replaces_id |
string |
no |
The voided care log this draft corrects; null when none. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
no |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| source |
string |
no |
Where it was captured: hcb_app, hcb_phone, office, paper_scan or import. |
| task_counts |
object |
yes |
|
| task_counts.done |
integer |
yes |
Tasks done. |
| task_counts.not_needed |
integer |
yes |
Tasks not needed. |
| task_counts.refused |
integer |
yes |
Tasks refused. |
| task_counts.unmarked |
integer |
yes |
Tasks not marked yet. |
| time_in |
string |
no |
The entered start time, used only when no Visit is linked. |
| time_out |
string |
no |
The entered end time, used only when no Visit is linked. |
| updated_at |
string |
no |
When it last changed. |
| visit_id |
string |
no |
The Visit linked to the day, whose times are the care log's; null when none. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
CareLogDetail
One care log as its /care-logs/:id screen shows it: the day, its tasks, its times, the differences from the plan to explain (warnings never refuse a save, a finish or a signature) and its live signatures.
-
attestation_skip_note
string
- The caregiver's note on that reason (required for other); null when none.
-
attestation_skip_reason
string
- Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given.
-
attestation_skipped_at
string
- When the reason was given; null when none was.
-
attestation_skipped_by_caregiver_id
string
- The caregiver who gave the reason; null when none was.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
finished_at
string
- When it was marked finished; null while open.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
- The day's notes.
-
record_state
string, required
- draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft).
-
replaced_by_id
string
- The draft that corrects this voided care log; null when none.
-
replaces_id
string
- The voided care log this draft corrects; null when none.
-
service_date
string, required
- The day.
-
service_type
string
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4.
-
signatures
array of object, required
- The live signatures, oldest first, without their images.
-
signatures[].channel
string
- Where it was captured.
-
signatures[].evidence_document_id
string
- The client's document holding the paper scan; null when none.
-
signatures[].id
string, required
- The signature.
-
signatures[].method
string, required
- How it was signed; paper_on_file for a paper signature the office marked as on file.
-
signatures[].role
string, required
- The line signed (client, caregiver, ...).
-
signatures[].signed_at
string, required
- When it was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When it was first signed; null for a draft.
-
source
string
- Where it was captured: hcb_app, hcb_phone, office, paper_scan or import.
-
tasks
array of object, required
- Planned tasks first, then those added off the plan.
-
tasks[].code
string
- The task's code.
-
tasks[].count
integer, required
- How many times.
-
tasks[].id
string, required
- The care log's task.
-
tasks[].name
string
- The task's name.
-
tasks[].planned
boolean, required
- Whether a Work Order in force planned it for the day; false for one added off the plan.
-
tasks[].reason_code
string
- Why it was refused, not needed or added.
-
tasks[].reason_note
string
- The reason in words.
-
tasks[].status
string
- done, refused or not_needed; null when unmarked.
-
tasks[].task_definition_id
string, required
- The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark).
-
time_in
string
- The entered start time, used only when no Visit is linked.
-
time_out
string
- The entered end time, used only when no Visit is linked.
-
times
object, required
-
times.end
string
- When it ended.
-
times.source
string, required
- visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked.
-
times.start
string
- When the day's care started.
-
updated_at
string
- When it last changed.
-
visit_id
string
- The Visit linked to the day, whose times are the care log's; null when none.
-
voided_at
string
- When it was voided; null unless voided.
-
warnings
array of object, required
- The differences from the plan the care log should explain.
-
warnings[].code
string, required
- What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save.
-
warnings[].message
string, required
- The warning in words.
-
warnings[].task_definition_id
string
- The task it is about; null for a warning about the day (times_missing).
| Field |
Type |
Required |
Description |
| attestation_skip_note |
string |
no |
The caregiver's note on that reason (required for other); null when none. |
| attestation_skip_reason |
string |
no |
Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given. |
| attestation_skipped_at |
string |
no |
When the reason was given; null when none was. |
| attestation_skipped_by_caregiver_id |
string |
no |
The caregiver who gave the reason; null when none was. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| finished_at |
string |
no |
When it was marked finished; null while open. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
The day's notes. |
| record_state |
string |
yes |
draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft). |
| replaced_by_id |
string |
no |
The draft that corrects this voided care log; null when none. |
| replaces_id |
string |
no |
The voided care log this draft corrects; null when none. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
no |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| signatures |
array of object |
yes |
The live signatures, oldest first, without their images. |
| signatures[].channel |
string |
no |
Where it was captured. |
| signatures[].evidence_document_id |
string |
no |
The client's document holding the paper scan; null when none. |
| signatures[].id |
string |
yes |
The signature. |
| signatures[].method |
string |
yes |
How it was signed; paper_on_file for a paper signature the office marked as on file. |
| signatures[].role |
string |
yes |
The line signed (client, caregiver, ...). |
| signatures[].signed_at |
string |
yes |
When it was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| source |
string |
no |
Where it was captured: hcb_app, hcb_phone, office, paper_scan or import. |
| tasks |
array of object |
yes |
Planned tasks first, then those added off the plan. |
| tasks[].code |
string |
no |
The task's code. |
| tasks[].count |
integer |
yes |
How many times. |
| tasks[].id |
string |
yes |
The care log's task. |
| tasks[].name |
string |
no |
The task's name. |
| tasks[].planned |
boolean |
yes |
Whether a Work Order in force planned it for the day; false for one added off the plan. |
| tasks[].reason_code |
string |
no |
Why it was refused, not needed or added. |
| tasks[].reason_note |
string |
no |
The reason in words. |
| tasks[].status |
string |
no |
done, refused or not_needed; null when unmarked. |
| tasks[].task_definition_id |
string |
yes |
The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark). |
| time_in |
string |
no |
The entered start time, used only when no Visit is linked. |
| time_out |
string |
no |
The entered end time, used only when no Visit is linked. |
| times |
object |
yes |
|
| times.end |
string |
no |
When it ended. |
| times.source |
string |
yes |
visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked. |
| times.start |
string |
no |
When the day's care started. |
| updated_at |
string |
no |
When it last changed. |
| visit_id |
string |
no |
The Visit linked to the day, whose times are the care log's; null when none. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
| warnings |
array of object |
yes |
The differences from the plan the care log should explain. |
| warnings[].code |
string |
yes |
What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save. |
| warnings[].message |
string |
yes |
The warning in words. |
| warnings[].task_definition_id |
string |
no |
The task it is about; null for a warning about the day (times_missing). |
CareLogPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CareLog, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CareLog |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CareLogPaperOnFile
-
document_id
string
- A document already on the client's file holding the paper scan; left out, the mark carries no scan.
| Field |
Type |
Required |
Description |
| document_id |
string |
no |
A document already on the client's file holding the paper scan; left out, the mark carries no scan. |
CareLogSignature
-
channel
string
- Where it was captured.
-
evidence_document_id
string
- The client's document holding the paper scan; null when none.
-
id
string, required
- The signature.
-
method
string, required
- How it was signed; paper_on_file for a paper signature the office marked as on file.
-
role
string, required
- The line signed (client, caregiver, ...).
-
signed_at
string, required
- When it was signed.
-
signer_name
string
- The name the line is signed under.
| Field |
Type |
Required |
Description |
| channel |
string |
no |
Where it was captured. |
| evidence_document_id |
string |
no |
The client's document holding the paper scan; null when none. |
| id |
string |
yes |
The signature. |
| method |
string |
yes |
How it was signed; paper_on_file for a paper signature the office marked as on file. |
| role |
string |
yes |
The line signed (client, caregiver, ...). |
| signed_at |
string |
yes |
When it was signed. |
| signer_name |
string |
no |
The name the line is signed under. |
CareLogStart
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
notes
string
- The day's notes.
-
service_date
string, required
- The day.
-
service_type
string, required
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4 (default 1).
-
time_in
string
- The start time, ISO 8601. Sent with time_out or notes, the start records the day: a care log already on the key with the same content is answered as it is, one with different content 409 stale.
-
time_out
string
- The end time, ISO 8601, at or after time_in.
-
visit_id
string
- The Visit to link: the agency's, of the same client, caregiver and day. Left out, the day's one such Visit is linked when exactly one exists.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| notes |
string |
no |
The day's notes. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
yes |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4 (default 1). |
| time_in |
string |
no |
The start time, ISO 8601. Sent with time_out or notes, the start records the day: a care log already on the key with the same content is answered as it is, one with different content 409 stale. |
| time_out |
string |
no |
The end time, ISO 8601, at or after time_in. |
| visit_id |
string |
no |
The Visit to link: the agency's, of the same client, caregiver and day. Left out, the day's one such Visit is linked when exactly one exists. |
CareLogTask
-
code
string
- The task's code.
-
count
integer, required
- How many times.
-
id
string, required
- The care log's task.
-
name
string
- The task's name.
-
planned
boolean, required
- Whether a Work Order in force planned it for the day; false for one added off the plan.
-
reason_code
string
- Why it was refused, not needed or added.
-
reason_note
string
- The reason in words.
-
status
string
- done, refused or not_needed; null when unmarked.
-
task_definition_id
string, required
- The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark).
| Field |
Type |
Required |
Description |
| code |
string |
no |
The task's code. |
| count |
integer |
yes |
How many times. |
| id |
string |
yes |
The care log's task. |
| name |
string |
no |
The task's name. |
| planned |
boolean |
yes |
Whether a Work Order in force planned it for the day; false for one added off the plan. |
| reason_code |
string |
no |
Why it was refused, not needed or added. |
| reason_note |
string |
no |
The reason in words. |
| status |
string |
no |
done, refused or not_needed; null when unmarked. |
| task_definition_id |
string |
yes |
The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark). |
CareLogTaskAdd
-
count
integer
- How many times; 1 when left out.
-
reason_code
string
- Why it was done off the plan.
-
reason_note
string
- The reason in words.
-
status
string
- Its status; done when left out.
-
task_definition_id
string, required
- The task to add: one of the agency's tasks or a system one.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; 1 when left out. |
| reason_code |
string |
no |
Why it was done off the plan. |
| reason_note |
string |
no |
The reason in words. |
| status |
string |
no |
Its status; done when left out. |
| task_definition_id |
string |
yes |
The task to add: one of the agency's tasks or a system one. |
CareLogTaskCounts
-
done
integer, required
- Tasks done.
-
not_needed
integer, required
- Tasks not needed.
-
refused
integer, required
- Tasks refused.
-
unmarked
integer, required
- Tasks not marked yet.
| Field |
Type |
Required |
Description |
| done |
integer |
yes |
Tasks done. |
| not_needed |
integer |
yes |
Tasks not needed. |
| refused |
integer |
yes |
Tasks refused. |
| unmarked |
integer |
yes |
Tasks not marked yet. |
CareLogTaskMark
-
count
integer
- How many times; unchanged when left out.
-
reason_code
string
- Why a task was refused or not needed; left out or null clears it, as a mark on the screen does.
-
reason_note
string
- The reason in words; left out or null clears it.
-
status
string, required
- The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; unchanged when left out. |
| reason_code |
string |
no |
Why a task was refused or not needed; left out or null clears it, as a mark on the screen does. |
| reason_note |
string |
no |
The reason in words; left out or null clears it. |
| status |
string |
yes |
The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing. |
CareLogTimes
-
end
string
- When it ended.
-
source
string, required
- visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked.
-
start
string
- When the day's care started.
| Field |
Type |
Required |
Description |
| end |
string |
no |
When it ended. |
| source |
string |
yes |
visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked. |
| start |
string |
no |
When the day's care started. |
CareLogUpdate
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
- The day's notes; null clears them.
-
time_in
string
- The start time, ISO 8601; used only when no Visit is linked. null clears it.
-
time_out
string
- The end time, ISO 8601, after time_in; used only when no Visit is linked. null clears it.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
The day's notes; null clears them. |
| time_in |
string |
no |
The start time, ISO 8601; used only when no Visit is linked. null clears it. |
| time_out |
string |
no |
The end time, ISO 8601, after time_in; used only when no Visit is linked. null clears it. |
CareLogWarning
-
code
string, required
- What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save.
-
message
string, required
- The warning in words.
-
task_definition_id
string
- The task it is about; null for a warning about the day (times_missing).
| Field |
Type |
Required |
Description |
| code |
string |
yes |
What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save. |
| message |
string |
yes |
The warning in words. |
| task_definition_id |
string |
no |
The task it is about; null for a warning about the day (times_missing). |
Caregiver
A person who delivers care for the agency.
-
address
string
-
cell_phone
string
-
city
string
-
date_of_birth
string
- Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
email
string
-
emergency_contact_name
string
- The person to call in an emergency, as the caregiver page shows it.
-
emergency_contact_phone
string
- The emergency contact's phone, 10 digits.
-
emergency_contact_relationship
string
- How the emergency contact is related to the caregiver.
-
employee_id
string
- The agency's own employee number.
-
end_of_employment_date
string
-
evv_enrolled_on
string
- The day this caregiver joins the agency's EVV pilot (US-121.8); null when not enrolled.
-
first_name
string, required
-
gender
string
-
hire_date
string
-
home_phone
string
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
last_name
string, required
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
middle_name
string
-
position
string
- The job title the agency gives the caregiver, as the agency writes it (Caregiver, PCW, Homemaker). Up to 200 characters.
-
ssn_masked
string
- The SSN as the page shows it, ***-**- and its last four digits; null when none is on file. The full SSN is never returned; send ssn on a create or update to set it.
-
state
string
-
status
string, required
-
text_status
string
- Whether the agency can text this caregiver, and if not why, as the Caregivers list's Texting column shows it (US-122.26): the first that holds of no_cell_phone, opted_out (they replied STOP), no_consent, not_verified and phone_changed (open-shift texts only, and only while the agency has open shifts on), last_text_failed (the newest open-shift text failed), else can_text. Read-only: it follows the caregiver's phone, consent and opt-out.
-
text_status_detail
string
- opted_out: the day they replied STOP (YYYY-MM-DD), null when none was recorded. last_text_failed: the provider's reason. Null for every other value.
-
updated_at
string
- When the record last changed.
-
worker_classification
string
- w2, a W-2 employee (the default), or 1099, an independent contractor: payroll pays a contractor no overtime and leaves them out of the ADP file. Payroll data: null for a credential without Payroll → View.
-
zip
string
- 5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits.
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| cell_phone |
string |
no |
|
| city |
string |
no |
|
| date_of_birth |
string |
no |
Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| email |
string |
no |
|
| emergency_contact_name |
string |
no |
The person to call in an emergency, as the caregiver page shows it. |
| emergency_contact_phone |
string |
no |
The emergency contact's phone, 10 digits. |
| emergency_contact_relationship |
string |
no |
How the emergency contact is related to the caregiver. |
| employee_id |
string |
no |
The agency's own employee number. |
| end_of_employment_date |
string |
no |
|
| evv_enrolled_on |
string |
no |
The day this caregiver joins the agency's EVV pilot (US-121.8); null when not enrolled. |
| first_name |
string |
yes |
|
| gender |
string |
no |
|
| hire_date |
string |
no |
|
| home_phone |
string |
no |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| last_name |
string |
yes |
|
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| middle_name |
string |
no |
|
| position |
string |
no |
The job title the agency gives the caregiver, as the agency writes it (Caregiver, PCW, Homemaker). Up to 200 characters. |
| ssn_masked |
string |
no |
The SSN as the page shows it, ***-**- and its last four digits; null when none is on file. The full SSN is never returned; send ssn on a create or update to set it. |
| state |
string |
no |
|
| status |
string |
yes |
|
| text_status |
string |
no |
Whether the agency can text this caregiver, and if not why, as the Caregivers list's Texting column shows it (US-122.26): the first that holds of no_cell_phone, opted_out (they replied STOP), no_consent, not_verified and phone_changed (open-shift texts only, and only while the agency has open shifts on), last_text_failed (the newest open-shift text failed), else can_text. Read-only: it follows the caregiver's phone, consent and opt-out. |
| text_status_detail |
string |
no |
opted_out: the day they replied STOP (YYYY-MM-DD), null when none was recorded. last_text_failed: the provider's reason. Null for every other value. |
| updated_at |
string |
no |
When the record last changed. |
| worker_classification |
string |
no |
w2, a W-2 employee (the default), or 1099, an independent contractor: payroll pays a contractor no overtime and leaves them out of the ADP file. Payroll data: null for a credential without Payroll → View. |
| zip |
string |
no |
5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits. |
CaregiverAppPin
-
new_pin
string, required
- The PIN.
| Field |
Type |
Required |
Description |
| new_pin |
string |
yes |
The PIN. |
CaregiverBulkResult
-
caregivers
integer, required
- Active caregivers it covered.
-
records
integer, required
- Records written.
-
replaced
integer
- Existing dates it updated.
-
skipped
integer
- Records left as they were.
| Field |
Type |
Required |
Description |
| caregivers |
integer |
yes |
Active caregivers it covered. |
| records |
integer |
yes |
Records written. |
| replaced |
integer |
no |
Existing dates it updated. |
| skipped |
integer |
no |
Records left as they were. |
CaregiverCompliance
One caregiver's compliance: training by course, vaccinations by year, the annual evaluation and the credential dates. Never the compliance record's notes or custom items.
-
caregiver_name
string
- The caregiver's name.
-
credentials
object
- Credential dates by credential (criminal_background, dora, caps, driver_license, main_training).
-
evaluation
object
-
evaluation.days_since_last
integer
- Days since the last evaluation.
-
evaluation.last_evaluation_date
string
- The last evaluation.
-
evaluation.status
string
- The annual evaluation's standing.
-
id
string, required
- The record's id.
-
needs_attention
array of object
- What needs attention, as the caregiver page's header counts it: each dated credential expired or expiring within 30 days, each training course expiring, expired or missing, this year's flu record when neither vaccinated nor medically declined, and the annual evaluation when expiring, overdue or never done. Empty when every paper is current.
-
needs_attention[].item
string
- The credential (criminal_background, dora, caps, driver_license, main_training, or credentials when there is no compliance record), the training course, flu or evaluation.
-
needs_attention[].state
string
- expired, expiring, missing, no_record, overdue, never_evaluated, or the flu record's status.
-
oig
object
- The latest OIG exclusion check, as oig_screening_status reads it.
-
oig.checked_on
string
- When it was checked; null when never.
-
oig.result
string
- clear, review or excluded; null when never checked.
-
oig.status
string
- current: clear within the monthly window; overdue: the last clear check is older; missing: never checked; review: a possible match not yet compared; excluded: on the list.
-
training
object
- Training standing by course.
-
vaccinations
array of object
-
vaccinations[].status
string
- Vaccinated, declined, and so on.
-
vaccinations[].type
string
- The vaccine.
-
vaccinations[].vaccination_date
string
- When.
-
vaccinations[].year
integer
- The year.
| Field |
Type |
Required |
Description |
| caregiver_name |
string |
no |
The caregiver's name. |
| credentials |
object |
no |
Credential dates by credential (criminal_background, dora, caps, driver_license, main_training). |
| evaluation |
object |
no |
|
| evaluation.days_since_last |
integer |
no |
Days since the last evaluation. |
| evaluation.last_evaluation_date |
string |
no |
The last evaluation. |
| evaluation.status |
string |
no |
The annual evaluation's standing. |
| id |
string |
yes |
The record's id. |
| needs_attention |
array of object |
no |
What needs attention, as the caregiver page's header counts it: each dated credential expired or expiring within 30 days, each training course expiring, expired or missing, this year's flu record when neither vaccinated nor medically declined, and the annual evaluation when expiring, overdue or never done. Empty when every paper is current. |
| needs_attention[].item |
string |
no |
The credential (criminal_background, dora, caps, driver_license, main_training, or credentials when there is no compliance record), the training course, flu or evaluation. |
| needs_attention[].state |
string |
no |
expired, expiring, missing, no_record, overdue, never_evaluated, or the flu record's status. |
| oig |
object |
no |
The latest OIG exclusion check, as oig_screening_status reads it. |
| oig.checked_on |
string |
no |
When it was checked; null when never. |
| oig.result |
string |
no |
clear, review or excluded; null when never checked. |
| oig.status |
string |
no |
current: clear within the monthly window; overdue: the last clear check is older; missing: never checked; review: a possible match not yet compared; excluded: on the list. |
| training |
object |
no |
Training standing by course. |
| vaccinations |
array of object |
no |
|
| vaccinations[].status |
string |
no |
Vaccinated, declined, and so on. |
| vaccinations[].type |
string |
no |
The vaccine. |
| vaccinations[].vaccination_date |
string |
no |
When. |
| vaccinations[].year |
integer |
no |
The year. |
CaregiverComplianceInput
-
caps_date
string
- As the Compliance tab names it.
-
caps_expiry
string
- As the Compliance tab names it.
-
criminal_background_date
string
- As the Compliance tab names it.
-
criminal_background_expiry
string
- As the Compliance tab names it.
-
custom
object
- The agency's custom checklist items by key, each {date, expiry, completed}; the keys sent are set and the others kept.
-
dora_date
string
- As the Compliance tab names it.
-
dora_expiry
string
- As the Compliance tab names it.
-
driver_license_expiry
string
- As the Compliance tab names it.
-
lock_version
integer
- On a change: the lock_version it was read with.
-
main_training_date
string
- As the Compliance tab names it.
-
main_training_expiry
string
- As the Compliance tab names it.
-
notes
string
- Notes, up to 2000 characters.
| Field |
Type |
Required |
Description |
| caps_date |
string |
no |
As the Compliance tab names it. |
| caps_expiry |
string |
no |
As the Compliance tab names it. |
| criminal_background_date |
string |
no |
As the Compliance tab names it. |
| criminal_background_expiry |
string |
no |
As the Compliance tab names it. |
| custom |
object |
no |
The agency's custom checklist items by key, each {date, expiry, completed}; the keys sent are set and the others kept. |
| dora_date |
string |
no |
As the Compliance tab names it. |
| dora_expiry |
string |
no |
As the Compliance tab names it. |
| driver_license_expiry |
string |
no |
As the Compliance tab names it. |
| lock_version |
integer |
no |
On a change: the lock_version it was read with. |
| main_training_date |
string |
no |
As the Compliance tab names it. |
| main_training_expiry |
string |
no |
As the Compliance tab names it. |
| notes |
string |
no |
Notes, up to 2000 characters. |
CaregiverComplianceRecord
-
caps_date
string
- As the Compliance tab names it.
-
caps_expiry
string
- As the Compliance tab names it.
-
caregiver_id
string, required
- The caregiver.
-
criminal_background_date
string
- As the Compliance tab names it.
-
criminal_background_expiry
string
- As the Compliance tab names it.
-
custom_items
object
- The agency's custom checklist items by key, each {date, expiry, completed}; the keys sent are set and the others kept.
-
dora_date
string
- As the Compliance tab names it.
-
dora_expiry
string
- As the Compliance tab names it.
-
driver_license_expiry
string
- As the Compliance tab names it.
-
id
string, required
- The record's id.
-
lock_version
integer, required
- Its version; send it back to change it.
-
main_training_date
string
- As the Compliance tab names it.
-
main_training_expiry
string
- As the Compliance tab names it.
-
notes
string
- Notes, up to 2000 characters.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| caps_date |
string |
no |
As the Compliance tab names it. |
| caps_expiry |
string |
no |
As the Compliance tab names it. |
| caregiver_id |
string |
yes |
The caregiver. |
| criminal_background_date |
string |
no |
As the Compliance tab names it. |
| criminal_background_expiry |
string |
no |
As the Compliance tab names it. |
| custom_items |
object |
no |
The agency's custom checklist items by key, each {date, expiry, completed}; the keys sent are set and the others kept. |
| dora_date |
string |
no |
As the Compliance tab names it. |
| dora_expiry |
string |
no |
As the Compliance tab names it. |
| driver_license_expiry |
string |
no |
As the Compliance tab names it. |
| id |
string |
yes |
The record's id. |
| lock_version |
integer |
yes |
Its version; send it back to change it. |
| main_training_date |
string |
no |
As the Compliance tab names it. |
| main_training_expiry |
string |
no |
As the Compliance tab names it. |
| notes |
string |
no |
Notes, up to 2000 characters. |
| updated_at |
string |
no |
When it last changed. |
CaregiverEvaluation
One evaluation of a caregiver; at most one of a type a day.
-
caregiver_id
string, required
- The caregiver evaluated.
-
evaluation_date
string, required
- The day of the evaluation.
-
evaluation_type
string, required
- The kind of evaluation.
-
evaluator_name
string
- Who evaluated.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was made.
-
rating
string
- The rating.
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver evaluated. |
| evaluation_date |
string |
yes |
The day of the evaluation. |
| evaluation_type |
string |
yes |
The kind of evaluation. |
| evaluator_name |
string |
no |
Who evaluated. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was made. |
| rating |
string |
no |
The rating. |
| updated_at |
string |
no |
When the record last changed. |
CaregiverEvaluationInput
An evaluation's fields. Evaluations carry no lock_version: an update locks and re-reads the row and must change something. One on the date and type of another evaluation is 422 already_recorded, with that one's id in details.evaluation_id.
-
evaluation_date
string
- The day of the evaluation.
-
evaluation_type
string
- The kind of evaluation.
-
evaluator_name
string
- Who evaluated.
-
notes
string
- Notes. Written, never returned.
-
rating
string
- The rating.
| Field |
Type |
Required |
Description |
| evaluation_date |
string |
no |
The day of the evaluation. |
| evaluation_type |
string |
no |
The kind of evaluation. |
| evaluator_name |
string |
no |
Who evaluated. |
| notes |
string |
no |
Notes. Written, never returned. |
| rating |
string |
no |
The rating. |
CaregiverEvaluationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CaregiverEvaluation, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CaregiverEvaluation |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverFileChecklist
-
caregiver_id
string, required
- The caregiver.
-
completed
integer
- How many items are done.
-
id
string, required
- The record's id.
-
items
array of object, required
- The agency's active items, in its order.
-
items[].completed
boolean, required
- Whether it is done.
-
items[].date
string
- Its date, as entered.
-
items[].key
string, required
- The item's key.
-
items[].notes
string
- Its notes.
-
items[].text
string, required
- What it asks for.
-
last_reviewed_at
string
- When it was last reviewed.
-
lock_version
integer, required
- Its version.
-
percentage
number
- completed of total, in percent.
-
reviewed_by_id
string
- Who reviewed it.
-
total
integer
- How many items there are.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| completed |
integer |
no |
How many items are done. |
| id |
string |
yes |
The record's id. |
| items |
array of object |
yes |
The agency's active items, in its order. |
| items[].completed |
boolean |
yes |
Whether it is done. |
| items[].date |
string |
no |
Its date, as entered. |
| items[].key |
string |
yes |
The item's key. |
| items[].notes |
string |
no |
Its notes. |
| items[].text |
string |
yes |
What it asks for. |
| last_reviewed_at |
string |
no |
When it was last reviewed. |
| lock_version |
integer |
yes |
Its version. |
| percentage |
number |
no |
completed of total, in percent. |
| reviewed_by_id |
string |
no |
Who reviewed it. |
| total |
integer |
no |
How many items there are. |
CaregiverFileChecklistItem
-
completed
boolean, required
- Whether it is done.
-
date
string
- Its date, as entered.
-
key
string, required
- The item's key.
-
notes
string
- Its notes.
-
text
string, required
- What it asks for.
| Field |
Type |
Required |
Description |
| completed |
boolean |
yes |
Whether it is done. |
| date |
string |
no |
Its date, as entered. |
| key |
string |
yes |
The item's key. |
| notes |
string |
no |
Its notes. |
| text |
string |
yes |
What it asks for. |
CaregiverFileChecklistItemUpdate
-
completed
boolean
- Whether it is done.
-
date
string
- Its date; blank clears it.
-
notes
string
- Its notes; blank clears them.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Whether it is done. |
| date |
string |
no |
Its date; blank clears it. |
| notes |
string |
no |
Its notes; blank clears them. |
CaregiverFileChecklistReview
-
lock_version
integer
- The lock_version it was read with.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
no |
The lock_version it was read with. |
CaregiverFileChecklistUpdate
-
items
object, required
- Item key => {completed, date, notes}; a blank date or note clears it. Keys are get_caregiver_file_checklist's.
| Field |
Type |
Required |
Description |
| items |
object |
yes |
Item key => {completed, date, notes}; a blank date or note clears it. Keys are get_caregiver_file_checklist's. |
CaregiverInput
Fields to set. A create needs first_name and last_name. An update sends only what changes, plus the lock_version it read (required).
-
address
string
-
cell_phone
string
-
city
string
-
date_of_birth
string
- Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text.
-
email
string
-
emergency_contact_name
string
- The person to call in an emergency, as the caregiver page shows it.
-
emergency_contact_phone
string
- The emergency contact's phone, 10 digits.
-
emergency_contact_relationship
string
- How the emergency contact is related to the caregiver.
-
employee_id
string
- The agency's own employee number.
-
end_of_employment_date
string
-
evv_enrolled_on
string
- The day this caregiver joins the agency's EVV pilot (US-121.8); null when not enrolled.
-
first_name
string
-
gender
string
-
hire_date
string
-
home_phone
string
-
last_name
string
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
middle_name
string
-
position
string
- The job title the agency gives the caregiver, as the agency writes it (Caregiver, PCW, Homemaker). Up to 200 characters.
-
ssn
string
- The full SSN, 9 digits, dashes allowed; null clears it. Answers show only ssn_masked.
-
state
string
-
status
string
-
worker_classification
string
- w2 or 1099. Payroll data: written only for a credential holding Payroll → Manage, and left out of the write otherwise, the rest of the body saving; a body carrying nothing else is refused 403 naming payroll.manage.
-
zip
string
- 5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits.
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| cell_phone |
string |
no |
|
| city |
string |
no |
|
| date_of_birth |
string |
no |
Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text. |
| email |
string |
no |
|
| emergency_contact_name |
string |
no |
The person to call in an emergency, as the caregiver page shows it. |
| emergency_contact_phone |
string |
no |
The emergency contact's phone, 10 digits. |
| emergency_contact_relationship |
string |
no |
How the emergency contact is related to the caregiver. |
| employee_id |
string |
no |
The agency's own employee number. |
| end_of_employment_date |
string |
no |
|
| evv_enrolled_on |
string |
no |
The day this caregiver joins the agency's EVV pilot (US-121.8); null when not enrolled. |
| first_name |
string |
no |
|
| gender |
string |
no |
|
| hire_date |
string |
no |
|
| home_phone |
string |
no |
|
| last_name |
string |
no |
|
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| middle_name |
string |
no |
|
| position |
string |
no |
The job title the agency gives the caregiver, as the agency writes it (Caregiver, PCW, Homemaker). Up to 200 characters. |
| ssn |
string |
no |
The full SSN, 9 digits, dashes allowed; null clears it. Answers show only ssn_masked. |
| state |
string |
no |
|
| status |
string |
no |
|
| worker_classification |
string |
no |
w2 or 1099. Payroll data: written only for a credential holding Payroll → Manage, and left out of the write otherwise, the rest of the body saving; a body carrying nothing else is refused 403 naming payroll.manage. |
| zip |
string |
no |
5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits. |
CaregiverNote
A note in a caregiver's communication log. compliance_relevant marks one that belongs in the caregiver's compliance file. written_via names the channel that last changed its text: mcp or api, or none for the HomeCareBilling app.
-
attachment_count
integer
- How many files are attached; the files are not returned.
-
caregiver_id
string, required
- The caregiver the note is about.
-
compliance_relevant
boolean
- Whether it belongs in the compliance file.
-
contact_type
string, required
- How the contact happened.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the note was created.
-
manager_initials
string
- The initials of who took the note (taken by).
-
note_date
string, required
- The day of the contact.
-
note_text
string, required
- What was said or done.
-
time_of_contact
string
- The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone).
-
updated_at
string
- When the note last changed.
-
written_via
string
- The channel that last changed the note's text (mcp, api); none for the HomeCareBilling app.
| Field |
Type |
Required |
Description |
| attachment_count |
integer |
no |
How many files are attached; the files are not returned. |
| caregiver_id |
string |
yes |
The caregiver the note is about. |
| compliance_relevant |
boolean |
no |
Whether it belongs in the compliance file. |
| contact_type |
string |
yes |
How the contact happened. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the note was created. |
| manager_initials |
string |
no |
The initials of who took the note (taken by). |
| note_date |
string |
yes |
The day of the contact. |
| note_text |
string |
yes |
What was said or done. |
| time_of_contact |
string |
no |
The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone). |
| updated_at |
string |
no |
When the note last changed. |
| written_via |
string |
no |
The channel that last changed the note's text (mcp, api); none for the HomeCareBilling app. |
CaregiverNoteInput
Fields to set. A create needs note_date, contact_type and note_text; manager_initials defaults to the API key's user's initials. An update sends only what changes, and must change something. Notes carry no lock_version.
-
compliance_relevant
boolean
- Whether it belongs in the compliance file.
-
contact_type
string
- How the contact happened.
-
manager_initials
string
- The initials of who took the note (taken by).
-
note_date
string
- The day of the contact.
-
note_text
string
- What was said or done.
-
time_of_contact
string
- The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone).
| Field |
Type |
Required |
Description |
| compliance_relevant |
boolean |
no |
Whether it belongs in the compliance file. |
| contact_type |
string |
no |
How the contact happened. |
| manager_initials |
string |
no |
The initials of who took the note (taken by). |
| note_date |
string |
no |
The day of the contact. |
| note_text |
string |
no |
What was said or done. |
| time_of_contact |
string |
no |
The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone). |
CaregiverNotePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CaregiverNote, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CaregiverNote |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Caregiver, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Caregiver |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverPayRate
-
caregiver_id
string, required
- The caregiver.
-
client_id
string
- The client a work rate is for; null is the general rate.
-
effective_date
string, required
- When it starts.
-
end_date
string
- When a newer rate of its type ended it.
-
id
string, required
- The record's id.
-
rate
string, required
- Dollars an hour.
-
rate_type
string, required
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
no |
The client a work rate is for; null is the general rate. |
| effective_date |
string |
yes |
When it starts. |
| end_date |
string |
no |
When a newer rate of its type ended it. |
| id |
string |
yes |
The record's id. |
| rate |
string |
yes |
Dollars an hour. |
| rate_type |
string |
yes |
|
CaregiverPayRateCreate
-
client_id
string
- A work rate for this one client: that client's hours are paid at it instead of the general work rate. Absent or null is the general rate.
-
effective_date
string, required
- When it starts, YYYY-MM-DD.
-
rate
string, required
- Dollars an hour, e.g. 18.50.
-
rate_type
string, required
- The kind of rate.
| Field |
Type |
Required |
Description |
| client_id |
string |
no |
A work rate for this one client: that client's hours are paid at it instead of the general work rate. Absent or null is the general rate. |
| effective_date |
string |
yes |
When it starts, YYYY-MM-DD. |
| rate |
string |
yes |
Dollars an hour, e.g. 18.50. |
| rate_type |
string |
yes |
The kind of rate. |
CaregiverPayRatePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].caregiver_id
string, required
- The caregiver.
-
data[].client_id
string
- The client a work rate is for; null is the general rate.
-
data[].effective_date
string, required
- When it starts.
-
data[].end_date
string
- When a newer rate of its type ended it.
-
data[].id
string, required
- The record's id.
-
data[].rate
string, required
- Dollars an hour.
-
data[].rate_type
string, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].caregiver_id |
string |
yes |
The caregiver. |
| data[].client_id |
string |
no |
The client a work rate is for; null is the general rate. |
| data[].effective_date |
string |
yes |
When it starts. |
| data[].end_date |
string |
no |
When a newer rate of its type ended it. |
| data[].id |
string |
yes |
The record's id. |
| data[].rate |
string |
yes |
Dollars an hour. |
| data[].rate_type |
string |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverPinStatus
-
app_pin_set
boolean
- Whether the caregiver has an app PIN.
-
caregiver_id
string, required
- The caregiver.
-
telephony_pin_set
boolean
- Whether the caregiver has a telephony PIN (the PIN is never returned).
| Field |
Type |
Required |
Description |
| app_pin_set |
boolean |
no |
Whether the caregiver has an app PIN. |
| caregiver_id |
string |
yes |
The caregiver. |
| telephony_pin_set |
boolean |
no |
Whether the caregiver has a telephony PIN (the PIN is never returned). |
CaregiverRestored
-
data
Caregiver, required
-
meta
object, required
-
meta.new_pin
string
- The reissued PIN, when pin_resolution is regenerated.
-
meta.pin_resolution
string, required
- What happened to the PIN.
| Field |
Type |
Required |
Description |
| data |
Caregiver |
yes |
|
| meta |
object |
yes |
|
| meta.new_pin |
string |
no |
The reissued PIN, when pin_resolution is regenerated. |
| meta.pin_resolution |
string |
yes |
What happened to the PIN. |
CaregiverSession
A device token for the caregiver app. Send it as Authorization: Bearer on every /api/v1/me request. It is shown once and expires at expires_at; sign in again after that.
-
caregiver
Me, required
-
expires_at
string, required
- When the token stops working.
-
token
string, required
- The device token. Store it in the device's secure storage.
| Field |
Type |
Required |
Description |
| caregiver |
Me |
yes |
|
| expires_at |
string |
yes |
When the token stops working. |
| token |
string |
yes |
The device token. Store it in the device's secure storage. |
CaregiverSessionInput
-
agency_code
string, required
- The agency's code, as on the caregiver's login card.
-
device_id
string, required
- A stable id the app generates once per install; the agency sees it in the caregiver's device list.
-
employee_id
string, required
- The caregiver's employee id at the agency.
-
pin
string, required
- The caregiver's PIN.
| Field |
Type |
Required |
Description |
| agency_code |
string |
yes |
The agency's code, as on the caregiver's login card. |
| device_id |
string |
yes |
A stable id the app generates once per install; the agency sees it in the caregiver's device list. |
| employee_id |
string |
yes |
The caregiver's employee id at the agency. |
| pin |
string |
yes |
The caregiver's PIN. |
CaregiverStatusesUpdate
-
caregiver_ids
array of string, required
- The caregivers to set, at most 200, from find_caregiver or the caregivers list.
-
status
string, required
- The status to set on every caregiver named.
| Field |
Type |
Required |
Description |
| caregiver_ids |
array of string |
yes |
The caregivers to set, at most 200, from find_caregiver or the caregivers list. |
| status |
string |
yes |
The status to set on every caregiver named. |
CaregiverStatusesUpdateResult
-
failed
array of object, required
- Not set, each with the reason in words: an id that is not this agency's caregiver (name null), an archived caregiver, or what the caregiver's card refused.
-
failed[].id
string, required
- The id as sent.
-
failed[].name
string, required
- Last, First; null when no caregiver was found.
-
failed[].reason
string, required
- Why it was not set, in words.
-
updated
integer, required
- Caregivers that now hold the status, those that already did included (no audit row for them).
| Field |
Type |
Required |
Description |
| failed |
array of object |
yes |
Not set, each with the reason in words: an id that is not this agency's caregiver (name null), an archived caregiver, or what the caregiver's card refused. |
| failed[].id |
string |
yes |
The id as sent. |
| failed[].name |
string |
yes |
Last, First; null when no caregiver was found. |
| failed[].reason |
string |
yes |
Why it was not set, in words. |
| updated |
integer |
yes |
Caregivers that now hold the status, those that already did included (no audit row for them). |
CaregiverTraining
One training course for one year. A caregiver has at most one record per course a year (an "other" course has one slot a year).
-
caregiver_id
string, required
- The caregiver trained.
-
completed
boolean
- Whether the course is completed.
-
completed_date
string
- When it was completed; cleared when marked not completed.
-
expiry_date
string
- When the training expires.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was made.
-
training_type
string, required
- The course.
-
training_type_other
string
- The course's name, for an "other" course.
-
updated_at
string
- When the record last changed.
-
year
integer, required
- The training year.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver trained. |
| completed |
boolean |
no |
Whether the course is completed. |
| completed_date |
string |
no |
When it was completed; cleared when marked not completed. |
| expiry_date |
string |
no |
When the training expires. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was made. |
| training_type |
string |
yes |
The course. |
| training_type_other |
string |
no |
The course's name, for an "other" course. |
| updated_at |
string |
no |
When the record last changed. |
| year |
integer |
yes |
The training year. |
CaregiverTrainingCreate
Records one course for one year. A course already on file for that year is 422 already_recorded, with its id in details.training_id.
-
completed
boolean
- Whether the course is completed.
-
completed_date
string
- When it was completed; cleared when marked not completed.
-
expiry_date
string
- When the training expires. On a completed course, null or an empty string sets it to a year after completed_date; a course not completed has none.
-
notes
string
- Notes. Written, never returned.
-
training_type
string, required
- The course.
-
training_type_other
string
- The course's name, for an "other" course.
-
year
integer, required
- The training year.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Whether the course is completed. |
| completed_date |
string |
no |
When it was completed; cleared when marked not completed. |
| expiry_date |
string |
no |
When the training expires. On a completed course, null or an empty string sets it to a year after completed_date; a course not completed has none. |
| notes |
string |
no |
Notes. Written, never returned. |
| training_type |
string |
yes |
The course. |
| training_type_other |
string |
no |
The course's name, for an "other" course. |
| year |
integer |
yes |
The training year. |
CaregiverTrainingInput
Fields to change. Training records carry no lock_version: the row is locked and re-read for the change, which must change something. Marking a course not completed clears its completion date.
-
completed
boolean
- Whether the course is completed.
-
completed_date
string
- When it was completed; cleared when marked not completed.
-
expiry_date
string
- When the training expires. On a completed course, null or an empty string sets it to a year after completed_date; a course not completed has none.
-
notes
string
- Notes. Written, never returned.
-
training_type_other
string
- The course's name, for an "other" course.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Whether the course is completed. |
| completed_date |
string |
no |
When it was completed; cleared when marked not completed. |
| expiry_date |
string |
no |
When the training expires. On a completed course, null or an empty string sets it to a year after completed_date; a course not completed has none. |
| notes |
string |
no |
Notes. Written, never returned. |
| training_type_other |
string |
no |
The course's name, for an "other" course. |
CaregiverTrainingPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CaregiverTraining, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CaregiverTraining |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverVaccination
One vaccination for one year and type; a caregiver has at most one per type a year, and it is addressed by year and type, never by id.
-
caregiver_id
string, required
- The caregiver.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was made.
-
status
string
- Vaccinated, declined, and so on.
-
updated_at
string
- When the record last changed.
-
vaccination_date
string
- When; only a vaccinated record has one.
-
vaccination_type
string, required
- The vaccine.
-
year
integer, required
- The vaccination year.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was made. |
| status |
string |
no |
Vaccinated, declined, and so on. |
| updated_at |
string |
no |
When the record last changed. |
| vaccination_date |
string |
no |
When; only a vaccinated record has one. |
| vaccination_type |
string |
yes |
The vaccine. |
| year |
integer |
yes |
The vaccination year. |
CaregiverVaccinationInput
Records the vaccination for year and vaccination_type: 201 when none was recorded (status is then required), 200 when it updates the one recorded, which must change something. A status other than vaccinated clears the date unless one is sent.
-
notes
string
- Notes. Written, never returned.
-
status
string
- Vaccinated, declined, and so on.
-
vaccination_date
string
- When; only a vaccinated record has one.
-
vaccination_type
string, required
- The vaccine.
-
year
integer, required
- The vaccination year.
| Field |
Type |
Required |
Description |
| notes |
string |
no |
Notes. Written, never returned. |
| status |
string |
no |
Vaccinated, declined, and so on. |
| vaccination_date |
string |
no |
When; only a vaccinated record has one. |
| vaccination_type |
string |
yes |
The vaccine. |
| year |
integer |
yes |
The vaccination year. |
CaregiverVaccinationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CaregiverVaccination, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CaregiverVaccination |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CaregiverW4Sent
-
id
string, required
- The record's id.
-
w4_changed_at
string, required
- null: the payroll processor has been sent the change.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record's id. |
| w4_changed_at |
string |
yes |
null: the payroll processor has been sent the change. |
CaregiverW4SentInput
-
w4_changed_at
string
- The time of the change as it was read; refused with 409 stale_record when the W-4 changed again since. Not sent: the change waiting now is marked sent.
| Field |
Type |
Required |
Description |
| w4_changed_at |
string |
no |
The time of the change as it was read; refused with 409 stale_record when the W-4 changed again since. Not sent: the change waiting now is marked sent. |
CaregiverWriteResult
-
data
Caregiver, required
-
warnings
array of object, required
- What the act was done with that the agency may want to fix; usually empty. Never a refusal: the act was done.
-
warnings[].fix
object
- Where it is fixed, when a page fixes it.
-
warnings[].fix.label
string, required
- What the link says.
-
warnings[].fix.path
string, required
- The app route that fixes it.
-
warnings[].id
string, required
- The rule that raised it, stable, e.g. client_care.medicaid_id_pending.
-
warnings[].message
string, required
- For a person to read.
| Field |
Type |
Required |
Description |
| data |
Caregiver |
yes |
|
| warnings |
array of object |
yes |
What the act was done with that the agency may want to fix; usually empty. Never a refusal: the act was done. |
| warnings[].fix |
object |
no |
Where it is fixed, when a page fixes it. |
| warnings[].fix.label |
string |
yes |
What the link says. |
| warnings[].fix.path |
string |
yes |
The app route that fixes it. |
| warnings[].id |
string |
yes |
The rule that raised it, stable, e.g. client_care.medicaid_id_pending. |
| warnings[].message |
string |
yes |
For a person to read. |
CashAdvance
-
advance_date
string
-
amount
string
- The amount advanced.
-
caregiver_id
string
- The record's id.
-
caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
check_number
string
- The check the advance was paid by.
-
deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
id
string
- The record's id.
-
reason
string
- Why it was advanced, as typed.
-
remaining_balance
string
- What is still owed.
-
status
string
- outstanding, partially_repaid, fully_repaid or written_off.
| Field |
Type |
Required |
Description |
| advance_date |
string |
no |
|
| amount |
string |
no |
The amount advanced. |
| caregiver_id |
string |
no |
The record's id. |
| caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| check_number |
string |
no |
The check the advance was paid by. |
| deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| id |
string |
no |
The record's id. |
| reason |
string |
no |
Why it was advanced, as typed. |
| remaining_balance |
string |
no |
What is still owed. |
| status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
CashAdvancePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].advance_date
string
-
data[].amount
string
- The amount advanced.
-
data[].caregiver_id
string
- The record's id.
-
data[].caregiver_name
string
- "Last, First". In GET /cash-advances; a write's answer leaves it out.
-
data[].check_number
string
- The check the advance was paid by.
-
data[].deduct_in_month
string
- The 1st of the payroll month the advance is deducted in.
-
data[].id
string
- The record's id.
-
data[].reason
string
- Why it was advanced, as typed.
-
data[].remaining_balance
string
- What is still owed.
-
data[].status
string
- outstanding, partially_repaid, fully_repaid or written_off.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
-
totals
object, required
- Over every advance the filters match, not this page.
-
totals.amount
string
- The amounts advanced.
-
totals.remaining_balance
string
- What is still owed.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].advance_date |
string |
no |
|
| data[].amount |
string |
no |
The amount advanced. |
| data[].caregiver_id |
string |
no |
The record's id. |
| data[].caregiver_name |
string |
no |
"Last, First". In GET /cash-advances; a write's answer leaves it out. |
| data[].check_number |
string |
no |
The check the advance was paid by. |
| data[].deduct_in_month |
string |
no |
The 1st of the payroll month the advance is deducted in. |
| data[].id |
string |
no |
The record's id. |
| data[].reason |
string |
no |
Why it was advanced, as typed. |
| data[].remaining_balance |
string |
no |
What is still owed. |
| data[].status |
string |
no |
outstanding, partially_repaid, fully_repaid or written_off. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
| totals |
object |
yes |
Over every advance the filters match, not this page. |
| totals.amount |
string |
no |
The amounts advanced. |
| totals.remaining_balance |
string |
no |
What is still owed. |
CertificationCase
-
applied
boolean
- Round 2: whether the case's change was made. Null in round 1.
-
blocked
string
- Why a send is refused now; null when it is not.
-
id
string, required
- The case's id, as POST /settings/sandata/certification/cases/{id} takes it.
-
records
integer, required
- How many records it sends.
-
round
integer, required
- 1: the sample records as created. 2: changes to records Sandata accepted.
-
scenario
string, required
- The Sandata scenario it covers.
-
state
object
- Of those records, how many Sandata holds as they are now (accepted), are waiting for Sandata's answer (waiting), were refused as they are now and go again on a send (refused), were refused too often to go again until they change (parked), cannot be sent as they are (held_back), and are left to send (to_send); each record is in exactly one. Null while Sandata is paused or not set up.
-
title
string, required
- What the page calls it.
| Field |
Type |
Required |
Description |
| applied |
boolean |
no |
Round 2: whether the case's change was made. Null in round 1. |
| blocked |
string |
no |
Why a send is refused now; null when it is not. |
| id |
string |
yes |
The case's id, as POST /settings/sandata/certification/cases/{id} takes it. |
| records |
integer |
yes |
How many records it sends. |
| round |
integer |
yes |
1: the sample records as created. 2: changes to records Sandata accepted. |
| scenario |
string |
yes |
The Sandata scenario it covers. |
| state |
object |
no |
Of those records, how many Sandata holds as they are now (accepted), are waiting for Sandata's answer (waiting), were refused as they are now and go again on a send (refused), were refused too often to go again until they change (parked), cannot be sent as they are (held_back), and are left to send (to_send); each record is in exactly one. Null while Sandata is paused or not set up. |
| title |
string |
yes |
What the page calls it. |
CertificationCaseRefusal
POST /settings/sandata/certification/send only: present when this case was refused while the other went; it changed nothing.
-
code
string, required
- The refusal's code, as an error carries it.
-
message
string, required
- Why the case was not sent.
| Field |
Type |
Required |
Description |
| code |
string |
yes |
The refusal's code, as an error carries it. |
| message |
string |
yes |
Why the case was not sent. |
CertificationCaseResult
-
case
string, required
- The case's id.
-
dry_run
boolean, required
- True: written to the server log, nothing sent to Sandata and nothing changed.
-
records
integer, required
- How many records the case holds.
-
refused
object
- POST /settings/sandata/certification/send only: present when this case was refused while the other went; it changed nothing.
-
refused.code
string, required
- The refusal's code, as an error carries it.
-
refused.message
string, required
- Why the case was not sent.
-
sending
integer, required
- Live: how many of them were queued, those Sandata does not hold as they are now, a record it refused included until it is parked. Dry run: how many were written to the server log.
| Field |
Type |
Required |
Description |
| case |
string |
yes |
The case's id. |
| dry_run |
boolean |
yes |
True: written to the server log, nothing sent to Sandata and nothing changed. |
| records |
integer |
yes |
How many records the case holds. |
| refused |
object |
no |
POST /settings/sandata/certification/send only: present when this case was refused while the other went; it changed nothing. |
| refused.code |
string |
yes |
The refusal's code, as an error carries it. |
| refused.message |
string |
yes |
Why the case was not sent. |
| sending |
integer |
yes |
Live: how many of them were queued, those Sandata does not hold as they are now, a record it refused included until it is parked. Dry run: how many were written to the server log. |
CertificationDomainReport
-
errors
array of object, required
- One per failed record.
-
errors[].error
string, required
- What the mapper refused.
-
errors[].id
string, required
- The record's id.
-
errors[].name
string, required
- The sample record's name.
-
failed
integer, required
- Those that did not.
-
passed
integer, required
- Those that mapped cleanly.
-
total
integer, required
- Sample records checked.
| Field |
Type |
Required |
Description |
| errors |
array of object |
yes |
One per failed record. |
| errors[].error |
string |
yes |
What the mapper refused. |
| errors[].id |
string |
yes |
The record's id. |
| errors[].name |
string |
yes |
The sample record's name. |
| failed |
integer |
yes |
Those that did not. |
| passed |
integer |
yes |
Those that mapped cleanly. |
| total |
integer |
yes |
Sample records checked. |
CertificationDryRunUpdate
-
dry_run
boolean, required
- True writes what would be sent to the server log and sends nothing; false sends to Sandata.
| Field |
Type |
Required |
Description |
| dry_run |
boolean |
yes |
True writes what would be sent to the server log and sends nothing; false sends to Sandata. |
CertificationParty
-
batch
string
- Its latest batch's status; null when never sent.
-
id
string, required
- The record's id.
-
kind
string, required
- Client or employee.
-
name
string, required
- Its name.
-
state
string, required
- Where it stands with Sandata.
| Field |
Type |
Required |
Description |
| batch |
string |
no |
Its latest batch's status; null when never sent. |
| id |
string |
yes |
The record's id. |
| kind |
string |
yes |
Client or employee. |
| name |
string |
yes |
Its name. |
| state |
string |
yes |
Where it stands with Sandata. |
CertificationRecordError
-
error
string, required
- What the mapper refused.
-
id
string, required
- The record's id.
-
name
string, required
- The sample record's name.
| Field |
Type |
Required |
Description |
| error |
string |
yes |
What the mapper refused. |
| id |
string |
yes |
The record's id. |
| name |
string |
yes |
The sample record's name. |
CertificationReport
-
clients
object, required
-
clients.errors
array of object, required
- One per failed record.
-
clients.errors[].error
string, required
- What the mapper refused.
-
clients.errors[].id
string, required
- The record's id.
-
clients.errors[].name
string, required
- The sample record's name.
-
clients.failed
integer, required
- Those that did not.
-
clients.passed
integer, required
- Those that mapped cleanly.
-
clients.total
integer, required
- Sample records checked.
-
credential_error
string
- Set when the Sandata settings are incomplete; null otherwise.
-
employees
object, required
-
employees.errors
array of object, required
- One per failed record.
-
employees.errors[].error
string, required
- What the mapper refused.
-
employees.errors[].id
string, required
- The record's id.
-
employees.errors[].name
string, required
- The sample record's name.
-
employees.failed
integer, required
- Those that did not.
-
employees.passed
integer, required
- Those that mapped cleanly.
-
employees.total
integer, required
- Sample records checked.
-
overall_pass
boolean, required
- Every sample record mapped cleanly.
-
visits
object, required
-
visits.errors
array of object, required
- One per failed record.
-
visits.errors[].error
string, required
- What the mapper refused.
-
visits.errors[].id
string, required
- The record's id.
-
visits.errors[].name
string, required
- The sample record's name.
-
visits.failed
integer, required
- Those that did not.
-
visits.passed
integer, required
- Those that mapped cleanly.
-
visits.total
integer, required
- Sample records checked.
| Field |
Type |
Required |
Description |
| clients |
object |
yes |
|
| clients.errors |
array of object |
yes |
One per failed record. |
| clients.errors[].error |
string |
yes |
What the mapper refused. |
| clients.errors[].id |
string |
yes |
The record's id. |
| clients.errors[].name |
string |
yes |
The sample record's name. |
| clients.failed |
integer |
yes |
Those that did not. |
| clients.passed |
integer |
yes |
Those that mapped cleanly. |
| clients.total |
integer |
yes |
Sample records checked. |
| credential_error |
string |
no |
Set when the Sandata settings are incomplete; null otherwise. |
| employees |
object |
yes |
|
| employees.errors |
array of object |
yes |
One per failed record. |
| employees.errors[].error |
string |
yes |
What the mapper refused. |
| employees.errors[].id |
string |
yes |
The record's id. |
| employees.errors[].name |
string |
yes |
The sample record's name. |
| employees.failed |
integer |
yes |
Those that did not. |
| employees.passed |
integer |
yes |
Those that mapped cleanly. |
| employees.total |
integer |
yes |
Sample records checked. |
| overall_pass |
boolean |
yes |
Every sample record mapped cleanly. |
| visits |
object |
yes |
|
| visits.errors |
array of object |
yes |
One per failed record. |
| visits.errors[].error |
string |
yes |
What the mapper refused. |
| visits.errors[].id |
string |
yes |
The record's id. |
| visits.errors[].name |
string |
yes |
The sample record's name. |
| visits.failed |
integer |
yes |
Those that did not. |
| visits.passed |
integer |
yes |
Those that mapped cleanly. |
| visits.total |
integer |
yes |
Sample records checked. |
CertificationStep
-
category
string, required
- Its section on the page.
-
completed
boolean, required
- Whether it is done.
-
date
string
- The day it was marked done; null when not done.
-
key
string, required
- The step's key.
-
notes
string
- Its notes; null when none.
-
text
string, required
- What the page calls it.
| Field |
Type |
Required |
Description |
| category |
string |
yes |
Its section on the page. |
| completed |
boolean |
yes |
Whether it is done. |
| date |
string |
no |
The day it was marked done; null when not done. |
| key |
string |
yes |
The step's key. |
| notes |
string |
no |
Its notes; null when none. |
| text |
string |
yes |
What the page calls it. |
CertificationStepUpdate
-
completed
boolean
- Done or not done.
-
notes
string
- The notes; null or blank empties them.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Done or not done. |
| notes |
string |
no |
The notes; null or blank empties them. |
CfcImportJob
-
client_id
string, required
- The client whose calculator it reads.
-
completed_at
string
-
error
object
- A failed job's reason: unreadable_calculator, paper_capture_consent_required (a scan, and the agency has not accepted Paper forms; not retried), import_refused, not_found, audit_log_failed, extraction_unavailable (the extraction service did not answer through every retry), internal_error, abandoned (stuck past its bound).
-
error.code
string
-
error.message
string
-
filename
string
- The file's name as sent.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
mode
string, required
-
plans
array of PlanOfCare
- A succeeded import's new Plans of Care, with their tasks.
-
rows
array of CfcPreviewRow
- A succeeded preview's tasks and their per-day minutes.
-
status
string, required
-
warnings
array of string
- Unmatched tasks, a Medicaid ID other than the client's; they never block.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client whose calculator it reads. |
| completed_at |
string |
no |
|
| error |
object |
no |
A failed job's reason: unreadable_calculator, paper_capture_consent_required (a scan, and the agency has not accepted Paper forms; not retried), import_refused, not_found, audit_log_failed, extraction_unavailable (the extraction service did not answer through every retry), internal_error, abandoned (stuck past its bound). |
| error.code |
string |
no |
|
| error.message |
string |
no |
|
| filename |
string |
no |
The file's name as sent. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| mode |
string |
yes |
|
| plans |
array of PlanOfCare |
no |
A succeeded import's new Plans of Care, with their tasks. |
| rows |
array of CfcPreviewRow |
no |
A succeeded preview's tasks and their per-day minutes. |
| status |
string |
yes |
|
| warnings |
array of string |
no |
Unmatched tasks, a Medicaid ID other than the client's; they never block. |
CfcNewClient
-
client_id
string, required
- created: the new client; existing: the client already on file the calculator is imported for; conflict: the client on file holding the card's Medicaid ID.
-
import
CfcImportJob, required
- The import job for the client; null for a conflict, which writes nothing.
-
message
string, required
- What happened, in the words the import page uses; null for a new client.
-
outcome
string, required
-
warnings
array of object
- What a created client was saved despite, as POST /api/v1/clients answers it: medicaid_id_pending on field medicaid_id (the card had no Medicaid ID, so the client cannot be billed until one is added); client_care.active_without_start_date on field service_start_date (the client is active with no service start date). Empty for an existing client or a conflict.
-
warnings[].code
string, required
-
warnings[].field
string
-
warnings[].message
string, required
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
created: the new client; existing: the client already on file the calculator is imported for; conflict: the client on file holding the card's Medicaid ID. |
| import |
CfcImportJob |
yes |
The import job for the client; null for a conflict, which writes nothing. |
| message |
string |
yes |
What happened, in the words the import page uses; null for a new client. |
| outcome |
string |
yes |
|
| warnings |
array of object |
no |
What a created client was saved despite, as POST /api/v1/clients answers it: medicaid_id_pending on field medicaid_id (the card had no Medicaid ID, so the client cannot be billed until one is added); client_care.active_without_start_date on field service_start_date (the client is active with no service start date). Empty for an existing client or a conflict. |
| warnings[].code |
string |
yes |
|
| warnings[].field |
string |
no |
|
| warnings[].message |
string |
yes |
|
CfcPreviewRow
-
category
string, required
-
matched
boolean
- Whether the task matched one the agency knows; an unmatched one needs mapping.
-
minutes_per_task
string
- Minutes each time.
-
over_cap
boolean, required
- True when the task cannot be placed within the client's days.
-
per_day
object
- Minutes on each day, sun to sat; null when over_cap.
-
per_day.fri
integer
-
per_day.mon
integer
-
per_day.sat
integer
-
per_day.sun
integer
-
per_day.thu
integer
-
per_day.tue
integer
-
per_day.wed
integer
-
task_name
string, required
- The task, as the calculator names it.
-
times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| category |
string |
yes |
|
| matched |
boolean |
no |
Whether the task matched one the agency knows; an unmatched one needs mapping. |
| minutes_per_task |
string |
no |
Minutes each time. |
| over_cap |
boolean |
yes |
True when the task cannot be placed within the client's days. |
| per_day |
object |
no |
Minutes on each day, sun to sat; null when over_cap. |
| per_day.fri |
integer |
no |
|
| per_day.mon |
integer |
no |
|
| per_day.sat |
integer |
no |
|
| per_day.sun |
integer |
no |
|
| per_day.thu |
integer |
no |
|
| per_day.tue |
integer |
no |
|
| per_day.wed |
integer |
no |
|
| task_name |
string |
yes |
The task, as the calculator names it. |
| times_per_week |
integer |
no |
Times a week. |
CfcProgram
-
active
boolean, required
- Whether the agency offers it.
-
category
string, required
- The category.
-
position
integer
- Its place.
-
tasks
array of object, required
- Its tasks, in order.
-
tasks[].active
boolean, required
- Whether it is offered.
-
tasks[].category
string, required
- Its category.
-
tasks[].id
string, required
- The record's id.
-
tasks[].minutes_per_task
string
- Minutes each time.
-
tasks[].position
integer
- Its place in the category.
-
tasks[].task_name
string, required
- The task.
-
tasks[].times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether the agency offers it. |
| category |
string |
yes |
The category. |
| position |
integer |
no |
Its place. |
| tasks |
array of object |
yes |
Its tasks, in order. |
| tasks[].active |
boolean |
yes |
Whether it is offered. |
| tasks[].category |
string |
yes |
Its category. |
| tasks[].id |
string |
yes |
The record's id. |
| tasks[].minutes_per_task |
string |
no |
Minutes each time. |
| tasks[].position |
integer |
no |
Its place in the category. |
| tasks[].task_name |
string |
yes |
The task. |
| tasks[].times_per_week |
integer |
no |
Times a week. |
CfcProgramActive
-
active
boolean, required
- Whether it is offered.
-
category
string, required
- The category.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether it is offered. |
| category |
string |
yes |
The category. |
CfcProgramUpdate
-
active
boolean, required
- Whether the agency offers it.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether the agency offers it. |
CfcPrograms
CfcTask
-
active
boolean, required
- Whether it is offered.
-
category
string, required
- Its category.
-
id
string, required
- The record's id.
-
minutes_per_task
string
- Minutes each time.
-
position
integer
- Its place in the category.
-
task_name
string, required
- The task.
-
times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether it is offered. |
| category |
string |
yes |
Its category. |
| id |
string |
yes |
The record's id. |
| minutes_per_task |
string |
no |
Minutes each time. |
| position |
integer |
no |
Its place in the category. |
| task_name |
string |
yes |
The task. |
| times_per_week |
integer |
no |
Times a week. |
CfcTaskCreate
-
minutes_per_task
string, required
- Minutes each time.
-
task_name
string, required
- The task.
-
times_per_week
integer, required
- Times a week.
| Field |
Type |
Required |
Description |
| minutes_per_task |
string |
yes |
Minutes each time. |
| task_name |
string |
yes |
The task. |
| times_per_week |
integer |
yes |
Times a week. |
CfcTaskUpdate
-
minutes_per_task
string
- Minutes each time.
-
task_name
string
- The task.
-
times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| minutes_per_task |
string |
no |
Minutes each time. |
| task_name |
string |
no |
The task. |
| times_per_week |
integer |
no |
Times a week. |
CfcTasksMoved
ChecklistItem
-
active
boolean, required
- Whether it is shown.
-
checklist
string, required
- Which checklist.
-
id
string, required
- The record's id.
-
item_key
string, required
- The key caregivers' records are kept under; never changes.
-
item_type
string
- How it is kept.
-
label
string, required
- What the item is called.
-
position
integer
- Its place in the checklist.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether it is shown. |
| checklist |
string |
yes |
Which checklist. |
| id |
string |
yes |
The record's id. |
| item_key |
string |
yes |
The key caregivers' records are kept under; never changes. |
| item_type |
string |
no |
How it is kept. |
| label |
string |
yes |
What the item is called. |
| position |
integer |
no |
Its place in the checklist. |
ChecklistItemCreate
-
item_type
string
- Compliance only.
-
label
string, required
- What the item is called.
| Field |
Type |
Required |
Description |
| item_type |
string |
no |
Compliance only. |
| label |
string |
yes |
What the item is called. |
ChecklistItemRename
-
label
string, required
- The new label.
| Field |
Type |
Required |
Description |
| label |
string |
yes |
The new label. |
ChecklistItems
ChecklistItemsMoved
Claim
One billed service line, from a batch.
-
adjustment_reason_codes
array of string
- Claim adjustment reason codes.
-
batch_id
string, required
- The batch the claim belongs to.
-
charge_amount
string
- Amount billed.
-
claim_frequency
string
- CLM05-3: 1 bills a new claim, 7 replaces a paid claim, 8 voids one.
-
diagnosis_code_1
string
-
diagnosis_code_2
string
-
diagnosis_code_3
string
-
diagnosis_code_4
string
-
duplicate_of_claim_id
string
-
evv_validation_status
string
-
icn
string
- HCPF's internal control number.
-
id
string, required
- The record's id.
-
investigation_status
string
- Where the agency's investigation of a denial stands.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
-
modifier_2
string
-
modifier_3
string
-
modifier_4
string
-
original_icn
string
- The ICN of the paid claim an uploaded replace (7) or void (8) row named.
-
paid_amount
string
- Amount paid.
-
paid_date
string
-
par_number
string
- The prior authorization request number.
-
patient_account_number
string
-
patient_first_name
string
-
patient_last_name
string
-
payment_status_code
string
-
place_of_service
string
-
procedure_code
string
- The HCPCS code billed.
-
reconciled_at
string
- When it was marked reconciled with its payment, if it was.
-
remark_codes
array of object
- Remittance remark codes.
-
replaced_account_number
string
- The account number the uploaded file gave this claim, when another row or a claim in progress or paid already used it and it was not kept; patient_account_number is the claim's own.
-
resolution_notes
string
- The agency's notes on resolving a denial.
-
row_number
integer
- Its row in the uploaded file.
-
service_date_from
string
-
service_date_to
string
-
status
string, required
-
unit_type
string
-
units
string
- Units billed.
-
updated_at
string
- When the record last changed.
-
validation_errors
array of object
- Why the claim is invalid, if it is.
-
validation_errors[].code
string
- Stable, e.g. required or invalid_format.
-
validation_errors[].field
string
- The claim field.
-
validation_errors[].message
string
- For a person to read.
| Field |
Type |
Required |
Description |
| adjustment_reason_codes |
array of string |
no |
Claim adjustment reason codes. |
| batch_id |
string |
yes |
The batch the claim belongs to. |
| charge_amount |
string |
no |
Amount billed. |
| claim_frequency |
string |
no |
CLM05-3: 1 bills a new claim, 7 replaces a paid claim, 8 voids one. |
| diagnosis_code_1 |
string |
no |
|
| diagnosis_code_2 |
string |
no |
|
| diagnosis_code_3 |
string |
no |
|
| diagnosis_code_4 |
string |
no |
|
| duplicate_of_claim_id |
string |
no |
|
| evv_validation_status |
string |
no |
|
| icn |
string |
no |
HCPF's internal control number. |
| id |
string |
yes |
The record's id. |
| investigation_status |
string |
no |
Where the agency's investigation of a denial stands. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
|
| modifier_2 |
string |
no |
|
| modifier_3 |
string |
no |
|
| modifier_4 |
string |
no |
|
| original_icn |
string |
no |
The ICN of the paid claim an uploaded replace (7) or void (8) row named. |
| paid_amount |
string |
no |
Amount paid. |
| paid_date |
string |
no |
|
| par_number |
string |
no |
The prior authorization request number. |
| patient_account_number |
string |
no |
|
| patient_first_name |
string |
no |
|
| patient_last_name |
string |
no |
|
| payment_status_code |
string |
no |
|
| place_of_service |
string |
no |
|
| procedure_code |
string |
no |
The HCPCS code billed. |
| reconciled_at |
string |
no |
When it was marked reconciled with its payment, if it was. |
| remark_codes |
array of object |
no |
Remittance remark codes. |
| replaced_account_number |
string |
no |
The account number the uploaded file gave this claim, when another row or a claim in progress or paid already used it and it was not kept; patient_account_number is the claim's own. |
| resolution_notes |
string |
no |
The agency's notes on resolving a denial. |
| row_number |
integer |
no |
Its row in the uploaded file. |
| service_date_from |
string |
no |
|
| service_date_to |
string |
no |
|
| status |
string |
yes |
|
| unit_type |
string |
no |
|
| units |
string |
no |
Units billed. |
| updated_at |
string |
no |
When the record last changed. |
| validation_errors |
array of object |
no |
Why the claim is invalid, if it is. |
| validation_errors[].code |
string |
no |
Stable, e.g. required or invalid_format. |
| validation_errors[].field |
string |
no |
The claim field. |
| validation_errors[].message |
string |
no |
For a person to read. |
ClaimEvvCorrection
A claim's units set to its verified EVV visits' units, and the figures before.
-
applied_at
string
-
applied_by_id
string
- The record's id.
-
batch_id
string
- The record's id.
-
claim_id
string
- The record's id.
-
evv_units
integer
- Units the verified EVV visits add up to.
-
from_charge
string
- Charge before.
-
from_units
string
- Units the claim billed before.
-
id
string
- The record's id.
-
to_charge
string
- Charge after, at the claim's own price per unit.
-
to_units
string
- Units it bills after: the EVV units.
-
undone_at
string
-
undone_by_id
string
- The record's id.
-
visit_ids
array of string
- The visits counted.
| Field |
Type |
Required |
Description |
| applied_at |
string |
no |
|
| applied_by_id |
string |
no |
The record's id. |
| batch_id |
string |
no |
The record's id. |
| claim_id |
string |
no |
The record's id. |
| evv_units |
integer |
no |
Units the verified EVV visits add up to. |
| from_charge |
string |
no |
Charge before. |
| from_units |
string |
no |
Units the claim billed before. |
| id |
string |
no |
The record's id. |
| to_charge |
string |
no |
Charge after, at the claim's own price per unit. |
| to_units |
string |
no |
Units it bills after: the EVV units. |
| undone_at |
string |
no |
|
| undone_by_id |
string |
no |
The record's id. |
| visit_ids |
array of string |
no |
The visits counted. |
ClaimEvvCorrectionProposal
-
billed_units
string, required
- Units the claim bills now.
-
claim_id
string, required
- The record's id.
-
correction
object, required
- A claim's units set to its verified EVV visits' units, and the figures before.
-
correction.applied_at
string
-
correction.applied_by_id
string
- The record's id.
-
correction.batch_id
string
- The record's id.
-
correction.claim_id
string
- The record's id.
-
correction.evv_units
integer
- Units the verified EVV visits add up to.
-
correction.from_charge
string
- Charge before.
-
correction.from_units
string
- Units the claim billed before.
-
correction.id
string
- The record's id.
-
correction.to_charge
string
- Charge after, at the claim's own price per unit.
-
correction.to_units
string
- Units it bills after: the EVV units.
-
correction.undone_at
string
-
correction.undone_by_id
string
- The record's id.
-
correction.visit_ids
array of string
- The visits counted.
-
current_charge
string
- The claim's charge now.
-
evv_units
integer
- Units its verified EVV visits add up to; null when it is not compared.
-
proposed_charge
string
- The charge at evv_units, at the claim's own price per unit, rounded to cents; null when it has no charge or bills 0 units, and then applying leaves the charge as it is.
-
refusal
object, required
- Null when applying now would succeed; otherwise what it would answer: code and message.
-
refusal.code
string
-
refusal.message
string
-
visit_ids
array of string, required
- The visits counted.
| Field |
Type |
Required |
Description |
| billed_units |
string |
yes |
Units the claim bills now. |
| claim_id |
string |
yes |
The record's id. |
| correction |
object |
yes |
A claim's units set to its verified EVV visits' units, and the figures before. |
| correction.applied_at |
string |
no |
|
| correction.applied_by_id |
string |
no |
The record's id. |
| correction.batch_id |
string |
no |
The record's id. |
| correction.claim_id |
string |
no |
The record's id. |
| correction.evv_units |
integer |
no |
Units the verified EVV visits add up to. |
| correction.from_charge |
string |
no |
Charge before. |
| correction.from_units |
string |
no |
Units the claim billed before. |
| correction.id |
string |
no |
The record's id. |
| correction.to_charge |
string |
no |
Charge after, at the claim's own price per unit. |
| correction.to_units |
string |
no |
Units it bills after: the EVV units. |
| correction.undone_at |
string |
no |
|
| correction.undone_by_id |
string |
no |
The record's id. |
| correction.visit_ids |
array of string |
no |
The visits counted. |
| current_charge |
string |
no |
The claim's charge now. |
| evv_units |
integer |
no |
Units its verified EVV visits add up to; null when it is not compared. |
| proposed_charge |
string |
no |
The charge at evv_units, at the claim's own price per unit, rounded to cents; null when it has no charge or bills 0 units, and then applying leaves the charge as it is. |
| refusal |
object |
yes |
Null when applying now would succeed; otherwise what it would answer: code and message. |
| refusal.code |
string |
no |
|
| refusal.message |
string |
no |
|
| visit_ids |
array of string |
yes |
The visits counted. |
ClaimPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Claim, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Claim |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Client
A person the agency serves.
-
acp_address_line1
string
- The ACP substitute street address; with no substitute, Sandata gets no address.
-
acp_city
string
- The ACP substitute address's city.
-
acp_phone
string
- The ACP substitute phone.
-
acp_protected
boolean
- In Colorado's Address Confidentiality Program: the real address, phones and every call location are withheld from Sandata, and the acp_ substitute below goes instead. Set with POST /api/v1/clients/{id}/acp-protection.
-
acp_state
string
- The ACP substitute address's state.
-
acp_zip
string
- The ACP substitute address's zip.
-
address
string
-
address_line_2
string
- Apartment, suite or unit; sent to Sandata as ClientAddressLine2.
-
agency_services_only
boolean
- The client has no outside providers (Access's MHS ONLY). Set with POST /api/v1/clients/{id}/agency-services-only.
-
city
string
-
client_type
string, required
-
county
string
- A Colorado county name; sent to Sandata as ClientCounty.
-
date_of_birth
string
- Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
eligibility_end_date
string
-
eligibility_start_date
string
-
eligibility_verified_at
string
- When the agency last marked the client's Medicaid eligibility verified.
-
email
string
-
emergency_contact_name
string
- Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. The client's emergency contact 1, as the client page's People section shows it.
-
emergency_contact_phone
string
- Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. Emergency contact 1's phone, 10 digits.
-
first_name
string, required
-
gender
string
-
home_phone
string
-
id
string, required
- The record's id.
-
ihss_client
boolean
- An IHSS client (Access's IHSSClient box), whatever client_type says; the PAR panel then shows the IHSS column. A client typed ihss is always one.
-
ihss_code
string
- The IHSS billing code and modifiers off the client's IHSS PAR, as the agency writes them (US-102.17).
-
ihss_par_weeks
string
- The weeks the client's IHSS PAR runs.
-
ihss_units_on_par
integer
- The units the client's IHSS PAR authorizes; the PAR panel shows them as hours a week, units / 4 / weeks.
-
inserted_at
string
- When the record was created.
-
intake_missing
array of string
- The intake forms the client page warns are not signed yet (US-101.42): the agency disclosure notice, the client rights acknowledgement and the emergency information, each counted once a record of it is signed or amended. Empty when the page shows no warning: services started one business day ago or less, before the warning's start date, or not at all; nothing missing; or the warning dismissed with nothing missing since. Dismiss it with POST /api/v1/clients/{id}/intake-warning-dismissals. It never blocks anything.
-
language_preference
string
-
last_name
string, required
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
medicaid_id
string
- The Colorado Medicaid id.
-
middle_name
string
-
mobile_phone
string
-
payer_program
string
- The program that pays for the client's care.
-
planned_supervisory_day
integer
- The day all four quarters' slots share; null when the quarters differ or no day is chosen. Each quarter's own day is planned_supervisory_qN_day. Set with POST /api/v1/clients/{id}/supervisory-plan.
-
planned_supervisory_offset
integer
- The month of the quarter (1, 2 or 3) all four quarters' slots share; null when the quarters differ or none is planned. Each quarter's own slot is planned_supervisory_qN_offset (#2606). Set with POST /api/v1/clients/{id}/supervisory-plan.
-
planned_supervisory_q1_day
integer
- Quarter 1's planned supervisory day of that month; null when no day is chosen.
-
planned_supervisory_q1_offset
integer
- Quarter 1's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 1 is unplanned.
-
planned_supervisory_q2_day
integer
- Quarter 2's planned supervisory day of that month; null when no day is chosen.
-
planned_supervisory_q2_offset
integer
- Quarter 2's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 2 is unplanned.
-
planned_supervisory_q3_day
integer
- Quarter 3's planned supervisory day of that month; null when no day is chosen.
-
planned_supervisory_q3_offset
integer
- Quarter 3's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 3 is unplanned.
-
planned_supervisory_q4_day
integer
- Quarter 4's planned supervisory day of that month; null when no day is chosen.
-
planned_supervisory_q4_offset
integer
- Quarter 4's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 4 is unplanned.
-
private_insurance_client
boolean
- The client has private insurance (Access's Private box), whatever client_type says. A client typed private_insurance always has.
-
service_end_date
string
-
service_start_date
string
-
ssn_masked
string
- The SSN as the page shows it, ***-**- and its last four digits; null when none is on file. The full SSN is never returned; send ssn on a create or update to set it.
-
state
string
-
status
string, required
-
temporary
boolean
- A short-term client, whatever pays for them; the app's active client list hides them by default.
-
updated_at
string
- When the record last changed.
-
zip
string
- 5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits.
| Field |
Type |
Required |
Description |
| acp_address_line1 |
string |
no |
The ACP substitute street address; with no substitute, Sandata gets no address. |
| acp_city |
string |
no |
The ACP substitute address's city. |
| acp_phone |
string |
no |
The ACP substitute phone. |
| acp_protected |
boolean |
no |
In Colorado's Address Confidentiality Program: the real address, phones and every call location are withheld from Sandata, and the acp_ substitute below goes instead. Set with POST /api/v1/clients/{id}/acp-protection. |
| acp_state |
string |
no |
The ACP substitute address's state. |
| acp_zip |
string |
no |
The ACP substitute address's zip. |
| address |
string |
no |
|
| address_line_2 |
string |
no |
Apartment, suite or unit; sent to Sandata as ClientAddressLine2. |
| agency_services_only |
boolean |
no |
The client has no outside providers (Access's MHS ONLY). Set with POST /api/v1/clients/{id}/agency-services-only. |
| city |
string |
no |
|
| client_type |
string |
yes |
|
| county |
string |
no |
A Colorado county name; sent to Sandata as ClientCounty. |
| date_of_birth |
string |
no |
Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| eligibility_end_date |
string |
no |
|
| eligibility_start_date |
string |
no |
|
| eligibility_verified_at |
string |
no |
When the agency last marked the client's Medicaid eligibility verified. |
| email |
string |
no |
|
| emergency_contact_name |
string |
no |
Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. The client's emergency contact 1, as the client page's People section shows it. |
| emergency_contact_phone |
string |
no |
Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. Emergency contact 1's phone, 10 digits. |
| first_name |
string |
yes |
|
| gender |
string |
no |
|
| home_phone |
string |
no |
|
| id |
string |
yes |
The record's id. |
| ihss_client |
boolean |
no |
An IHSS client (Access's IHSSClient box), whatever client_type says; the PAR panel then shows the IHSS column. A client typed ihss is always one. |
| ihss_code |
string |
no |
The IHSS billing code and modifiers off the client's IHSS PAR, as the agency writes them (US-102.17). |
| ihss_par_weeks |
string |
no |
The weeks the client's IHSS PAR runs. |
| ihss_units_on_par |
integer |
no |
The units the client's IHSS PAR authorizes; the PAR panel shows them as hours a week, units / 4 / weeks. |
| inserted_at |
string |
no |
When the record was created. |
| intake_missing |
array of string |
no |
The intake forms the client page warns are not signed yet (US-101.42): the agency disclosure notice, the client rights acknowledgement and the emergency information, each counted once a record of it is signed or amended. Empty when the page shows no warning: services started one business day ago or less, before the warning's start date, or not at all; nothing missing; or the warning dismissed with nothing missing since. Dismiss it with POST /api/v1/clients/{id}/intake-warning-dismissals. It never blocks anything. |
| language_preference |
string |
no |
|
| last_name |
string |
yes |
|
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| medicaid_id |
string |
no |
The Colorado Medicaid id. |
| middle_name |
string |
no |
|
| mobile_phone |
string |
no |
|
| payer_program |
string |
no |
The program that pays for the client's care. |
| planned_supervisory_day |
integer |
no |
The day all four quarters' slots share; null when the quarters differ or no day is chosen. Each quarter's own day is planned_supervisory_qN_day. Set with POST /api/v1/clients/{id}/supervisory-plan. |
| planned_supervisory_offset |
integer |
no |
The month of the quarter (1, 2 or 3) all four quarters' slots share; null when the quarters differ or none is planned. Each quarter's own slot is planned_supervisory_qN_offset (#2606). Set with POST /api/v1/clients/{id}/supervisory-plan. |
| planned_supervisory_q1_day |
integer |
no |
Quarter 1's planned supervisory day of that month; null when no day is chosen. |
| planned_supervisory_q1_offset |
integer |
no |
Quarter 1's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 1 is unplanned. |
| planned_supervisory_q2_day |
integer |
no |
Quarter 2's planned supervisory day of that month; null when no day is chosen. |
| planned_supervisory_q2_offset |
integer |
no |
Quarter 2's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 2 is unplanned. |
| planned_supervisory_q3_day |
integer |
no |
Quarter 3's planned supervisory day of that month; null when no day is chosen. |
| planned_supervisory_q3_offset |
integer |
no |
Quarter 3's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 3 is unplanned. |
| planned_supervisory_q4_day |
integer |
no |
Quarter 4's planned supervisory day of that month; null when no day is chosen. |
| planned_supervisory_q4_offset |
integer |
no |
Quarter 4's planned supervisory month, the month of that quarter (1, 2 or 3); null when quarter 4 is unplanned. |
| private_insurance_client |
boolean |
no |
The client has private insurance (Access's Private box), whatever client_type says. A client typed private_insurance always has. |
| service_end_date |
string |
no |
|
| service_start_date |
string |
no |
|
| ssn_masked |
string |
no |
The SSN as the page shows it, ***-**- and its last four digits; null when none is on file. The full SSN is never returned; send ssn on a create or update to set it. |
| state |
string |
no |
|
| status |
string |
yes |
|
| temporary |
boolean |
no |
A short-term client, whatever pays for them; the app's active client list hides them by default. |
| updated_at |
string |
no |
When the record last changed. |
| zip |
string |
no |
5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits. |
ClientAcpProtection
-
acp_address_line1
string
- The ACP substitute street address, sent in place of the real one.
-
acp_city
string
- The ACP substitute address's city.
-
acp_phone
string
- The ACP substitute phone, sent in place of the client's phones.
-
acp_state
string
- The ACP substitute address's state, two letters.
-
acp_zip
string
- The ACP substitute address's zip, 5 or 9 digits.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
protected
boolean, required
- true: the client is in Colorado's Address Confidentiality Program (PM 20-007): its real address, phones and every call location are withheld from Sandata, and the ACP substitute address and phone given here go in their place. false removes the mark and clears the substitute.
-
reason
string
- Required with protected false: why the mark is removed, at least 10 characters.
| Field |
Type |
Required |
Description |
| acp_address_line1 |
string |
no |
The ACP substitute street address, sent in place of the real one. |
| acp_city |
string |
no |
The ACP substitute address's city. |
| acp_phone |
string |
no |
The ACP substitute phone, sent in place of the client's phones. |
| acp_state |
string |
no |
The ACP substitute address's state, two letters. |
| acp_zip |
string |
no |
The ACP substitute address's zip, 5 or 9 digits. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| protected |
boolean |
yes |
true: the client is in Colorado's Address Confidentiality Program (PM 20-007): its real address, phones and every call location are withheld from Sandata, and the ACP substitute address and phone given here go in their place. false removes the mark and clears the substitute. |
| reason |
string |
no |
Required with protected false: why the mark is removed, at least 10 characters. |
ClientAgencyServicesOnly
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
value
boolean, required
- true: the client has no outside providers (Access's MHS ONLY). false clears it.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| value |
boolean |
yes |
true: the client has no outside providers (Access's MHS ONLY). false clears it. |
ClientCalendarEvent
-
client_id
string, required
- The client it is about.
-
completed_at
string
- When it was done.
-
description
string
- More about it.
-
due_date
string, required
- The day it is due.
-
due_time
string
- A time of day, HH:MM:SS (Mountain time).
-
event_type
string, required
-
id
string, required
- The record's id.
-
lock_version
integer, required
- Its version.
-
status
string, required
-
title
string, required
- What is due.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client it is about. |
| completed_at |
string |
no |
When it was done. |
| description |
string |
no |
More about it. |
| due_date |
string |
yes |
The day it is due. |
| due_time |
string |
no |
A time of day, HH:MM:SS (Mountain time). |
| event_type |
string |
yes |
|
| id |
string |
yes |
The record's id. |
| lock_version |
integer |
yes |
Its version. |
| status |
string |
yes |
|
| title |
string |
yes |
What is due. |
ClientCalendarEventCreate
-
description
string
- More about it, up to 5000 characters.
-
due_date
string, required
- The day it is due, YYYY-MM-DD.
-
due_time
string
- The time it is due, HH:MM:SS, Mountain time.
-
title
string, required
- What is due, up to 200 characters.
| Field |
Type |
Required |
Description |
| description |
string |
no |
More about it, up to 5000 characters. |
| due_date |
string |
yes |
The day it is due, YYYY-MM-DD. |
| due_time |
string |
no |
The time it is due, HH:MM:SS, Mountain time. |
| title |
string |
yes |
What is due, up to 200 characters. |
ClientCalendarEventPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].client_id
string, required
- The client it is about.
-
data[].completed_at
string
- When it was done.
-
data[].description
string
- More about it.
-
data[].due_date
string, required
- The day it is due.
-
data[].due_time
string
- A time of day, HH:MM:SS (Mountain time).
-
data[].event_type
string, required
-
data[].id
string, required
- The record's id.
-
data[].lock_version
integer, required
- Its version.
-
data[].status
string, required
-
data[].title
string, required
- What is due.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].client_id |
string |
yes |
The client it is about. |
| data[].completed_at |
string |
no |
When it was done. |
| data[].description |
string |
no |
More about it. |
| data[].due_date |
string |
yes |
The day it is due. |
| data[].due_time |
string |
no |
A time of day, HH:MM:SS (Mountain time). |
| data[].event_type |
string |
yes |
|
| data[].id |
string |
yes |
The record's id. |
| data[].lock_version |
integer |
yes |
Its version. |
| data[].status |
string |
yes |
|
| data[].title |
string |
yes |
What is due. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientCalendarEventRestore
-
due_date
string
- The day it was due, YYYY-MM-DD.
-
due_time
string
- The time it was due, HH:MM:SS, Mountain time.
-
status
string, required
- The status it had.
| Field |
Type |
Required |
Description |
| due_date |
string |
no |
The day it was due, YYYY-MM-DD. |
| due_time |
string |
no |
The time it was due, HH:MM:SS, Mountain time. |
| status |
string |
yes |
The status it had. |
ClientCertification
One certification period; periods for a client may not overlap.
-
client_id
string, required
- The client.
-
county
string
- The county.
-
effective_date
string, required
- When the period starts.
-
expiry_date
string, required
- When it ends.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| county |
string |
no |
The county. |
| effective_date |
string |
yes |
When the period starts. |
| expiry_date |
string |
yes |
When it ends. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| updated_at |
string |
no |
When it last changed. |
ClientCertificationInput
A period overlapping another of the client's answers 422 naming effective_date.
-
county
string
- The county.
-
effective_date
string
- When the period starts, YYYY-MM-DD.
-
expiry_date
string
- When it ends, YYYY-MM-DD.
| Field |
Type |
Required |
Description |
| county |
string |
no |
The county. |
| effective_date |
string |
no |
When the period starts, YYYY-MM-DD. |
| expiry_date |
string |
no |
When it ends, YYYY-MM-DD. |
ClientCertificationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ClientCertification, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientCertification |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientChartAddendum
-
body
string, required
- What it adds.
-
id
string, required
- The addendum.
-
reason
string
- Why it was added.
-
signatures
array of object, required
- Its live signatures, oldest first.
-
signatures[].channel
string
- Where it was signed.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed, as given.
-
signed_at
string, required
- When it was signed.
-
state
string
- The addendum's own state.
-
true_copy
object, required
-
true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
| Field |
Type |
Required |
Description |
| body |
string |
yes |
What it adds. |
| id |
string |
yes |
The addendum. |
| reason |
string |
no |
Why it was added. |
| signatures |
array of object |
yes |
Its live signatures, oldest first. |
| signatures[].channel |
string |
no |
Where it was signed. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed, as given. |
| signed_at |
string |
yes |
When it was signed. |
| state |
string |
no |
The addendum's own state. |
| true_copy |
object |
yes |
|
| true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
ClientChartCareLog
-
attested
boolean, required
- Whether the client's attestation is on it: a client or representative signature, or recorded words.
-
source
string, required
- Where the log was kept.
| Field |
Type |
Required |
Description |
| attested |
boolean |
yes |
Whether the client's attestation is on it: a client or representative signature, or recorded words. |
| source |
string |
yes |
Where the log was kept. |
ClientChartDocument
-
file_name
string, required
- Its file name.
-
id
string, required
- The document.
-
scan_status
string, required
- Its virus scan; only a clean document can be downloaded.
| Field |
Type |
Required |
Description |
| file_name |
string |
yes |
Its file name. |
| id |
string |
yes |
The document. |
| scan_status |
string |
yes |
Its virus scan; only a clean document can be downloaded. |
ClientChartEntry
-
addenda
array of object, required
- The record's signed addenda, in signing order.
-
addenda[].body
string, required
- What it adds.
-
addenda[].id
string, required
- The addendum.
-
addenda[].reason
string
- Why it was added.
-
addenda[].signatures
array of object, required
- Its live signatures, oldest first.
-
addenda[].signatures[].channel
string
- Where it was signed.
-
addenda[].signatures[].method
string, required
- How it was signed.
-
addenda[].signatures[].role
string, required
- The line signed.
-
addenda[].signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
addenda[].signatures[].signed_at
string, required
- When.
-
addenda[].signatures[].signer_name
string, required
- Who signed, as given.
-
addenda[].signed_at
string, required
- When it was signed.
-
addenda[].state
string
- The addendum's own state.
-
addenda[].true_copy
object, required
-
addenda[].true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
addenda[].true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
care_log
object
-
care_log.attested
boolean, required
- Whether the client's attestation is on it: a client or representative signature, or recorded words.
-
care_log.source
string, required
- Where the log was kept.
-
caregiver_id
string
- The caregiver.
-
caregiver_name
string
- The caregiver's name.
-
document
object
-
document.file_name
string, required
- Its file name.
-
document.id
string, required
- The document.
-
document.scan_status
string, required
- Its virus scan; only a clean document can be downloaded.
-
kind
string, required
- The kind of record.
-
legacy_signed
boolean, required
- True for a record signed before the electronic record: its signatures are on paper, and it has no true copy.
-
missing_signers
array of string, required
- Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended.
-
occurred_on
string, required
- The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain).
-
path
string
- The app page the title opens, or a document's download; null for a document whose virus scan is not clean.
-
record_id
string, required
- The record, or for a document or scan the document.
-
service_type
string
- The service.
-
signatures
array of object, required
- The live signatures, oldest first.
-
signatures[].channel
string
- Where it was signed.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed, as given.
-
state
string
- The record's state; null for a document.
-
title
string, required
- The entry's title, as the chart shows it.
-
true_copy
object, required
-
true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
void
object
-
void.actor_name
string
- Who voided it; null for an API key.
-
void.reason
string, required
- Why it was voided.
-
void.replaced_by_id
string
- The draft made to replace it, when one was made.
-
void.voided_at
string, required
- When it was voided.
-
work_order_id
string
- A Monthly Client Report's Work Order.
| Field |
Type |
Required |
Description |
| addenda |
array of object |
yes |
The record's signed addenda, in signing order. |
| addenda[].body |
string |
yes |
What it adds. |
| addenda[].id |
string |
yes |
The addendum. |
| addenda[].reason |
string |
no |
Why it was added. |
| addenda[].signatures |
array of object |
yes |
Its live signatures, oldest first. |
| addenda[].signatures[].channel |
string |
no |
Where it was signed. |
| addenda[].signatures[].method |
string |
yes |
How it was signed. |
| addenda[].signatures[].role |
string |
yes |
The line signed. |
| addenda[].signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| addenda[].signatures[].signed_at |
string |
yes |
When. |
| addenda[].signatures[].signer_name |
string |
yes |
Who signed, as given. |
| addenda[].signed_at |
string |
yes |
When it was signed. |
| addenda[].state |
string |
no |
The addendum's own state. |
| addenda[].true_copy |
object |
yes |
|
| addenda[].true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| addenda[].true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| care_log |
object |
no |
|
| care_log.attested |
boolean |
yes |
Whether the client's attestation is on it: a client or representative signature, or recorded words. |
| care_log.source |
string |
yes |
Where the log was kept. |
| caregiver_id |
string |
no |
The caregiver. |
| caregiver_name |
string |
no |
The caregiver's name. |
| document |
object |
no |
|
| document.file_name |
string |
yes |
Its file name. |
| document.id |
string |
yes |
The document. |
| document.scan_status |
string |
yes |
Its virus scan; only a clean document can be downloaded. |
| kind |
string |
yes |
The kind of record. |
| legacy_signed |
boolean |
yes |
True for a record signed before the electronic record: its signatures are on paper, and it has no true copy. |
| missing_signers |
array of string |
yes |
Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended. |
| occurred_on |
string |
yes |
The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain). |
| path |
string |
no |
The app page the title opens, or a document's download; null for a document whose virus scan is not clean. |
| record_id |
string |
yes |
The record, or for a document or scan the document. |
| service_type |
string |
no |
The service. |
| signatures |
array of object |
yes |
The live signatures, oldest first. |
| signatures[].channel |
string |
no |
Where it was signed. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed, as given. |
| state |
string |
no |
The record's state; null for a document. |
| title |
string |
yes |
The entry's title, as the chart shows it. |
| true_copy |
object |
yes |
|
| true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| void |
object |
no |
|
| void.actor_name |
string |
no |
Who voided it; null for an API key. |
| void.reason |
string |
yes |
Why it was voided. |
| void.replaced_by_id |
string |
no |
The draft made to replace it, when one was made. |
| void.voided_at |
string |
yes |
When it was voided. |
| work_order_id |
string |
no |
A Monthly Client Report's Work Order. |
ClientChartPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].addenda
array of object, required
- The record's signed addenda, in signing order.
-
data[].addenda[].body
string, required
- What it adds.
-
data[].addenda[].id
string, required
- The addendum.
-
data[].addenda[].reason
string
- Why it was added.
-
data[].addenda[].signatures
array of object, required
- Its live signatures, oldest first.
-
data[].addenda[].signatures[].channel
string
- Where it was signed.
-
data[].addenda[].signatures[].method
string, required
- How it was signed.
-
data[].addenda[].signatures[].role
string, required
- The line signed.
-
data[].addenda[].signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
data[].addenda[].signatures[].signed_at
string, required
- When.
-
data[].addenda[].signatures[].signer_name
string, required
- Who signed, as given.
-
data[].addenda[].signed_at
string, required
- When it was signed.
-
data[].addenda[].state
string
- The addendum's own state.
-
data[].addenda[].true_copy
object, required
-
data[].addenda[].true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
data[].addenda[].true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
data[].care_log
object
-
data[].care_log.attested
boolean, required
- Whether the client's attestation is on it: a client or representative signature, or recorded words.
-
data[].care_log.source
string, required
- Where the log was kept.
-
data[].caregiver_id
string
- The caregiver.
-
data[].caregiver_name
string
- The caregiver's name.
-
data[].document
object
-
data[].document.file_name
string, required
- Its file name.
-
data[].document.id
string, required
- The document.
-
data[].document.scan_status
string, required
- Its virus scan; only a clean document can be downloaded.
-
data[].kind
string, required
- The kind of record.
-
data[].legacy_signed
boolean, required
- True for a record signed before the electronic record: its signatures are on paper, and it has no true copy.
-
data[].missing_signers
array of string, required
- Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended.
-
data[].occurred_on
string, required
- The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain).
-
data[].path
string
- The app page the title opens, or a document's download; null for a document whose virus scan is not clean.
-
data[].record_id
string, required
- The record, or for a document or scan the document.
-
data[].service_type
string
- The service.
-
data[].signatures
array of object, required
- The live signatures, oldest first.
-
data[].signatures[].channel
string
- Where it was signed.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].role_label
string, required
- The line as the record names it, e.g. "complainant".
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed, as given.
-
data[].state
string
- The record's state; null for a document.
-
data[].title
string, required
- The entry's title, as the chart shows it.
-
data[].true_copy
object, required
-
data[].true_copy.document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
data[].true_copy.status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
-
data[].void
object
-
data[].void.actor_name
string
- Who voided it; null for an API key.
-
data[].void.reason
string, required
- Why it was voided.
-
data[].void.replaced_by_id
string
- The draft made to replace it, when one was made.
-
data[].void.voided_at
string, required
- When it was voided.
-
data[].work_order_id
string
- A Monthly Client Report's Work Order.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].addenda |
array of object |
yes |
The record's signed addenda, in signing order. |
| data[].addenda[].body |
string |
yes |
What it adds. |
| data[].addenda[].id |
string |
yes |
The addendum. |
| data[].addenda[].reason |
string |
no |
Why it was added. |
| data[].addenda[].signatures |
array of object |
yes |
Its live signatures, oldest first. |
| data[].addenda[].signatures[].channel |
string |
no |
Where it was signed. |
| data[].addenda[].signatures[].method |
string |
yes |
How it was signed. |
| data[].addenda[].signatures[].role |
string |
yes |
The line signed. |
| data[].addenda[].signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| data[].addenda[].signatures[].signed_at |
string |
yes |
When. |
| data[].addenda[].signatures[].signer_name |
string |
yes |
Who signed, as given. |
| data[].addenda[].signed_at |
string |
yes |
When it was signed. |
| data[].addenda[].state |
string |
no |
The addendum's own state. |
| data[].addenda[].true_copy |
object |
yes |
|
| data[].addenda[].true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| data[].addenda[].true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| data[].care_log |
object |
no |
|
| data[].care_log.attested |
boolean |
yes |
Whether the client's attestation is on it: a client or representative signature, or recorded words. |
| data[].care_log.source |
string |
yes |
Where the log was kept. |
| data[].caregiver_id |
string |
no |
The caregiver. |
| data[].caregiver_name |
string |
no |
The caregiver's name. |
| data[].document |
object |
no |
|
| data[].document.file_name |
string |
yes |
Its file name. |
| data[].document.id |
string |
yes |
The document. |
| data[].document.scan_status |
string |
yes |
Its virus scan; only a clean document can be downloaded. |
| data[].kind |
string |
yes |
The kind of record. |
| data[].legacy_signed |
boolean |
yes |
True for a record signed before the electronic record: its signatures are on paper, and it has no true copy. |
| data[].missing_signers |
array of string |
yes |
Each required line no live signature fills, e.g. "caregiver or PCP"; empty unless the record is signed or amended. |
| data[].occurred_on |
string |
yes |
The date the entry is filed under: the visit, effective, service or complaint date, the first of a report's month, the first signature (Mountain) of a notice or emergency information, a scan's paper date, else the upload date (Mountain). |
| data[].path |
string |
no |
The app page the title opens, or a document's download; null for a document whose virus scan is not clean. |
| data[].record_id |
string |
yes |
The record, or for a document or scan the document. |
| data[].service_type |
string |
no |
The service. |
| data[].signatures |
array of object |
yes |
The live signatures, oldest first. |
| data[].signatures[].channel |
string |
no |
Where it was signed. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed, as given. |
| data[].state |
string |
no |
The record's state; null for a document. |
| data[].title |
string |
yes |
The entry's title, as the chart shows it. |
| data[].true_copy |
object |
yes |
|
| data[].true_copy.document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| data[].true_copy.status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
| data[].void |
object |
no |
|
| data[].void.actor_name |
string |
no |
Who voided it; null for an API key. |
| data[].void.reason |
string |
yes |
Why it was voided. |
| data[].void.replaced_by_id |
string |
no |
The draft made to replace it, when one was made. |
| data[].void.voided_at |
string |
yes |
When it was voided. |
| data[].work_order_id |
string |
no |
A Monthly Client Report's Work Order. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientChartSignature
-
channel
string
- Where it was signed.
-
method
string, required
- How it was signed.
-
role
string, required
- The line signed.
-
role_label
string, required
- The line as the record names it, e.g. "complainant".
-
signed_at
string, required
- When.
-
signer_name
string, required
- Who signed, as given.
| Field |
Type |
Required |
Description |
| channel |
string |
no |
Where it was signed. |
| method |
string |
yes |
How it was signed. |
| role |
string |
yes |
The line signed. |
| role_label |
string |
yes |
The line as the record names it, e.g. "complainant". |
| signed_at |
string |
yes |
When. |
| signer_name |
string |
yes |
Who signed, as given. |
ClientChartTrueCopy
-
document_id
string
- The true copy, at /documents/{id}/download, once stored.
-
status
string, required
- none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made.
| Field |
Type |
Required |
Description |
| document_id |
string |
no |
The true copy, at /documents/{id}/download, once stored. |
| status |
string |
yes |
none for a draft, an incomplete signing or a record signed before the electronic record; pending while the copy is made; stored once filed; failed when it could not be made. |
ClientChartVoid
-
actor_name
string
- Who voided it; null for an API key.
-
reason
string, required
- Why it was voided.
-
replaced_by_id
string
- The draft made to replace it, when one was made.
-
voided_at
string, required
- When it was voided.
| Field |
Type |
Required |
Description |
| actor_name |
string |
no |
Who voided it; null for an API key. |
| reason |
string |
yes |
Why it was voided. |
| replaced_by_id |
string |
no |
The draft made to replace it, when one was made. |
| voided_at |
string |
yes |
When it was voided. |
ClientConsentForm
-
answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
client_id
string, required
- The client.
-
declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
id
string, required
- The record's id.
-
inserted_at
string
- When the notice was started.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
signatures
array of object
- The live signatures, oldest first.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| client_id |
string |
yes |
The client. |
| declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the notice was started. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| signatures |
array of object |
no |
The live signatures, oldest first. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
ClientConsentFormAnswers
-
answers
object, required
- Answers by question key; a key sent counts as chosen, and a blank clears its answer. Keys not sent keep their answer.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
Answers by question key; a key sent counts as chosen, and a blank clears its answer. Keys not sent keep their answer. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
ClientConsentFormPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].answers
object, required
- The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact.
-
data[].client_id
string, required
- The client.
-
data[].declined_reason
string
- Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally.
-
data[].defaulted_keys
array of string
- The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen.
-
data[].form_type
string, required
- agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4).
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When the notice was started.
-
data[].lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data[].missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data[].missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data[].missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data[].record_state
string, required
- draft until the first signature; signed notices are corrected by addendum or void.
-
data[].signatures
array of object
- The live signatures, oldest first.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed.
-
data[].signed_at
string
- When the first signature locked it; null on a draft.
-
data[].signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].answers |
object |
yes |
The answers, by question key: a disclosure item's responsible party (agency or consumer), the complaint contact. |
| data[].client_id |
string |
yes |
The client. |
| data[].declined_reason |
string |
no |
Why the client declined to sign a disclosure notice; the office then signs that it was conveyed verbally. |
| data[].defaulted_keys |
array of string |
no |
The choices still holding the answer the notice was prefilled with (its first option): defaults nobody has chosen. |
| data[].form_type |
string |
yes |
agency_disclosure_notice (Chapter 26 6.7) or client_rights_acknowledgement (6.4). |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When the notice was started. |
| data[].lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data[].missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data[].missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data[].missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data[].record_state |
string |
yes |
draft until the first signature; signed notices are corrected by addendum or void. |
| data[].signatures |
array of object |
no |
The live signatures, oldest first. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed. |
| data[].signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data[].signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientConsentFormSignature
-
declined_reason
string
- On a draft disclosure notice: why the client declined to sign. Saved with the office signature in one step, that the notice was conveyed verbally.
-
role
string, required
- office: agency staff, signed as you. A rights acknowledgement is complete with it; a disclosure notice takes it only with declined_reason. client and representative are drawn on the device in the app and answer 422 drawn_required here.
| Field |
Type |
Required |
Description |
| declined_reason |
string |
no |
On a draft disclosure notice: why the client declined to sign. Saved with the office signature in one step, that the notice was conveyed verbally. |
| role |
string |
yes |
office: agency staff, signed as you. A rights acknowledgement is complete with it; a disclosure notice takes it only with declined_reason. client and representative are drawn on the device in the app and answer 422 drawn_required here. |
ClientConsentFormStart
-
form_type
string, required
- The notice to start.
| Field |
Type |
Required |
Description |
| form_type |
string |
yes |
The notice to start. |
ClientEmergencyInfo
-
answers
object, required
- The answers, by question key.
-
client_id
string, required
- The client.
-
id
string, required
- The record's id.
-
inserted_at
string
- When this revision was saved.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
signatures
array of object
- The live signatures, oldest first.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
version
integer, required
- Its revision number.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
The answers, by question key. |
| client_id |
string |
yes |
The client. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When this revision was saved. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| signatures |
array of object |
no |
The live signatures, oldest first. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| version |
integer |
yes |
Its revision number. |
ClientEmergencyInfoInput
-
answers
object, required
- Answers by question key.
| Field |
Type |
Required |
Description |
| answers |
object |
yes |
Answers by question key. |
ClientEmergencyInfoPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].answers
object, required
- The answers, by question key.
-
data[].client_id
string, required
- The client.
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When this revision was saved.
-
data[].missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
data[].missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
data[].missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
data[].record_state
string, required
- draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision.
-
data[].signatures
array of object
- The live signatures, oldest first.
-
data[].signatures[].method
string, required
- How it was signed.
-
data[].signatures[].role
string, required
- The line signed.
-
data[].signatures[].signed_at
string, required
- When.
-
data[].signatures[].signer_name
string, required
- Who signed.
-
data[].signed_at
string
- When the first signature locked it; null on a draft.
-
data[].signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
data[].superseded
boolean
- True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted.
-
data[].version
integer, required
- Its revision number.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].answers |
object |
yes |
The answers, by question key. |
| data[].client_id |
string |
yes |
The client. |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When this revision was saved. |
| data[].missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| data[].missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| data[].missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| data[].record_state |
string |
yes |
draft until the first signature (US-101.32). A signed revision is never deleted or changed: it is corrected with an addendum, voided, or followed by a new revision. |
| data[].signatures |
array of object |
no |
The live signatures, oldest first. |
| data[].signatures[].method |
string |
yes |
How it was signed. |
| data[].signatures[].role |
string |
yes |
The line signed. |
| data[].signatures[].signed_at |
string |
yes |
When. |
| data[].signatures[].signer_name |
string |
yes |
Who signed. |
| data[].signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| data[].signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| data[].superseded |
boolean |
no |
True for a draft never signed whose client has a later signed revision: it is no longer the sheet in force, and may still be deleted. |
| data[].version |
integer |
yes |
Its revision number. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientEmergencyInfoSignature
-
role
string, required
- Whose line to sign: office, agency staff, signed as you. The client's or authorized representative's line is drawn on the device in the app and answers 422 drawn_required here.
| Field |
Type |
Required |
Description |
| role |
string |
yes |
Whose line to sign: office, agency staff, signed as you. The client's or authorized representative's line is drawn on the device in the app and answers 422 drawn_required here. |
ClientHealthSummary
-
client_id
string, required
- The client.
-
edited_at
string
- When it was last edited.
-
generated_at
string
- When it was written.
-
id
string, required
- The record's id.
-
lock_version
integer, required
- Its version; send it back to edit.
-
model_used
string
- The AI model that wrote it.
-
text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| edited_at |
string |
no |
When it was last edited. |
| generated_at |
string |
no |
When it was written. |
| id |
string |
yes |
The record's id. |
| lock_version |
integer |
yes |
Its version; send it back to edit. |
| model_used |
string |
no |
The AI model that wrote it. |
| text |
string |
yes |
The summary, in Markdown. |
ClientHealthSummaryUpdate
-
lock_version
integer, required
- The lock_version it was read with.
-
text
string, required
- The summary, in Markdown.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
The lock_version it was read with. |
| text |
string |
yes |
The summary, in Markdown. |
ClientInformationSheetSaved
-
client_id
string, required
- The client.
-
fields
array of string, required
- The fields written.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| fields |
array of string |
yes |
The fields written. |
ClientInformationSheetUpdate
-
address
string
- As the Information Sheet names it; null or blank clears it.
-
allergies
string
- As the Information Sheet names it; null or blank clears it.
-
city
string
- As the Information Sheet names it; null or blank clears it.
-
clinic_name
string
- As the Information Sheet names it; null or blank clears it.
-
date_of_birth
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_address
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_name
string
- As the Information Sheet names it; null or blank clears it.
-
doctor_phone
string
- As the Information Sheet names it; null or blank clears it.
-
emergency_contact_name
string
- As the Information Sheet names it; null or blank clears it.
-
emergency_contact_phone
string
- As the Information Sheet names it; null or blank clears it.
-
field_staff_instructions
string
- As the Information Sheet names it; null or blank clears it.
-
first_name
string
- As the Information Sheet names it; never blank.
-
gender
string
- As the Information Sheet names it; null or blank clears it.
-
home_phone
string
- As the Information Sheet names it; null or blank clears it.
-
last_name
string
- As the Information Sheet names it; never blank.
-
manager_email
string
- As the Information Sheet names it; null or blank clears it.
-
manager_fax
string
- As the Information Sheet names it; null or blank clears it.
-
manager_name
string
- As the Information Sheet names it; null or blank clears it.
-
manager_phone
string
- As the Information Sheet names it; null or blank clears it.
-
medicaid_id
string
- As the Information Sheet names it; null or blank clears it.
-
medications
string
- As the Information Sheet names it; null or blank clears it.
-
mobile_phone
string
- As the Information Sheet names it; null or blank clears it.
-
other_conditions
string
- As the Information Sheet names it; null or blank clears it.
-
physical_conditions
string
- As the Information Sheet names it; null or blank clears it.
-
ssn
string
- The client's SSN, never returned; leave it out to keep the stored one.
-
state
string
- As the Information Sheet names it; null or blank clears it.
-
supervisor_name
string
- As the Information Sheet names it; null or blank clears it.
-
supervisor_phone
string
- As the Information Sheet names it; null or blank clears it.
-
zip
string
- As the Information Sheet names it; null or blank clears it.
| Field |
Type |
Required |
Description |
| address |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| allergies |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| city |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| clinic_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| date_of_birth |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_address |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| doctor_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| emergency_contact_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| emergency_contact_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| field_staff_instructions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| first_name |
string |
no |
As the Information Sheet names it; never blank. |
| gender |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| home_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| last_name |
string |
no |
As the Information Sheet names it; never blank. |
| manager_email |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_fax |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| manager_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| medicaid_id |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| medications |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| mobile_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| other_conditions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| physical_conditions |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| ssn |
string |
no |
The client's SSN, never returned; leave it out to keep the stored one. |
| state |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| supervisor_name |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| supervisor_phone |
string |
no |
As the Information Sheet names it; null or blank clears it. |
| zip |
string |
no |
As the Information Sheet names it; null or blank clears it. |
ClientInput
Fields to set. A create needs first_name and last_name. A Medicaid client (client_type medicaid, the default) saved without medicaid_id is saved with a medicaid_id_pending warning and cannot be billed until the ID is added; never send a placeholder ID. An update sends only what changes, plus the lock_version it read (required).
-
address
string
-
address_line_2
string
- Apartment, suite or unit; sent to Sandata as ClientAddressLine2.
-
city
string
-
client_type
string
-
county
string
- A Colorado county name; sent to Sandata as ClientCounty.
-
date_of_birth
string
- Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text.
-
eligibility_end_date
string
-
eligibility_start_date
string
-
email
string
-
emergency_contact_name
string
- Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. The client's emergency contact 1, as the client page's People section shows it.
-
emergency_contact_phone
string
- Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. Emergency contact 1's phone, 10 digits.
-
first_name
string
-
gender
string
-
home_phone
string
-
ihss_client
boolean
- An IHSS client (Access's IHSSClient box), whatever client_type says; the PAR panel then shows the IHSS column. A client typed ihss is always one.
-
ihss_code
string
- The IHSS billing code and modifiers off the client's IHSS PAR, as the agency writes them (US-102.17).
-
ihss_par_weeks
string
- The weeks the client's IHSS PAR runs.
-
ihss_units_on_par
integer
- The units the client's IHSS PAR authorizes; the PAR panel shows them as hours a week, units / 4 / weeks.
-
language_preference
string
-
last_name
string
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
medicaid_id
string
- The Colorado Medicaid id.
-
middle_name
string
-
mobile_phone
string
-
payer_program
string
- The program that pays for the client's care.
-
private_insurance_client
boolean
- The client has private insurance (Access's Private box), whatever client_type says. A client typed private_insurance always has.
-
service_end_date
string
-
service_start_date
string
-
ssn
string
- The full SSN, 9 digits, dashes allowed; null clears it. Answers show only ssn_masked.
-
state
string
-
status
string
-
temporary
boolean
- A short-term client, whatever pays for them; the app's active client list hides them by default.
-
zip
string
- 5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits.
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| address_line_2 |
string |
no |
Apartment, suite or unit; sent to Sandata as ClientAddressLine2. |
| city |
string |
no |
|
| client_type |
string |
no |
|
| county |
string |
no |
A Colorado county name; sent to Sandata as ClientCounty. |
| date_of_birth |
string |
no |
Usually YYYY-MM-DD. Stored as entered: a record imported from older software can hold other text. |
| eligibility_end_date |
string |
no |
|
| eligibility_start_date |
string |
no |
|
| email |
string |
no |
|
| emergency_contact_name |
string |
no |
Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. The client's emergency contact 1, as the client page's People section shows it. |
| emergency_contact_phone |
string |
no |
Deprecated: use /api/v1/clients/{id}/relations. Served until 2027-05-31. Emergency contact 1's phone, 10 digits. |
| first_name |
string |
no |
|
| gender |
string |
no |
|
| home_phone |
string |
no |
|
| ihss_client |
boolean |
no |
An IHSS client (Access's IHSSClient box), whatever client_type says; the PAR panel then shows the IHSS column. A client typed ihss is always one. |
| ihss_code |
string |
no |
The IHSS billing code and modifiers off the client's IHSS PAR, as the agency writes them (US-102.17). |
| ihss_par_weeks |
string |
no |
The weeks the client's IHSS PAR runs. |
| ihss_units_on_par |
integer |
no |
The units the client's IHSS PAR authorizes; the PAR panel shows them as hours a week, units / 4 / weeks. |
| language_preference |
string |
no |
|
| last_name |
string |
no |
|
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| medicaid_id |
string |
no |
The Colorado Medicaid id. |
| middle_name |
string |
no |
|
| mobile_phone |
string |
no |
|
| payer_program |
string |
no |
The program that pays for the client's care. |
| private_insurance_client |
boolean |
no |
The client has private insurance (Access's Private box), whatever client_type says. A client typed private_insurance always has. |
| service_end_date |
string |
no |
|
| service_start_date |
string |
no |
|
| ssn |
string |
no |
The full SSN, 9 digits, dashes allowed; null clears it. Answers show only ssn_masked. |
| state |
string |
no |
|
| status |
string |
no |
|
| temporary |
boolean |
no |
A short-term client, whatever pays for them; the app's active client list hides them by default. |
| zip |
string |
no |
5 digits or ZIP+4, like "80202" or "80202-1234". A number sent here is read as its digits. |
ClientMedical
-
allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
client_id
string, required
- The client.
-
clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
functional_limitations.other
string
- Any other limitation.
-
functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
functional_limitations.speech
boolean
- Whether the client has this limitation.
-
functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
functional_limitations.vision
boolean
- Whether the client has this limitation.
-
medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| client_id |
string |
yes |
The client. |
| clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.other |
string |
no |
Any other limitation. |
| functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
ClientMedicalSaved
-
allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
client_id
string, required
- The client.
-
clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
functional_limitations.other
string
- Any other limitation.
-
functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
functional_limitations.speech
boolean
- Whether the client has this limitation.
-
functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
functional_limitations.vision
boolean
- Whether the client has this limitation.
-
medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| client_id |
string |
yes |
The client. |
| clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.other |
string |
no |
Any other limitation. |
| functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
ClientMedicalUpdate
-
allergies
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
clinic_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_address
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_name
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
doctor_phone
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
field_staff_instructions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
functional_limitations
object
- The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent.
-
functional_limitations.breathing
boolean
- Whether the client has this limitation.
-
functional_limitations.hearing
boolean
- Whether the client has this limitation.
-
functional_limitations.mobility
boolean
- Whether the client has this limitation.
-
functional_limitations.other
string
- Any other limitation.
-
functional_limitations.special_diet
boolean
- Whether the client has this limitation.
-
functional_limitations.speech
boolean
- Whether the client has this limitation.
-
functional_limitations.swallowing
boolean
- Whether the client has this limitation.
-
functional_limitations.vision
boolean
- Whether the client has this limitation.
-
medications
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
other_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
physical_conditions
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
special_needs
string
- As the Medical tab shows it; a blank or null clears it on a write.
-
surgeries
string
- As the Medical tab shows it; a blank or null clears it on a write.
| Field |
Type |
Required |
Description |
| allergies |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| clinic_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_address |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_name |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| doctor_phone |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| field_staff_instructions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| functional_limitations |
object |
no |
The Functional Limitations checkboxes and their Other text; null when none were ever saved. A write changes only the keys sent. |
| functional_limitations.breathing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.hearing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.mobility |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.other |
string |
no |
Any other limitation. |
| functional_limitations.special_diet |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.speech |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.swallowing |
boolean |
no |
Whether the client has this limitation. |
| functional_limitations.vision |
boolean |
no |
Whether the client has this limitation. |
| medications |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| other_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| physical_conditions |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| special_needs |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
| surgeries |
string |
no |
As the Medical tab shows it; a blank or null clears it on a write. |
ClientMonthEvidence
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
days
array of object, required
- Every calendar day of the month, in order.
-
days[].care_logs
array of object, required
-
days[].care_logs[].attestation_method
string
- How the client or representative signed it, if they did.
-
days[].care_logs[].attestation_skip_reason
string
- Why the client could not sign, when the caregiver said.
-
days[].care_logs[].care_log_id
string, required
- The care log.
-
days[].care_logs[].comparisons
array of object, required
-
days[].care_logs[].comparisons[].conflict_key
string
- The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed.
-
days[].care_logs[].comparisons[].fields
array of string, required
- On a conflict, the fields that differ: start, end, tasks or attestation.
-
days[].care_logs[].comparisons[].kind
string, required
- What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification.
-
days[].care_logs[].comparisons[].only_care_log
array of string, required
- Task codes done on the care log and not marked on the Work Order.
-
days[].care_logs[].comparisons[].only_work_order
array of string, required
- Task codes marked on the Work Order and not done on the care log.
-
days[].care_logs[].comparisons[].state
string, required
- The comparison's state.
-
days[].care_logs[].comparisons[].visit_id
string
- The visit it was compared with, when one was.
-
days[].care_logs[].end
string
- Its end (the linked visit's, else entered).
-
days[].care_logs[].service_type
string, required
- Its service.
-
days[].care_logs[].shift_number
integer, required
- Its shift of the day.
-
days[].care_logs[].source
string, required
- How the care log was captured.
-
days[].care_logs[].start
string
- Its start (the linked visit's, else entered).
-
days[].claim_changes
array of object, required
-
days[].claim_changes[].batch_id
string, required
- The claim's batch.
-
days[].claim_changes[].care_log_ids
array of string, required
- The care logs of the day that changed.
-
days[].claim_changes[].claim_id
string, required
- The claim sent before the day's care log changed.
-
days[].claim_changes[].fingerprint
string, required
- The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id.
-
days[].claim_changes[].kind
string, required
- changed_after_claim.
-
days[].claim_changes[].state
string, required
- Whether the warning is open or dismissed.
-
days[].date
string, required
- The day (Mountain).
-
days[].dismissals
array of object, required
-
days[].dismissals[].conflict_key
string, required
- The conflict dismissed.
-
days[].dismissals[].dismissed_at
string, required
- When it was dismissed.
-
days[].dismissals[].dismissed_by
string, required
- Who dismissed it.
-
days[].dismissals[].dismissed_by_user_id
string
- The member who dismissed it; null for an API key.
-
days[].dismissals[].reason
string, required
- Why it was dismissed.
-
days[].open_conflict_keys
array of string, required
- The keys of the day's visit, care-log and timesheet-drift conflicts nobody has dismissed.
-
days[].sources
array of object, required
-
days[].sources[].source
string, required
- The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log.
-
days[].sources[].visits
array of object, required
-
days[].sources[].visits[].care_log_id
string
- On a paper_scan row, the paper-scan care log whose times it shows.
-
days[].sources[].visits[].conflict_key
string
- The entry's conflict key, on a conflict only.
-
days[].sources[].visits[].end
string
- Its billable end; null while it is open.
-
days[].sources[].visits[].procedure_code
string
- Its procedure code.
-
days[].sources[].visits[].start
string
- Its billable start (adjusted, else actual).
-
days[].sources[].visits[].state
string, required
- The state of the reconciliation entry the visit is in.
-
days[].sources[].visits[].visit_id
string, required
- The visit; null on a paper_scan row, which has none.
-
days[].state
string, required
- The day's state, the worst of its entries; none with no evidence.
-
days[].timesheet_drifts
array of object, required
- Deprecated, always empty: a Timesheet day now references the day's care log itself, so the two cannot differ. Kept for one release; read nothing from it.
-
days[].timesheet_drifts[].care_log_id
string, required
- The care log of the day.
-
days[].timesheet_drifts[].conflict_key
string, required
- The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals).
-
days[].timesheet_drifts[].dismissed
boolean, required
- Whether it has been dismissed.
-
days[].timesheet_drifts[].fields
array of string, required
- The fields that differ: time_in, time_out or tasks.
-
days[].timesheet_drifts[].only_other
array of string, required
- Task names done on the other record and not on the timesheet.
-
days[].timesheet_drifts[].only_timesheet
array of string, required
- Task names done on the timesheet and not on the other record.
-
days[].timesheet_drifts[].other
object, required
-
days[].timesheet_drifts[].other.tasks
array of string, required
- The names of the tasks marked done that day.
-
days[].timesheet_drifts[].other.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
days[].timesheet_drifts[].other.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
days[].timesheet_drifts[].source
string, required
- What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it.
-
days[].timesheet_drifts[].state
string, required
- Whether the warning is open or dismissed.
-
days[].timesheet_drifts[].timesheet
object, required
-
days[].timesheet_drifts[].timesheet.tasks
array of string, required
- The names of the tasks marked done that day.
-
days[].timesheet_drifts[].timesheet.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
days[].timesheet_drifts[].timesheet.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
days[].timesheet_drifts[].timesheet_id
string, required
- The month's returned timesheet.
-
days[].visit_evidence
string, required
- The day's visit evidence: visits when it has one, else paper_scan when a paper-scan care log holds its times, else none.
-
month
string, required
- YYYY-MM.
-
open_conflicts
integer, required
- How many conflicts in the month are open.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| days |
array of object |
yes |
Every calendar day of the month, in order. |
| days[].care_logs |
array of object |
yes |
|
| days[].care_logs[].attestation_method |
string |
no |
How the client or representative signed it, if they did. |
| days[].care_logs[].attestation_skip_reason |
string |
no |
Why the client could not sign, when the caregiver said. |
| days[].care_logs[].care_log_id |
string |
yes |
The care log. |
| days[].care_logs[].comparisons |
array of object |
yes |
|
| days[].care_logs[].comparisons[].conflict_key |
string |
no |
The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed. |
| days[].care_logs[].comparisons[].fields |
array of string |
yes |
On a conflict, the fields that differ: start, end, tasks or attestation. |
| days[].care_logs[].comparisons[].kind |
string |
yes |
What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification. |
| days[].care_logs[].comparisons[].only_care_log |
array of string |
yes |
Task codes done on the care log and not marked on the Work Order. |
| days[].care_logs[].comparisons[].only_work_order |
array of string |
yes |
Task codes marked on the Work Order and not done on the care log. |
| days[].care_logs[].comparisons[].state |
string |
yes |
The comparison's state. |
| days[].care_logs[].comparisons[].visit_id |
string |
no |
The visit it was compared with, when one was. |
| days[].care_logs[].end |
string |
no |
Its end (the linked visit's, else entered). |
| days[].care_logs[].service_type |
string |
yes |
Its service. |
| days[].care_logs[].shift_number |
integer |
yes |
Its shift of the day. |
| days[].care_logs[].source |
string |
yes |
How the care log was captured. |
| days[].care_logs[].start |
string |
no |
Its start (the linked visit's, else entered). |
| days[].claim_changes |
array of object |
yes |
|
| days[].claim_changes[].batch_id |
string |
yes |
The claim's batch. |
| days[].claim_changes[].care_log_ids |
array of string |
yes |
The care logs of the day that changed. |
| days[].claim_changes[].claim_id |
string |
yes |
The claim sent before the day's care log changed. |
| days[].claim_changes[].fingerprint |
string |
yes |
The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id. |
| days[].claim_changes[].kind |
string |
yes |
changed_after_claim. |
| days[].claim_changes[].state |
string |
yes |
Whether the warning is open or dismissed. |
| days[].date |
string |
yes |
The day (Mountain). |
| days[].dismissals |
array of object |
yes |
|
| days[].dismissals[].conflict_key |
string |
yes |
The conflict dismissed. |
| days[].dismissals[].dismissed_at |
string |
yes |
When it was dismissed. |
| days[].dismissals[].dismissed_by |
string |
yes |
Who dismissed it. |
| days[].dismissals[].dismissed_by_user_id |
string |
no |
The member who dismissed it; null for an API key. |
| days[].dismissals[].reason |
string |
yes |
Why it was dismissed. |
| days[].open_conflict_keys |
array of string |
yes |
The keys of the day's visit, care-log and timesheet-drift conflicts nobody has dismissed. |
| days[].sources |
array of object |
yes |
|
| days[].sources[].source |
string |
yes |
The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log. |
| days[].sources[].visits |
array of object |
yes |
|
| days[].sources[].visits[].care_log_id |
string |
no |
On a paper_scan row, the paper-scan care log whose times it shows. |
| days[].sources[].visits[].conflict_key |
string |
no |
The entry's conflict key, on a conflict only. |
| days[].sources[].visits[].end |
string |
no |
Its billable end; null while it is open. |
| days[].sources[].visits[].procedure_code |
string |
no |
Its procedure code. |
| days[].sources[].visits[].start |
string |
no |
Its billable start (adjusted, else actual). |
| days[].sources[].visits[].state |
string |
yes |
The state of the reconciliation entry the visit is in. |
| days[].sources[].visits[].visit_id |
string |
yes |
The visit; null on a paper_scan row, which has none. |
| days[].state |
string |
yes |
The day's state, the worst of its entries; none with no evidence. |
| days[].timesheet_drifts |
array of object |
yes |
Deprecated, always empty: a Timesheet day now references the day's care log itself, so the two cannot differ. Kept for one release; read nothing from it. |
| days[].timesheet_drifts[].care_log_id |
string |
yes |
The care log of the day. |
| days[].timesheet_drifts[].conflict_key |
string |
yes |
The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals). |
| days[].timesheet_drifts[].dismissed |
boolean |
yes |
Whether it has been dismissed. |
| days[].timesheet_drifts[].fields |
array of string |
yes |
The fields that differ: time_in, time_out or tasks. |
| days[].timesheet_drifts[].only_other |
array of string |
yes |
Task names done on the other record and not on the timesheet. |
| days[].timesheet_drifts[].only_timesheet |
array of string |
yes |
Task names done on the timesheet and not on the other record. |
| days[].timesheet_drifts[].other |
object |
yes |
|
| days[].timesheet_drifts[].other.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| days[].timesheet_drifts[].other.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| days[].timesheet_drifts[].other.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| days[].timesheet_drifts[].source |
string |
yes |
What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it. |
| days[].timesheet_drifts[].state |
string |
yes |
Whether the warning is open or dismissed. |
| days[].timesheet_drifts[].timesheet |
object |
yes |
|
| days[].timesheet_drifts[].timesheet.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| days[].timesheet_drifts[].timesheet.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| days[].timesheet_drifts[].timesheet.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| days[].timesheet_drifts[].timesheet_id |
string |
yes |
The month's returned timesheet. |
| days[].visit_evidence |
string |
yes |
The day's visit evidence: visits when it has one, else paper_scan when a paper-scan care log holds its times, else none. |
| month |
string |
yes |
YYYY-MM. |
| open_conflicts |
integer |
yes |
How many conflicts in the month are open. |
ClientMonthEvidenceCareLog
-
attestation_method
string
- How the client or representative signed it, if they did.
-
attestation_skip_reason
string
- Why the client could not sign, when the caregiver said.
-
care_log_id
string, required
- The care log.
-
comparisons
array of object, required
-
comparisons[].conflict_key
string
- The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed.
-
comparisons[].fields
array of string, required
- On a conflict, the fields that differ: start, end, tasks or attestation.
-
comparisons[].kind
string, required
- What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification.
-
comparisons[].only_care_log
array of string, required
- Task codes done on the care log and not marked on the Work Order.
-
comparisons[].only_work_order
array of string, required
- Task codes marked on the Work Order and not done on the care log.
-
comparisons[].state
string, required
- The comparison's state.
-
comparisons[].visit_id
string
- The visit it was compared with, when one was.
-
end
string
- Its end (the linked visit's, else entered).
-
service_type
string, required
- Its service.
-
shift_number
integer, required
- Its shift of the day.
-
source
string, required
- How the care log was captured.
-
start
string
- Its start (the linked visit's, else entered).
| Field |
Type |
Required |
Description |
| attestation_method |
string |
no |
How the client or representative signed it, if they did. |
| attestation_skip_reason |
string |
no |
Why the client could not sign, when the caregiver said. |
| care_log_id |
string |
yes |
The care log. |
| comparisons |
array of object |
yes |
|
| comparisons[].conflict_key |
string |
no |
The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed. |
| comparisons[].fields |
array of string |
yes |
On a conflict, the fields that differ: start, end, tasks or attestation. |
| comparisons[].kind |
string |
yes |
What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification. |
| comparisons[].only_care_log |
array of string |
yes |
Task codes done on the care log and not marked on the Work Order. |
| comparisons[].only_work_order |
array of string |
yes |
Task codes marked on the Work Order and not done on the care log. |
| comparisons[].state |
string |
yes |
The comparison's state. |
| comparisons[].visit_id |
string |
no |
The visit it was compared with, when one was. |
| end |
string |
no |
Its end (the linked visit's, else entered). |
| service_type |
string |
yes |
Its service. |
| shift_number |
integer |
yes |
Its shift of the day. |
| source |
string |
yes |
How the care log was captured. |
| start |
string |
no |
Its start (the linked visit's, else entered). |
ClientMonthEvidenceCareLogComparison
-
conflict_key
string
- The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed.
-
fields
array of string, required
- On a conflict, the fields that differ: start, end, tasks or attestation.
-
kind
string, required
- What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification.
-
only_care_log
array of string, required
- Task codes done on the care log and not marked on the Work Order.
-
only_work_order
array of string, required
- Task codes marked on the Work Order and not done on the care log.
-
state
string, required
- The comparison's state.
-
visit_id
string
- The visit it was compared with, when one was.
| Field |
Type |
Required |
Description |
| conflict_key |
string |
no |
The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed. |
| fields |
array of string |
yes |
On a conflict, the fields that differ: start, end, tasks or attestation. |
| kind |
string |
yes |
What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification. |
| only_care_log |
array of string |
yes |
Task codes done on the care log and not marked on the Work Order. |
| only_work_order |
array of string |
yes |
Task codes marked on the Work Order and not done on the care log. |
| state |
string |
yes |
The comparison's state. |
| visit_id |
string |
no |
The visit it was compared with, when one was. |
ClientMonthEvidenceClaimChange
-
batch_id
string, required
- The claim's batch.
-
care_log_ids
array of string, required
- The care logs of the day that changed.
-
claim_id
string, required
- The claim sent before the day's care log changed.
-
fingerprint
string, required
- The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id.
-
kind
string, required
- changed_after_claim.
-
state
string, required
- Whether the warning is open or dismissed.
| Field |
Type |
Required |
Description |
| batch_id |
string |
yes |
The claim's batch. |
| care_log_ids |
array of string |
yes |
The care logs of the day that changed. |
| claim_id |
string |
yes |
The claim sent before the day's care log changed. |
| fingerprint |
string |
yes |
The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id. |
| kind |
string |
yes |
changed_after_claim. |
| state |
string |
yes |
Whether the warning is open or dismissed. |
ClientMonthEvidenceDay
-
care_logs
array of object, required
-
care_logs[].attestation_method
string
- How the client or representative signed it, if they did.
-
care_logs[].attestation_skip_reason
string
- Why the client could not sign, when the caregiver said.
-
care_logs[].care_log_id
string, required
- The care log.
-
care_logs[].comparisons
array of object, required
-
care_logs[].comparisons[].conflict_key
string
- The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed.
-
care_logs[].comparisons[].fields
array of string, required
- On a conflict, the fields that differ: start, end, tasks or attestation.
-
care_logs[].comparisons[].kind
string, required
- What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification.
-
care_logs[].comparisons[].only_care_log
array of string, required
- Task codes done on the care log and not marked on the Work Order.
-
care_logs[].comparisons[].only_work_order
array of string, required
- Task codes marked on the Work Order and not done on the care log.
-
care_logs[].comparisons[].state
string, required
- The comparison's state.
-
care_logs[].comparisons[].visit_id
string
- The visit it was compared with, when one was.
-
care_logs[].end
string
- Its end (the linked visit's, else entered).
-
care_logs[].service_type
string, required
- Its service.
-
care_logs[].shift_number
integer, required
- Its shift of the day.
-
care_logs[].source
string, required
- How the care log was captured.
-
care_logs[].start
string
- Its start (the linked visit's, else entered).
-
claim_changes
array of object, required
-
claim_changes[].batch_id
string, required
- The claim's batch.
-
claim_changes[].care_log_ids
array of string, required
- The care logs of the day that changed.
-
claim_changes[].claim_id
string, required
- The claim sent before the day's care log changed.
-
claim_changes[].fingerprint
string, required
- The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id.
-
claim_changes[].kind
string, required
- changed_after_claim.
-
claim_changes[].state
string, required
- Whether the warning is open or dismissed.
-
date
string, required
- The day (Mountain).
-
dismissals
array of object, required
-
dismissals[].conflict_key
string, required
- The conflict dismissed.
-
dismissals[].dismissed_at
string, required
- When it was dismissed.
-
dismissals[].dismissed_by
string, required
- Who dismissed it.
-
dismissals[].dismissed_by_user_id
string
- The member who dismissed it; null for an API key.
-
dismissals[].reason
string, required
- Why it was dismissed.
-
open_conflict_keys
array of string, required
- The keys of the day's visit, care-log and timesheet-drift conflicts nobody has dismissed.
-
sources
array of object, required
-
sources[].source
string, required
- The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log.
-
sources[].visits
array of object, required
-
sources[].visits[].care_log_id
string
- On a paper_scan row, the paper-scan care log whose times it shows.
-
sources[].visits[].conflict_key
string
- The entry's conflict key, on a conflict only.
-
sources[].visits[].end
string
- Its billable end; null while it is open.
-
sources[].visits[].procedure_code
string
- Its procedure code.
-
sources[].visits[].start
string
- Its billable start (adjusted, else actual).
-
sources[].visits[].state
string, required
- The state of the reconciliation entry the visit is in.
-
sources[].visits[].visit_id
string, required
- The visit; null on a paper_scan row, which has none.
-
state
string, required
- The day's state, the worst of its entries; none with no evidence.
-
timesheet_drifts
array of object, required
- Deprecated, always empty: a Timesheet day now references the day's care log itself, so the two cannot differ. Kept for one release; read nothing from it.
-
timesheet_drifts[].care_log_id
string, required
- The care log of the day.
-
timesheet_drifts[].conflict_key
string, required
- The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals).
-
timesheet_drifts[].dismissed
boolean, required
- Whether it has been dismissed.
-
timesheet_drifts[].fields
array of string, required
- The fields that differ: time_in, time_out or tasks.
-
timesheet_drifts[].only_other
array of string, required
- Task names done on the other record and not on the timesheet.
-
timesheet_drifts[].only_timesheet
array of string, required
- Task names done on the timesheet and not on the other record.
-
timesheet_drifts[].other
object, required
-
timesheet_drifts[].other.tasks
array of string, required
- The names of the tasks marked done that day.
-
timesheet_drifts[].other.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
timesheet_drifts[].other.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
timesheet_drifts[].source
string, required
- What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it.
-
timesheet_drifts[].state
string, required
- Whether the warning is open or dismissed.
-
timesheet_drifts[].timesheet
object, required
-
timesheet_drifts[].timesheet.tasks
array of string, required
- The names of the tasks marked done that day.
-
timesheet_drifts[].timesheet.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
timesheet_drifts[].timesheet.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
timesheet_drifts[].timesheet_id
string, required
- The month's returned timesheet.
-
visit_evidence
string, required
- The day's visit evidence: visits when it has one, else paper_scan when a paper-scan care log holds its times, else none.
| Field |
Type |
Required |
Description |
| care_logs |
array of object |
yes |
|
| care_logs[].attestation_method |
string |
no |
How the client or representative signed it, if they did. |
| care_logs[].attestation_skip_reason |
string |
no |
Why the client could not sign, when the caregiver said. |
| care_logs[].care_log_id |
string |
yes |
The care log. |
| care_logs[].comparisons |
array of object |
yes |
|
| care_logs[].comparisons[].conflict_key |
string |
no |
The conflict's key, on a conflict only; dismiss it as a visit conflict is dismissed. |
| care_logs[].comparisons[].fields |
array of string |
yes |
On a conflict, the fields that differ: start, end, tasks or attestation. |
| care_logs[].comparisons[].kind |
string |
yes |
What was compared: the care log's times with the visit evidence, its done tasks with the Work Order's office-typed marks, or the client's signature with the visit's client verification. |
| care_logs[].comparisons[].only_care_log |
array of string |
yes |
Task codes done on the care log and not marked on the Work Order. |
| care_logs[].comparisons[].only_work_order |
array of string |
yes |
Task codes marked on the Work Order and not done on the care log. |
| care_logs[].comparisons[].state |
string |
yes |
The comparison's state. |
| care_logs[].comparisons[].visit_id |
string |
no |
The visit it was compared with, when one was. |
| care_logs[].end |
string |
no |
Its end (the linked visit's, else entered). |
| care_logs[].service_type |
string |
yes |
Its service. |
| care_logs[].shift_number |
integer |
yes |
Its shift of the day. |
| care_logs[].source |
string |
yes |
How the care log was captured. |
| care_logs[].start |
string |
no |
Its start (the linked visit's, else entered). |
| claim_changes |
array of object |
yes |
|
| claim_changes[].batch_id |
string |
yes |
The claim's batch. |
| claim_changes[].care_log_ids |
array of string |
yes |
The care logs of the day that changed. |
| claim_changes[].claim_id |
string |
yes |
The claim sent before the day's care log changed. |
| claim_changes[].fingerprint |
string |
yes |
The warning's fingerprint; dismiss it through POST /api/v1/revenue-warnings/dismissals with the claim_id as subject_id. |
| claim_changes[].kind |
string |
yes |
changed_after_claim. |
| claim_changes[].state |
string |
yes |
Whether the warning is open or dismissed. |
| date |
string |
yes |
The day (Mountain). |
| dismissals |
array of object |
yes |
|
| dismissals[].conflict_key |
string |
yes |
The conflict dismissed. |
| dismissals[].dismissed_at |
string |
yes |
When it was dismissed. |
| dismissals[].dismissed_by |
string |
yes |
Who dismissed it. |
| dismissals[].dismissed_by_user_id |
string |
no |
The member who dismissed it; null for an API key. |
| dismissals[].reason |
string |
yes |
Why it was dismissed. |
| open_conflict_keys |
array of string |
yes |
The keys of the day's visit, care-log and timesheet-drift conflicts nobody has dismissed. |
| sources |
array of object |
yes |
|
| sources[].source |
string |
yes |
The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log. |
| sources[].visits |
array of object |
yes |
|
| sources[].visits[].care_log_id |
string |
no |
On a paper_scan row, the paper-scan care log whose times it shows. |
| sources[].visits[].conflict_key |
string |
no |
The entry's conflict key, on a conflict only. |
| sources[].visits[].end |
string |
no |
Its billable end; null while it is open. |
| sources[].visits[].procedure_code |
string |
no |
Its procedure code. |
| sources[].visits[].start |
string |
no |
Its billable start (adjusted, else actual). |
| sources[].visits[].state |
string |
yes |
The state of the reconciliation entry the visit is in. |
| sources[].visits[].visit_id |
string |
yes |
The visit; null on a paper_scan row, which has none. |
| state |
string |
yes |
The day's state, the worst of its entries; none with no evidence. |
| timesheet_drifts |
array of object |
yes |
Deprecated, always empty: a Timesheet day now references the day's care log itself, so the two cannot differ. Kept for one release; read nothing from it. |
| timesheet_drifts[].care_log_id |
string |
yes |
The care log of the day. |
| timesheet_drifts[].conflict_key |
string |
yes |
The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals). |
| timesheet_drifts[].dismissed |
boolean |
yes |
Whether it has been dismissed. |
| timesheet_drifts[].fields |
array of string |
yes |
The fields that differ: time_in, time_out or tasks. |
| timesheet_drifts[].only_other |
array of string |
yes |
Task names done on the other record and not on the timesheet. |
| timesheet_drifts[].only_timesheet |
array of string |
yes |
Task names done on the timesheet and not on the other record. |
| timesheet_drifts[].other |
object |
yes |
|
| timesheet_drifts[].other.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| timesheet_drifts[].other.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| timesheet_drifts[].other.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| timesheet_drifts[].source |
string |
yes |
What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it. |
| timesheet_drifts[].state |
string |
yes |
Whether the warning is open or dismissed. |
| timesheet_drifts[].timesheet |
object |
yes |
|
| timesheet_drifts[].timesheet.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| timesheet_drifts[].timesheet.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| timesheet_drifts[].timesheet.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| timesheet_drifts[].timesheet_id |
string |
yes |
The month's returned timesheet. |
| visit_evidence |
string |
yes |
The day's visit evidence: visits when it has one, else paper_scan when a paper-scan care log holds its times, else none. |
ClientMonthEvidenceDismissal
-
conflict_key
string, required
- The conflict dismissed.
-
dismissed_at
string, required
- When it was dismissed.
-
dismissed_by
string, required
- Who dismissed it.
-
dismissed_by_user_id
string
- The member who dismissed it; null for an API key.
-
reason
string, required
- Why it was dismissed.
| Field |
Type |
Required |
Description |
| conflict_key |
string |
yes |
The conflict dismissed. |
| dismissed_at |
string |
yes |
When it was dismissed. |
| dismissed_by |
string |
yes |
Who dismissed it. |
| dismissed_by_user_id |
string |
no |
The member who dismissed it; null for an API key. |
| reason |
string |
yes |
Why it was dismissed. |
ClientMonthEvidenceDismissed
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
dismissed
integer, required
- How many conflicts this request dismissed; 0 when none was open.
-
month
string, required
- YYYY-MM.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| dismissed |
integer |
yes |
How many conflicts this request dismissed; 0 when none was open. |
| month |
string |
yes |
YYYY-MM. |
ClientMonthEvidenceDriftSide
-
tasks
array of string, required
- The names of the tasks marked done that day.
-
time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
| Field |
Type |
Required |
Description |
| tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
ClientMonthEvidenceSource
-
source
string, required
- The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log.
-
visits
array of object, required
-
visits[].care_log_id
string
- On a paper_scan row, the paper-scan care log whose times it shows.
-
visits[].conflict_key
string
- The entry's conflict key, on a conflict only.
-
visits[].end
string
- Its billable end; null while it is open.
-
visits[].procedure_code
string
- Its procedure code.
-
visits[].start
string
- Its billable start (adjusted, else actual).
-
visits[].state
string, required
- The state of the reconciliation entry the visit is in.
-
visits[].visit_id
string, required
- The visit; null on a paper_scan row, which has none.
| Field |
Type |
Required |
Description |
| source |
string |
yes |
The evidence source; paper_scan, on a day with no visit, is the times of its paper-scan care log. |
| visits |
array of object |
yes |
|
| visits[].care_log_id |
string |
no |
On a paper_scan row, the paper-scan care log whose times it shows. |
| visits[].conflict_key |
string |
no |
The entry's conflict key, on a conflict only. |
| visits[].end |
string |
no |
Its billable end; null while it is open. |
| visits[].procedure_code |
string |
no |
Its procedure code. |
| visits[].start |
string |
no |
Its billable start (adjusted, else actual). |
| visits[].state |
string |
yes |
The state of the reconciliation entry the visit is in. |
| visits[].visit_id |
string |
yes |
The visit; null on a paper_scan row, which has none. |
ClientMonthEvidenceTimesheetDrift
-
care_log_id
string, required
- The care log of the day.
-
conflict_key
string, required
- The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals).
-
dismissed
boolean, required
- Whether it has been dismissed.
-
fields
array of string, required
- The fields that differ: time_in, time_out or tasks.
-
only_other
array of string, required
- Task names done on the other record and not on the timesheet.
-
only_timesheet
array of string, required
- Task names done on the timesheet and not on the other record.
-
other
object, required
-
other.tasks
array of string, required
- The names of the tasks marked done that day.
-
other.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
other.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
source
string, required
- What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it.
-
state
string, required
- Whether the warning is open or dismissed.
-
timesheet
object, required
-
timesheet.tasks
array of string, required
- The names of the tasks marked done that day.
-
timesheet.time_in
string, required
- Time In, Mountain, HH:MM; null when it has none.
-
timesheet.time_out
string, required
- Time Out, Mountain, HH:MM; null when it has none.
-
timesheet_id
string, required
- The month's returned timesheet.
| Field |
Type |
Required |
Description |
| care_log_id |
string |
yes |
The care log of the day. |
| conflict_key |
string |
yes |
The drift's key, built from the differing values; dismiss it through POST /api/v1/evidence-dismissals (or the month through POST /api/v1/clients/{id}/evidence/dismissals). |
| dismissed |
boolean |
yes |
Whether it has been dismissed. |
| fields |
array of string |
yes |
The fields that differ: time_in, time_out or tasks. |
| only_other |
array of string |
yes |
Task names done on the other record and not on the timesheet. |
| only_timesheet |
array of string |
yes |
Task names done on the timesheet and not on the other record. |
| other |
object |
yes |
|
| other.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| other.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| other.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| source |
string |
yes |
What the returned timesheet's day was compared with: the care log, or the Work Order entry and marks assembled from it. |
| state |
string |
yes |
Whether the warning is open or dismissed. |
| timesheet |
object |
yes |
|
| timesheet.tasks |
array of string |
yes |
The names of the tasks marked done that day. |
| timesheet.time_in |
string |
yes |
Time In, Mountain, HH:MM; null when it has none. |
| timesheet.time_out |
string |
yes |
Time Out, Mountain, HH:MM; null when it has none. |
| timesheet_id |
string |
yes |
The month's returned timesheet. |
ClientMonthEvidenceVisit
-
care_log_id
string
- On a paper_scan row, the paper-scan care log whose times it shows.
-
conflict_key
string
- The entry's conflict key, on a conflict only.
-
end
string
- Its billable end; null while it is open.
-
procedure_code
string
- Its procedure code.
-
start
string
- Its billable start (adjusted, else actual).
-
state
string, required
- The state of the reconciliation entry the visit is in.
-
visit_id
string, required
- The visit; null on a paper_scan row, which has none.
| Field |
Type |
Required |
Description |
| care_log_id |
string |
no |
On a paper_scan row, the paper-scan care log whose times it shows. |
| conflict_key |
string |
no |
The entry's conflict key, on a conflict only. |
| end |
string |
no |
Its billable end; null while it is open. |
| procedure_code |
string |
no |
Its procedure code. |
| start |
string |
no |
Its billable start (adjusted, else actual). |
| state |
string |
yes |
The state of the reconciliation entry the visit is in. |
| visit_id |
string |
yes |
The visit; null on a paper_scan row, which has none. |
ClientNote
A note in a client's communication log: when the agency was in touch, with whom, about which caregivers, and what was said. written_via names the channel that last changed its text: mcp or api, or none for the HomeCareBilling app.
-
attachment_count
integer
- How many files are attached; the files are not returned.
-
caregiver_ids
array of string
- The agency's caregivers the note concerns (their ids). A caregiver of another agency is refused.
-
client_id
string, required
- The client the note is about.
-
contact_types
array of string, required
- Every party the contact was with, one or more: the consumer, the case manager, an employee, or other.
-
employee_names
array of string
- Employees the note names who are not linked from the caregiver list (caregiver_ids).
-
id
string, required
- The record's id.
-
inserted_at
string
- When the note was created.
-
manager_initials
string
- The initials of who took the note (taken by).
-
note_date
string, required
- The day of the contact.
-
note_text
string, required
- What was said or done.
-
time_of_contact
string
- The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone).
-
updated_at
string
- When the note last changed.
-
written_via
string
- The channel that last changed the note's text (mcp, api); none for the HomeCareBilling app.
| Field |
Type |
Required |
Description |
| attachment_count |
integer |
no |
How many files are attached; the files are not returned. |
| caregiver_ids |
array of string |
no |
The agency's caregivers the note concerns (their ids). A caregiver of another agency is refused. |
| client_id |
string |
yes |
The client the note is about. |
| contact_types |
array of string |
yes |
Every party the contact was with, one or more: the consumer, the case manager, an employee, or other. |
| employee_names |
array of string |
no |
Employees the note names who are not linked from the caregiver list (caregiver_ids). |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the note was created. |
| manager_initials |
string |
no |
The initials of who took the note (taken by). |
| note_date |
string |
yes |
The day of the contact. |
| note_text |
string |
yes |
What was said or done. |
| time_of_contact |
string |
no |
The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone). |
| updated_at |
string |
no |
When the note last changed. |
| written_via |
string |
no |
The channel that last changed the note's text (mcp, api); none for the HomeCareBilling app. |
ClientNoteInput
Fields to set. A create needs note_date, contact_types and note_text; manager_initials defaults to the API key's user's initials. An update sends only what changes, and must change something. Notes carry no lock_version.
-
caregiver_ids
array of string
- The agency's caregivers the note concerns (their ids). A caregiver of another agency is refused.
-
contact_types
array of string
- Every party the contact was with, one or more: the consumer, the case manager, an employee, or other.
-
employee_names
array of string
- Employees the note names who are not linked from the caregiver list (caregiver_ids).
-
manager_initials
string
- The initials of who took the note (taken by).
-
note_date
string
- The day of the contact.
-
note_text
string
- What was said or done.
-
time_of_contact
string
- The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone).
| Field |
Type |
Required |
Description |
| caregiver_ids |
array of string |
no |
The agency's caregivers the note concerns (their ids). A caregiver of another agency is refused. |
| contact_types |
array of string |
no |
Every party the contact was with, one or more: the consumer, the case manager, an employee, or other. |
| employee_names |
array of string |
no |
Employees the note names who are not linked from the caregiver list (caregiver_ids). |
| manager_initials |
string |
no |
The initials of who took the note (taken by). |
| note_date |
string |
no |
The day of the contact. |
| note_text |
string |
no |
What was said or done. |
| time_of_contact |
string |
no |
The time of the contact, HH:MM or HH:MM:SS, as typed (no time zone). |
ClientNotePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ClientNote, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientNote |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientOtherService
One outside provider serving the client; the scheduler reads its days so a caregiver is not booked over it.
-
address
string
- The provider's address.
-
client_id
string, required
- The client.
-
company
string
- The provider's company.
-
days
array of string, required
- The weekdays it comes, as su mo tu we th fr sa, in week order.
-
description
string
- What the provider does for the client.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
kind
string, required
- Adult day care, a CNA, an RN, PT, or another.
-
phone
string
- The provider's phone.
-
times
object, required
- A time for a chosen day, keyed by its code; a day with none is absent.
-
times.fr
string
- The time on Friday.
-
times.mo
string
- The time on Monday.
-
times.sa
string
- The time on Saturday.
-
times.su
string
- The time on Sunday.
-
times.th
string
- The time on Thursday.
-
times.tu
string
- The time on Tuesday.
-
times.we
string
- The time on Wednesday.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| address |
string |
no |
The provider's address. |
| client_id |
string |
yes |
The client. |
| company |
string |
no |
The provider's company. |
| days |
array of string |
yes |
The weekdays it comes, as su mo tu we th fr sa, in week order. |
| description |
string |
no |
What the provider does for the client. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| kind |
string |
yes |
Adult day care, a CNA, an RN, PT, or another. |
| phone |
string |
no |
The provider's phone. |
| times |
object |
yes |
A time for a chosen day, keyed by its code; a day with none is absent. |
| times.fr |
string |
no |
The time on Friday. |
| times.mo |
string |
no |
The time on Monday. |
| times.sa |
string |
no |
The time on Saturday. |
| times.su |
string |
no |
The time on Sunday. |
| times.th |
string |
no |
The time on Thursday. |
| times.tu |
string |
no |
The time on Tuesday. |
| times.we |
string |
no |
The time on Wednesday. |
| updated_at |
string |
no |
When it last changed. |
ClientOtherServiceInput
A record with no kind, an unknown day, or a field past its length answers 422 naming the field.
-
address
string
- The provider's address, at most 255 characters.
-
company
string
- The provider's company, at most 255 characters.
-
days
array of string
- The weekdays it comes, any of su mo tu we th fr sa; stored in week order, each once.
-
description
string
- What the provider does, at most 2000 characters.
-
kind
string
- Required on a create: adult_day, cna, rn, pt or other.
-
phone
string
- The provider's phone, at most 255 characters.
-
times
object
- A time for a chosen day, keyed by its code, at most 50 characters; a time for a day not chosen is dropped.
-
times.fr
string
- The time on Friday.
-
times.mo
string
- The time on Monday.
-
times.sa
string
- The time on Saturday.
-
times.su
string
- The time on Sunday.
-
times.th
string
- The time on Thursday.
-
times.tu
string
- The time on Tuesday.
-
times.we
string
- The time on Wednesday.
| Field |
Type |
Required |
Description |
| address |
string |
no |
The provider's address, at most 255 characters. |
| company |
string |
no |
The provider's company, at most 255 characters. |
| days |
array of string |
no |
The weekdays it comes, any of su mo tu we th fr sa; stored in week order, each once. |
| description |
string |
no |
What the provider does, at most 2000 characters. |
| kind |
string |
no |
Required on a create: adult_day, cna, rn, pt or other. |
| phone |
string |
no |
The provider's phone, at most 255 characters. |
| times |
object |
no |
A time for a chosen day, keyed by its code, at most 50 characters; a time for a day not chosen is dropped. |
| times.fr |
string |
no |
The time on Friday. |
| times.mo |
string |
no |
The time on Monday. |
| times.sa |
string |
no |
The time on Saturday. |
| times.su |
string |
no |
The time on Sunday. |
| times.th |
string |
no |
The time on Thursday. |
| times.tu |
string |
no |
The time on Tuesday. |
| times.we |
string |
no |
The time on Wednesday. |
ClientOtherServicePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ClientOtherService, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientOtherService |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Client, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Client |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientRelation
"Maria Lopez is the client's responsible party since 2025-03-01". ends_on null means current; a current relation of a kind the client holds one of (responsible_party, representative, case_manager, case_manager_supervisor, cma_office) is replaced, never doubled.
-
client_id
string, required
- The client.
-
contact
object, required
- A responsible party, representative, emergency contact, case manager, physician, pharmacy or key holder. One contact can serve several clients; an edit reaches every one of them.
-
contact.address
string
-
contact.address_line_2
string
- Apartment, suite or unit.
-
contact.alt_phone
string
- A second phone, 10 digits.
-
contact.caregiver_id
string
- The caregiver this person is, when the contact is one.
-
contact.city
string
-
contact.client_ids
array of string
- On a merge's answer only: the clients those relations serve; each one's page shows this contact.
-
contact.email
string
-
contact.fax
string
- 10 digits.
-
contact.first_name
string
-
contact.id
string, required
- The record's id.
-
contact.inserted_at
string
- When it was recorded.
-
contact.last_name
string
-
contact.lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
contact.organization
string
- The organization, such as the pharmacy's name or a CMA office's county.
-
contact.phone
string
- 10 digits.
-
contact.relation_ids
array of string
- On a merge's answer only: the relations the merge moved onto this contact.
-
contact.state
string
-
contact.updated_at
string
- When it last changed.
-
contact.zip
string
- 5 digits or ZIP+4.
-
contact_id
string, required
- The contact.
-
ends_on
string
- Until when; null while current.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
kind
string, required
- What the person is to the client.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
-
rank
integer, required
- The order among the client's current relations of the kind: emergency contact 1, 2, 3.
-
relationship
string
- The relationship, as a closed value.
-
relationship_label
string
- The relationship as the agency wrote it, such as "Daughter".
-
starts_on
string
- Since when; null when the date is not known.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| contact |
object |
yes |
A responsible party, representative, emergency contact, case manager, physician, pharmacy or key holder. One contact can serve several clients; an edit reaches every one of them. |
| contact.address |
string |
no |
|
| contact.address_line_2 |
string |
no |
Apartment, suite or unit. |
| contact.alt_phone |
string |
no |
A second phone, 10 digits. |
| contact.caregiver_id |
string |
no |
The caregiver this person is, when the contact is one. |
| contact.city |
string |
no |
|
| contact.client_ids |
array of string |
no |
On a merge's answer only: the clients those relations serve; each one's page shows this contact. |
| contact.email |
string |
no |
|
| contact.fax |
string |
no |
10 digits. |
| contact.first_name |
string |
no |
|
| contact.id |
string |
yes |
The record's id. |
| contact.inserted_at |
string |
no |
When it was recorded. |
| contact.last_name |
string |
no |
|
| contact.lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| contact.organization |
string |
no |
The organization, such as the pharmacy's name or a CMA office's county. |
| contact.phone |
string |
no |
10 digits. |
| contact.relation_ids |
array of string |
no |
On a merge's answer only: the relations the merge moved onto this contact. |
| contact.state |
string |
no |
|
| contact.updated_at |
string |
no |
When it last changed. |
| contact.zip |
string |
no |
5 digits or ZIP+4. |
| contact_id |
string |
yes |
The contact. |
| ends_on |
string |
no |
Until when; null while current. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| kind |
string |
yes |
What the person is to the client. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
|
| rank |
integer |
yes |
The order among the client's current relations of the kind: emergency contact 1, 2, 3. |
| relationship |
string |
no |
The relationship, as a closed value. |
| relationship_label |
string |
no |
The relationship as the agency wrote it, such as "Daughter". |
| starts_on |
string |
no |
Since when; null when the date is not known. |
| updated_at |
string |
no |
When it last changed. |
ClientRelationEnd
-
ends_on
string
- YYYY-MM-DD; today (Mountain) when left out.
| Field |
Type |
Required |
Description |
| ends_on |
string |
no |
YYYY-MM-DD; today (Mountain) when left out. |
ClientRelationInput
Name the person by contact_id (a contact already on file, on a client you may open) or give its fields as contact. An unknown kind, or a contact with every field blank, answers 422 naming the field.
-
contact
object
- The new contact's fields, when contact_id is not sent.
-
contact.address
string
-
contact.address_line_2
string
- Apartment, suite or unit.
-
contact.alt_phone
string
- A second phone, 10 digits.
-
contact.city
string
-
contact.email
string
-
contact.fax
string
- 10 digits.
-
contact.first_name
string
-
contact.last_name
string
-
contact.lock_version
integer
- Required on PATCH /api/v1/contacts/{id}: the value it was read with; if it changed since, the answer is 409 stale_record. Not read inside a new relation's contact.
-
contact.organization
string
- The organization, such as the pharmacy's name or, for a CMA office, a Colorado county.
-
contact.phone
string
- 10 digits.
-
contact.state
string
-
contact.zip
string
- 5 digits or ZIP+4.
-
contact_id
string
- A contact already on file.
-
kind
string, required
- What the person is to the client.
-
notes
string
-
rank
integer
- The order among the client's current relations of the kind, 1 when left out. A current relation of the same kind and rank is ended by the new one. Current ranks stay contiguous: a rank past the kind's last current one becomes the next free rank, which the response carries.
-
relationship
string
- The relationship as a closed value; read from relationship_label when left out.
-
relationship_label
string
- The relationship as the agency writes it, such as "Daughter".
-
replaces
object
- The current relation this one replaces, as it was read. Required when the kind is one the client holds one of (responsible_party, representative, case_manager, case_manager_supervisor, cma_office) and the client has a current one; left out, or naming a relation no longer current or at an old lock_version, it answers 409 stale_record and nothing is saved.
-
replaces.id
string, required
- The current relation's id.
-
replaces.lock_version
integer, required
- Its lock_version, as read.
-
starts_on
string
- Since when; today (Mountain) when left out.
| Field |
Type |
Required |
Description |
| contact |
object |
no |
The new contact's fields, when contact_id is not sent. |
| contact.address |
string |
no |
|
| contact.address_line_2 |
string |
no |
Apartment, suite or unit. |
| contact.alt_phone |
string |
no |
A second phone, 10 digits. |
| contact.city |
string |
no |
|
| contact.email |
string |
no |
|
| contact.fax |
string |
no |
10 digits. |
| contact.first_name |
string |
no |
|
| contact.last_name |
string |
no |
|
| contact.lock_version |
integer |
no |
Required on PATCH /api/v1/contacts/{id}: the value it was read with; if it changed since, the answer is 409 stale_record. Not read inside a new relation's contact. |
| contact.organization |
string |
no |
The organization, such as the pharmacy's name or, for a CMA office, a Colorado county. |
| contact.phone |
string |
no |
10 digits. |
| contact.state |
string |
no |
|
| contact.zip |
string |
no |
5 digits or ZIP+4. |
| contact_id |
string |
no |
A contact already on file. |
| kind |
string |
yes |
What the person is to the client. |
| notes |
string |
no |
|
| rank |
integer |
no |
The order among the client's current relations of the kind, 1 when left out. A current relation of the same kind and rank is ended by the new one. Current ranks stay contiguous: a rank past the kind's last current one becomes the next free rank, which the response carries. |
| relationship |
string |
no |
The relationship as a closed value; read from relationship_label when left out. |
| relationship_label |
string |
no |
The relationship as the agency writes it, such as "Daughter". |
| replaces |
object |
no |
The current relation this one replaces, as it was read. Required when the kind is one the client holds one of (responsible_party, representative, case_manager, case_manager_supervisor, cma_office) and the client has a current one; left out, or naming a relation no longer current or at an old lock_version, it answers 409 stale_record and nothing is saved. |
| replaces.id |
string |
yes |
The current relation's id. |
| replaces.lock_version |
integer |
yes |
Its lock_version, as read. |
| starts_on |
string |
no |
Since when; today (Mountain) when left out. |
ClientRelationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ClientRelation, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ClientRelation |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ClientSupervisoryPlan
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
planned_supervisory_day
integer
- One day of the month for all four quarters, used only when no per-quarter field is sent. A day needs a month.
-
planned_supervisory_offset
integer
- One month of the quarter (1, 2 or 3) for all four quarters, used only when no per-quarter field is sent. null clears every quarter's month.
-
planned_supervisory_q1_day
integer
- Quarter 1's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q1_offset.
-
planned_supervisory_q1_offset
integer
- Quarter 1's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q1_day null too, leaves quarter 1 unplanned.
-
planned_supervisory_q2_day
integer
- Quarter 2's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q2_offset.
-
planned_supervisory_q2_offset
integer
- Quarter 2's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q2_day null too, leaves quarter 2 unplanned.
-
planned_supervisory_q3_day
integer
- Quarter 3's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q3_offset.
-
planned_supervisory_q3_offset
integer
- Quarter 3's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q3_day null too, leaves quarter 3 unplanned.
-
planned_supervisory_q4_day
integer
- Quarter 4's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q4_offset.
-
planned_supervisory_q4_offset
integer
- Quarter 4's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q4_day null too, leaves quarter 4 unplanned.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| planned_supervisory_day |
integer |
no |
One day of the month for all four quarters, used only when no per-quarter field is sent. A day needs a month. |
| planned_supervisory_offset |
integer |
no |
One month of the quarter (1, 2 or 3) for all four quarters, used only when no per-quarter field is sent. null clears every quarter's month. |
| planned_supervisory_q1_day |
integer |
no |
Quarter 1's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q1_offset. |
| planned_supervisory_q1_offset |
integer |
no |
Quarter 1's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q1_day null too, leaves quarter 1 unplanned. |
| planned_supervisory_q2_day |
integer |
no |
Quarter 2's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q2_offset. |
| planned_supervisory_q2_offset |
integer |
no |
Quarter 2's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q2_day null too, leaves quarter 2 unplanned. |
| planned_supervisory_q3_day |
integer |
no |
Quarter 3's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q3_offset. |
| planned_supervisory_q3_offset |
integer |
no |
Quarter 3's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q3_day null too, leaves quarter 3 unplanned. |
| planned_supervisory_q4_day |
integer |
no |
Quarter 4's planned day of that month, 1-31. null leaves the day unchosen. A day needs planned_supervisory_q4_offset. |
| planned_supervisory_q4_offset |
integer |
no |
Quarter 4's planned month: 1, 2 or 3, the month of that quarter. null, with planned_supervisory_q4_day null too, leaves quarter 4 unplanned. |
ClientWriteResult
-
data
Client, required
-
warnings
array of object, required
- What the write was saved despite, one item per finding: medicaid_id_pending on field medicaid_id (a Medicaid client with no Medicaid ID yet, which cannot be billed until it is added); medicaid_id_removed on field medicaid_id (an update erased the Medicaid ID the client had); client_care.status_off_path on field status (an update moved the status to one the usual path does not offer from the old status; the move was saved); client_care.active_without_start_date on field service_start_date (the saved client is active with no service start date: a create, whose status defaults to active, or an update that made it active).
-
warnings[].code
string, required
-
warnings[].field
string
-
warnings[].message
string, required
| Field |
Type |
Required |
Description |
| data |
Client |
yes |
|
| warnings |
array of object |
yes |
What the write was saved despite, one item per finding: medicaid_id_pending on field medicaid_id (a Medicaid client with no Medicaid ID yet, which cannot be billed until it is added); medicaid_id_removed on field medicaid_id (an update erased the Medicaid ID the client had); client_care.status_off_path on field status (an update moved the status to one the usual path does not offer from the old status; the move was saved); client_care.active_without_start_date on field service_start_date (the saved client is active with no service start date: a create, whose status defaults to active, or an update that made it active). |
| warnings[].code |
string |
yes |
|
| warnings[].field |
string |
no |
|
| warnings[].message |
string |
yes |
|
CloseDocument
-
generated_at
string, required
- When it was generated.
-
id
string, required
- The record's id.
-
summary
object, required
- The snapshot: client and caregiver, service, month, close reason and date, hours and billing code. Its close notes are left out, as from every Work Order read.
-
work_order_id
string, required
- The Work Order it closes.
| Field |
Type |
Required |
Description |
| generated_at |
string |
yes |
When it was generated. |
| id |
string |
yes |
The record's id. |
| summary |
object |
yes |
The snapshot: client and caregiver, service, month, close reason and date, hours and billing code. Its close notes are left out, as from every Work Order read. |
| work_order_id |
string |
yes |
The Work Order it closes. |
Complaint
A complaint about the agency's care, from intake to resolution. The status moves intake, investigating, interviewing, visiting, following up, resolved; closed from any open phase. A move to a phase fills in its date when none is given.
-
answers
object
- The answers recorded, by the agency's question key.
-
caregiver_id
string
- The caregiver it concerns, if any.
-
caregiver_interview_date
string
- When the caregiver was interviewed.
-
caregiver_name
string
- The caregiver's name, as recorded.
-
case_manager_followup_date
string
- When the case manager followed up.
-
client_id
string, required
- The client the complaint is about.
-
client_name
string
- The client's name, as recorded on the complaint.
-
complainant_name
string
- Who complained.
-
complaint_date
string
- The day it was received.
-
complaint_location
string
- Where it arose.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the complaint was logged.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
proposed_resolution
string
- The resolution proposed.
-
record_state
string
- Where the complaint stands as a signed record (US-101.31): draft (it changes here), signed or amended (locked: only its status moves; corrected with an addendum, or voided and copied into a new draft on the complaint page), voided. signing_complete says whether every required line is signed.
-
resolution_date
string
- When it was resolved.
-
signatures
array of object
- The live signatures, oldest first.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
status
string, required
- The complaint's phase.
-
supervisory_visit_date
string
- When the supervisory visit took place.
-
updated_at
string
- When the complaint last changed.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
The answers recorded, by the agency's question key. |
| caregiver_id |
string |
no |
The caregiver it concerns, if any. |
| caregiver_interview_date |
string |
no |
When the caregiver was interviewed. |
| caregiver_name |
string |
no |
The caregiver's name, as recorded. |
| case_manager_followup_date |
string |
no |
When the case manager followed up. |
| client_id |
string |
yes |
The client the complaint is about. |
| client_name |
string |
no |
The client's name, as recorded on the complaint. |
| complainant_name |
string |
no |
Who complained. |
| complaint_date |
string |
no |
The day it was received. |
| complaint_location |
string |
no |
Where it arose. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the complaint was logged. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| proposed_resolution |
string |
no |
The resolution proposed. |
| record_state |
string |
no |
Where the complaint stands as a signed record (US-101.31): draft (it changes here), signed or amended (locked: only its status moves; corrected with an addendum, or voided and copied into a new draft on the complaint page), voided. signing_complete says whether every required line is signed. |
| resolution_date |
string |
no |
When it was resolved. |
| signatures |
array of object |
no |
The live signatures, oldest first. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| status |
string |
yes |
The complaint's phase. |
| supervisory_visit_date |
string |
no |
When the supervisory visit took place. |
| updated_at |
string |
no |
When the complaint last changed. |
ComplaintCreate
Logs a complaint at intake for a client of the agency. client_id is required; caregiver_id is optional; complaint_date defaults to today.
-
answers
object
- Answers by the agency's question key: text, true or false for a yes/no, or a list of choices. An empty answer clears it.
-
caregiver_id
string
- The caregiver it concerns, if any.
-
client_id
string, required
- The client the complaint is about.
-
complainant_email
string
- The complainant's email. Written, never returned.
-
complainant_name
string
- Who complained.
-
complainant_phone
string
- The complainant's phone. Written, never returned.
-
complaint_date
string
- The day it was received.
-
complaint_location
string
- Where it arose.
-
proposed_resolution
string
- The resolution proposed.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
Answers by the agency's question key: text, true or false for a yes/no, or a list of choices. An empty answer clears it. |
| caregiver_id |
string |
no |
The caregiver it concerns, if any. |
| client_id |
string |
yes |
The client the complaint is about. |
| complainant_email |
string |
no |
The complainant's email. Written, never returned. |
| complainant_name |
string |
no |
Who complained. |
| complainant_phone |
string |
no |
The complainant's phone. Written, never returned. |
| complaint_date |
string |
no |
The day it was received. |
| complaint_location |
string |
no |
Where it arose. |
| proposed_resolution |
string |
no |
The resolution proposed. |
ComplaintInput
Fields to change, plus the lock_version read (required). status moves only along the complaint's phases (422 invalid_transition otherwise); a move fills in that phase's date when none is sent or stored.
-
answers
object
- Answers by the agency's question key: text, true or false for a yes/no, or a list of choices. An empty answer clears it.
-
caregiver_interview_date
string
- When the caregiver was interviewed.
-
case_manager_followup_date
string
- When the case manager followed up.
-
complainant_name
string
- Who complained.
-
complaint_date
string
- The day it was received.
-
complaint_location
string
- Where it arose.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
proposed_resolution
string
- The resolution proposed.
-
resolution_date
string
- When it was resolved.
-
status
string
- The complaint's phase.
-
supervisory_visit_date
string
- When the supervisory visit took place.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
Answers by the agency's question key: text, true or false for a yes/no, or a list of choices. An empty answer clears it. |
| caregiver_interview_date |
string |
no |
When the caregiver was interviewed. |
| case_manager_followup_date |
string |
no |
When the case manager followed up. |
| complainant_name |
string |
no |
Who complained. |
| complaint_date |
string |
no |
The day it was received. |
| complaint_location |
string |
no |
Where it arose. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| proposed_resolution |
string |
no |
The resolution proposed. |
| resolution_date |
string |
no |
When it was resolved. |
| status |
string |
no |
The complaint's phase. |
| supervisory_visit_date |
string |
no |
When the supervisory visit took place. |
ComplaintPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Complaint, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Complaint |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ComplaintSignature
-
role
string, required
- Whose line to sign: office, the investigator, signed as you. The complainant's line (client when the complainant is the client, representative for anyone else) is drawn on the device in the app and answers 422 drawn_required here.
| Field |
Type |
Required |
Description |
| role |
string |
yes |
Whose line to sign: office, the investigator, signed as you. The complainant's line (client when the complainant is the client, representative for anyone else) is drawn on the device in the app and answers 422 drawn_required here. |
ComplianceAlert
One caregiver with the asked-for kind of compliance problem: who, their credential dates, and their training and annual-evaluation standing.
-
alert_types
array of string
- Every kind of compliance problem the caregiver has (US-109.14), of the seven alert_type values.
-
caregiver_name
string
- The caregiver's name.
-
credentials
object
- Credential dates by credential.
-
evaluation
object
-
evaluation.last_evaluation_date
string
- The last evaluation.
-
evaluation.status
string
- The annual evaluation's standing.
-
id
string, required
- The record's id.
-
training_status
string
- Training standing.
| Field |
Type |
Required |
Description |
| alert_types |
array of string |
no |
Every kind of compliance problem the caregiver has (US-109.14), of the seven alert_type values. |
| caregiver_name |
string |
no |
The caregiver's name. |
| credentials |
object |
no |
Credential dates by credential. |
| evaluation |
object |
no |
|
| evaluation.last_evaluation_date |
string |
no |
The last evaluation. |
| evaluation.status |
string |
no |
The annual evaluation's standing. |
| id |
string |
yes |
The record's id. |
| training_status |
string |
no |
Training standing. |
ComplianceAlertPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ComplianceAlert, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ComplianceAlert |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ConnectedApp
-
app_name
string, required
- The AI app.
-
connected_at
string
- When it was connected (UTC).
-
id
string, required
- The record's id.
-
last_used_at
string
- Its last request (UTC).
-
scopes
array of string
- What it may do.
-
user_email
string
- Their email.
-
user_id
string, required
- The member who connected it.
| Field |
Type |
Required |
Description |
| app_name |
string |
yes |
The AI app. |
| connected_at |
string |
no |
When it was connected (UTC). |
| id |
string |
yes |
The record's id. |
| last_used_at |
string |
no |
Its last request (UTC). |
| scopes |
array of string |
no |
What it may do. |
| user_email |
string |
no |
Their email. |
| user_id |
string |
yes |
The member who connected it. |
ConnectedAppPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].app_name
string, required
- The AI app.
-
data[].connected_at
string
- When it was connected (UTC).
-
data[].id
string, required
- The record's id.
-
data[].last_used_at
string
- Its last request (UTC).
-
data[].scopes
array of string
- What it may do.
-
data[].user_email
string
- Their email.
-
data[].user_id
string, required
- The member who connected it.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].app_name |
string |
yes |
The AI app. |
| data[].connected_at |
string |
no |
When it was connected (UTC). |
| data[].id |
string |
yes |
The record's id. |
| data[].last_used_at |
string |
no |
Its last request (UTC). |
| data[].scopes |
array of string |
no |
What it may do. |
| data[].user_email |
string |
no |
Their email. |
| data[].user_id |
string |
yes |
The member who connected it. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ConnectedAppRevoked
-
id
string, required
- The record's id.
-
revoked_at
string, required
- When it was revoked (UTC).
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record's id. |
| revoked_at |
string |
yes |
When it was revoked (UTC). |
Consent
-
accepted
boolean, required
- Whether a current consent stands.
-
accepted_at
string
- When it was accepted.
-
accepted_by_id
string
- The member who accepted it.
-
accepted_disclosure_version
integer
- The disclosure version accepted; null when none stands.
-
disclosure_version
integer, required
- The disclosure's current version.
-
lapsed
boolean, required
- Accepted, but the disclosure changed since: accept it again.
-
purpose
string, required
- The consent.
-
text
string, required
- The disclosure a member holding agency_settings.manage accepts.
-
title
string, required
- The disclosure's title.
| Field |
Type |
Required |
Description |
| accepted |
boolean |
yes |
Whether a current consent stands. |
| accepted_at |
string |
no |
When it was accepted. |
| accepted_by_id |
string |
no |
The member who accepted it. |
| accepted_disclosure_version |
integer |
no |
The disclosure version accepted; null when none stands. |
| disclosure_version |
integer |
yes |
The disclosure's current version. |
| lapsed |
boolean |
yes |
Accepted, but the disclosure changed since: accept it again. |
| purpose |
string |
yes |
The consent. |
| text |
string |
yes |
The disclosure a member holding agency_settings.manage accepts. |
| title |
string |
yes |
The disclosure's title. |
Contact
A responsible party, representative, emergency contact, case manager, physician, pharmacy or key holder. One contact can serve several clients; an edit reaches every one of them.
-
address
string
-
address_line_2
string
- Apartment, suite or unit.
-
alt_phone
string
- A second phone, 10 digits.
-
caregiver_id
string
- The caregiver this person is, when the contact is one.
-
city
string
-
client_ids
array of string
- On a merge's answer only: the clients those relations serve; each one's page shows this contact.
-
email
string
-
fax
string
- 10 digits.
-
first_name
string
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
last_name
string
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
organization
string
- The organization, such as the pharmacy's name or a CMA office's county.
-
phone
string
- 10 digits.
-
relation_ids
array of string
- On a merge's answer only: the relations the merge moved onto this contact.
-
state
string
-
updated_at
string
- When it last changed.
-
zip
string
- 5 digits or ZIP+4.
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| address_line_2 |
string |
no |
Apartment, suite or unit. |
| alt_phone |
string |
no |
A second phone, 10 digits. |
| caregiver_id |
string |
no |
The caregiver this person is, when the contact is one. |
| city |
string |
no |
|
| client_ids |
array of string |
no |
On a merge's answer only: the clients those relations serve; each one's page shows this contact. |
| email |
string |
no |
|
| fax |
string |
no |
10 digits. |
| first_name |
string |
no |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| last_name |
string |
no |
|
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| organization |
string |
no |
The organization, such as the pharmacy's name or a CMA office's county. |
| phone |
string |
no |
10 digits. |
| relation_ids |
array of string |
no |
On a merge's answer only: the relations the merge moved onto this contact. |
| state |
string |
no |
|
| updated_at |
string |
no |
When it last changed. |
| zip |
string |
no |
5 digits or ZIP+4. |
ContactHistoryEntry
One edit of a contact: when it was saved, who saved it, and the names of the fields it changed. The values themselves, old or new, are never returned.
-
changed_fields
array of string, required
- The names of the fields the edit changed, sorted.
-
inserted_at
string, required
- When the edit was saved.
-
user_name
string, required
- The member who saved it, or "System" when no member is recorded.
| Field |
Type |
Required |
Description |
| changed_fields |
array of string |
yes |
The names of the fields the edit changed, sorted. |
| inserted_at |
string |
yes |
When the edit was saved. |
| user_name |
string |
yes |
The member who saved it, or "System" when no member is recorded. |
ContactHistoryPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ContactHistoryEntry, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ContactHistoryEntry |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ContactInput
The new contact's fields, when contact_id is not sent.
-
address
string
-
address_line_2
string
- Apartment, suite or unit.
-
alt_phone
string
- A second phone, 10 digits.
-
city
string
-
email
string
-
fax
string
- 10 digits.
-
first_name
string
-
last_name
string
-
lock_version
integer
- Required on PATCH /api/v1/contacts/{id}: the value it was read with; if it changed since, the answer is 409 stale_record. Not read inside a new relation's contact.
-
organization
string
- The organization, such as the pharmacy's name or, for a CMA office, a Colorado county.
-
phone
string
- 10 digits.
-
state
string
-
zip
string
- 5 digits or ZIP+4.
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| address_line_2 |
string |
no |
Apartment, suite or unit. |
| alt_phone |
string |
no |
A second phone, 10 digits. |
| city |
string |
no |
|
| email |
string |
no |
|
| fax |
string |
no |
10 digits. |
| first_name |
string |
no |
|
| last_name |
string |
no |
|
| lock_version |
integer |
no |
Required on PATCH /api/v1/contacts/{id}: the value it was read with; if it changed since, the answer is 409 stale_record. Not read inside a new relation's contact. |
| organization |
string |
no |
The organization, such as the pharmacy's name or, for a CMA office, a Colorado county. |
| phone |
string |
no |
10 digits. |
| state |
string |
no |
|
| zip |
string |
no |
5 digits or ZIP+4. |
ContactMerge
-
loser_ids
array of string, required
- The contacts that are the same person as the one in the path: each one's relations move to it and it is deleted. 1 to 50 ids, not including the path's.
| Field |
Type |
Required |
Description |
| loser_ids |
array of string |
yes |
The contacts that are the same person as the one in the path: each one's relations move to it and it is deleted. 1 to 50 ids, not including the path's. |
ContactPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Contact, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Contact |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Critical incidentPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of CriticalIncident, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of CriticalIncident |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
CriticalIncident
A critical incident the agency recorded: what happened, who was told, and how it was followed up. The status moves draft, reported, under investigation, resolved; closed from any active phase.
-
action_steps_taken
string
- What was done at once.
-
caregiver_id
string
- The caregiver involved, if any.
-
client_id
string, required
- The client the incident is about.
-
follow_up_plan
string
- The follow-up plan.
-
id
string, required
- The record's id.
-
incident_date
string
- The day it happened.
-
incident_description
string
- What happened.
-
incident_location
string
- Where it happened.
-
incident_time
string
- The time it happened, HH:MM:SS.
-
incident_type
string
- The kind of incident.
-
inserted_at
string
- When the incident was recorded.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
notifications
object
- Who was notified: the case manager, family and HCPF.
-
notifications.case_manager
object
-
notifications.case_manager.date
string
- When.
-
notifications.case_manager.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.family
object
-
notifications.family.date
string
- When.
-
notifications.family.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.hcpf
object
-
notifications.hcpf.date
string
- When.
-
notifications.hcpf.notified
boolean
- Whether they were notified; null when not recorded.
-
record_state
string
- Where the incident stands as a signed record (US-101.31): draft (it changes here), signed or amended (locked: only its status moves; corrected with an addendum, or voided), voided. signing_complete says whether every required line is signed: the office line (reported by) and the supervisor review.
-
referrals
array of object
- The referrals made; a list sent replaces the one stored.
-
referrals[].contact_name
string
- The contact's name.
-
referrals[].contact_phone
string
- The contact's phone.
-
referrals[].type
string
- Who the referral went to.
-
referrals_made
string
- The referrals made, as text.
-
reports
object
- The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text.
-
reports.aps
object
-
reports.aps.date
string
- When.
-
reports.aps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.aps.worker_name
string
- The worker who took the report.
-
reports.cdphe
object
-
reports.cdphe.date
string
- When.
-
reports.cdphe.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cdphe.worker_name
string
- The worker who took the report.
-
reports.cps
object
-
reports.cps.date
string
- When.
-
reports.cps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cps.worker_name
string
- The worker who took the report.
-
reports.law_enforcement
object
-
reports.law_enforcement.date
string
- When.
-
reports.law_enforcement.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.other
string
- Other reports made.
-
signatures
array of object
- The live signatures, oldest first.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
status
string, required
- The incident's phase.
-
updated_at
string
- When the incident last changed.
| Field |
Type |
Required |
Description |
| action_steps_taken |
string |
no |
What was done at once. |
| caregiver_id |
string |
no |
The caregiver involved, if any. |
| client_id |
string |
yes |
The client the incident is about. |
| follow_up_plan |
string |
no |
The follow-up plan. |
| id |
string |
yes |
The record's id. |
| incident_date |
string |
no |
The day it happened. |
| incident_description |
string |
no |
What happened. |
| incident_location |
string |
no |
Where it happened. |
| incident_time |
string |
no |
The time it happened, HH:MM:SS. |
| incident_type |
string |
no |
The kind of incident. |
| inserted_at |
string |
no |
When the incident was recorded. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| notifications |
object |
no |
Who was notified: the case manager, family and HCPF. |
| notifications.case_manager |
object |
no |
|
| notifications.case_manager.date |
string |
no |
When. |
| notifications.case_manager.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.family |
object |
no |
|
| notifications.family.date |
string |
no |
When. |
| notifications.family.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.hcpf |
object |
no |
|
| notifications.hcpf.date |
string |
no |
When. |
| notifications.hcpf.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| record_state |
string |
no |
Where the incident stands as a signed record (US-101.31): draft (it changes here), signed or amended (locked: only its status moves; corrected with an addendum, or voided), voided. signing_complete says whether every required line is signed: the office line (reported by) and the supervisor review. |
| referrals |
array of object |
no |
The referrals made; a list sent replaces the one stored. |
| referrals[].contact_name |
string |
no |
The contact's name. |
| referrals[].contact_phone |
string |
no |
The contact's phone. |
| referrals[].type |
string |
no |
Who the referral went to. |
| referrals_made |
string |
no |
The referrals made, as text. |
| reports |
object |
no |
The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text. |
| reports.aps |
object |
no |
|
| reports.aps.date |
string |
no |
When. |
| reports.aps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.aps.worker_name |
string |
no |
The worker who took the report. |
| reports.cdphe |
object |
no |
|
| reports.cdphe.date |
string |
no |
When. |
| reports.cdphe.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cdphe.worker_name |
string |
no |
The worker who took the report. |
| reports.cps |
object |
no |
|
| reports.cps.date |
string |
no |
When. |
| reports.cps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cps.worker_name |
string |
no |
The worker who took the report. |
| reports.law_enforcement |
object |
no |
|
| reports.law_enforcement.date |
string |
no |
When. |
| reports.law_enforcement.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.other |
string |
no |
Other reports made. |
| signatures |
array of object |
no |
The live signatures, oldest first. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| status |
string |
yes |
The incident's phase. |
| updated_at |
string |
no |
When the incident last changed. |
CriticalIncidentCreate
Reports a draft incident for a client of the agency, reported by the API key's user. client_id and what happened (date, type, location, description, the steps taken at once) are required; caregiver_id is optional.
-
action_steps_taken
string, required
- What was done at once.
-
caregiver_id
string
- The caregiver involved, if any.
-
client_id
string, required
- The client the incident is about.
-
follow_up_plan
string
- The follow-up plan.
-
incident_date
string, required
- The day it happened.
-
incident_description
string, required
- What happened.
-
incident_location
string, required
- Where it happened.
-
incident_time
string
- The time it happened, HH:MM:SS.
-
incident_type
string, required
- The kind of incident.
-
notifications
object
- Who was notified: the case manager, family and HCPF.
-
notifications.case_manager
object
-
notifications.case_manager.date
string
- When.
-
notifications.case_manager.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.family
object
-
notifications.family.date
string
- When.
-
notifications.family.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.hcpf
object
-
notifications.hcpf.date
string
- When.
-
notifications.hcpf.notified
boolean
- Whether they were notified; null when not recorded.
-
referrals
array of object
- The referrals made; a list sent replaces the one stored.
-
referrals[].contact_name
string
- The contact's name.
-
referrals[].contact_phone
string
- The contact's phone.
-
referrals[].type
string
- Who the referral went to.
-
referrals_made
string
- The referrals made, as text.
-
reports
object
- The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text.
-
reports.aps
object
-
reports.aps.date
string
- When.
-
reports.aps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.aps.worker_name
string
- The worker who took the report.
-
reports.cdphe
object
-
reports.cdphe.date
string
- When.
-
reports.cdphe.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cdphe.worker_name
string
- The worker who took the report.
-
reports.cps
object
-
reports.cps.date
string
- When.
-
reports.cps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cps.worker_name
string
- The worker who took the report.
-
reports.law_enforcement
object
-
reports.law_enforcement.date
string
- When.
-
reports.law_enforcement.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.other
string
- Other reports made.
| Field |
Type |
Required |
Description |
| action_steps_taken |
string |
yes |
What was done at once. |
| caregiver_id |
string |
no |
The caregiver involved, if any. |
| client_id |
string |
yes |
The client the incident is about. |
| follow_up_plan |
string |
no |
The follow-up plan. |
| incident_date |
string |
yes |
The day it happened. |
| incident_description |
string |
yes |
What happened. |
| incident_location |
string |
yes |
Where it happened. |
| incident_time |
string |
no |
The time it happened, HH:MM:SS. |
| incident_type |
string |
yes |
The kind of incident. |
| notifications |
object |
no |
Who was notified: the case manager, family and HCPF. |
| notifications.case_manager |
object |
no |
|
| notifications.case_manager.date |
string |
no |
When. |
| notifications.case_manager.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.family |
object |
no |
|
| notifications.family.date |
string |
no |
When. |
| notifications.family.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.hcpf |
object |
no |
|
| notifications.hcpf.date |
string |
no |
When. |
| notifications.hcpf.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| referrals |
array of object |
no |
The referrals made; a list sent replaces the one stored. |
| referrals[].contact_name |
string |
no |
The contact's name. |
| referrals[].contact_phone |
string |
no |
The contact's phone. |
| referrals[].type |
string |
no |
Who the referral went to. |
| referrals_made |
string |
no |
The referrals made, as text. |
| reports |
object |
no |
The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text. |
| reports.aps |
object |
no |
|
| reports.aps.date |
string |
no |
When. |
| reports.aps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.aps.worker_name |
string |
no |
The worker who took the report. |
| reports.cdphe |
object |
no |
|
| reports.cdphe.date |
string |
no |
When. |
| reports.cdphe.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cdphe.worker_name |
string |
no |
The worker who took the report. |
| reports.cps |
object |
no |
|
| reports.cps.date |
string |
no |
When. |
| reports.cps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cps.worker_name |
string |
no |
The worker who took the report. |
| reports.law_enforcement |
object |
no |
|
| reports.law_enforcement.date |
string |
no |
When. |
| reports.law_enforcement.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.other |
string |
no |
Other reports made. |
CriticalIncidentInput
Fields to change, plus the lock_version read (required). reports and notifications hold only the legs and fields being changed, merged over what is stored; referrals replaces the list. status moves only along the incident's transitions (422 invalid_transition otherwise).
-
action_steps_taken
string
- What was done at once.
-
follow_up_plan
string
- The follow-up plan.
-
incident_date
string
- The day it happened.
-
incident_description
string
- What happened.
-
incident_location
string
- Where it happened.
-
incident_time
string
- The time it happened, HH:MM:SS.
-
incident_type
string
- The kind of incident.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notifications
object
- Who was notified: the case manager, family and HCPF.
-
notifications.case_manager
object
-
notifications.case_manager.date
string
- When.
-
notifications.case_manager.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.family
object
-
notifications.family.date
string
- When.
-
notifications.family.notified
boolean
- Whether they were notified; null when not recorded.
-
notifications.hcpf
object
-
notifications.hcpf.date
string
- When.
-
notifications.hcpf.notified
boolean
- Whether they were notified; null when not recorded.
-
referrals
array of object
- The referrals made; a list sent replaces the one stored.
-
referrals[].contact_name
string
- The contact's name.
-
referrals[].contact_phone
string
- The contact's phone.
-
referrals[].type
string
- Who the referral went to.
-
referrals_made
string
- The referrals made, as text.
-
reports
object
- The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text.
-
reports.aps
object
-
reports.aps.date
string
- When.
-
reports.aps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.aps.worker_name
string
- The worker who took the report.
-
reports.cdphe
object
-
reports.cdphe.date
string
- When.
-
reports.cdphe.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cdphe.worker_name
string
- The worker who took the report.
-
reports.cps
object
-
reports.cps.date
string
- When.
-
reports.cps.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.cps.worker_name
string
- The worker who took the report.
-
reports.law_enforcement
object
-
reports.law_enforcement.date
string
- When.
-
reports.law_enforcement.reported
boolean
- Whether it was reported; null when not recorded.
-
reports.other
string
- Other reports made.
-
status
string
- The incident's phase.
| Field |
Type |
Required |
Description |
| action_steps_taken |
string |
no |
What was done at once. |
| follow_up_plan |
string |
no |
The follow-up plan. |
| incident_date |
string |
no |
The day it happened. |
| incident_description |
string |
no |
What happened. |
| incident_location |
string |
no |
Where it happened. |
| incident_time |
string |
no |
The time it happened, HH:MM:SS. |
| incident_type |
string |
no |
The kind of incident. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notifications |
object |
no |
Who was notified: the case manager, family and HCPF. |
| notifications.case_manager |
object |
no |
|
| notifications.case_manager.date |
string |
no |
When. |
| notifications.case_manager.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.family |
object |
no |
|
| notifications.family.date |
string |
no |
When. |
| notifications.family.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| notifications.hcpf |
object |
no |
|
| notifications.hcpf.date |
string |
no |
When. |
| notifications.hcpf.notified |
boolean |
no |
Whether they were notified; null when not recorded. |
| referrals |
array of object |
no |
The referrals made; a list sent replaces the one stored. |
| referrals[].contact_name |
string |
no |
The contact's name. |
| referrals[].contact_phone |
string |
no |
The contact's phone. |
| referrals[].type |
string |
no |
Who the referral went to. |
| referrals_made |
string |
no |
The referrals made, as text. |
| reports |
object |
no |
The mandatory reports: APS, CPS, CDPHE and law enforcement, plus other reports as text. |
| reports.aps |
object |
no |
|
| reports.aps.date |
string |
no |
When. |
| reports.aps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.aps.worker_name |
string |
no |
The worker who took the report. |
| reports.cdphe |
object |
no |
|
| reports.cdphe.date |
string |
no |
When. |
| reports.cdphe.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cdphe.worker_name |
string |
no |
The worker who took the report. |
| reports.cps |
object |
no |
|
| reports.cps.date |
string |
no |
When. |
| reports.cps.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.cps.worker_name |
string |
no |
The worker who took the report. |
| reports.law_enforcement |
object |
no |
|
| reports.law_enforcement.date |
string |
no |
When. |
| reports.law_enforcement.reported |
boolean |
no |
Whether it was reported; null when not recorded. |
| reports.other |
string |
no |
Other reports made. |
| status |
string |
no |
The incident's phase. |
CriticalIncidentSignature
-
role
string, required
- Whose line to sign, as you: office (reported by) or supervisor (supervisor review).
| Field |
Type |
Required |
Description |
| role |
string |
yes |
Whose line to sign, as you: office (reported by) or supervisor (supervisor review). |
CsvMapping
-
mapping
object, required
- Claim field (the read lists them) to the agency's column name, such as {"member_id": "Medicaid #"}; a field left out, or mapped to a blank column, reads its own name.
-
optional_fields
array of string, required
- The claim fields an upload may carry.
-
required_fields
array of string, required
- The claim fields an upload must carry.
| Field |
Type |
Required |
Description |
| mapping |
object |
yes |
Claim field (the read lists them) to the agency's column name, such as {"member_id": "Medicaid #"}; a field left out, or mapped to a blank column, reads its own name. |
| optional_fields |
array of string |
yes |
The claim fields an upload may carry. |
| required_fields |
array of string |
yes |
The claim fields an upload must carry. |
CsvMappingUpdate
-
mapping
object, required
- Claim field (the read lists them) to the agency's column name, such as {"member_id": "Medicaid #"}; a field left out, or mapped to a blank column, reads its own name.
| Field |
Type |
Required |
Description |
| mapping |
object |
yes |
Claim field (the read lists them) to the agency's column name, such as {"member_id": "Medicaid #"}; a field left out, or mapped to a blank column, reads its own name. |
DeletedPlanOfCare
-
deleted_at
string, required
- When it was deleted (UTC).
-
id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| deleted_at |
string |
yes |
When it was deleted (UTC). |
| id |
string |
yes |
The record's id. |
DeletedSatisfactionSurvey
-
deleted_at
string, required
- When it was deleted (UTC).
-
id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| deleted_at |
string |
yes |
When it was deleted (UTC). |
| id |
string |
yes |
The record's id. |
DeletedVisit
-
data
Visit, required
-
meta
object, required
-
meta.exceptions_dismissed
integer, required
-
meta.links
VisitDeleteLinks, required
-
warnings
array of object, required
- What the delete left resting on the visit, in words (US-116.18), beside meta.links; usually empty. Never a refusal: the visit is deleted. Each id is one of visits.delete_keeps_entry_times (one item for the timesheet entries whose EVV times came from it) and visits.delete_reopens_month (one per Work Order month its signature alone froze, open to edits again).
-
warnings[].fix
object
- Where it is fixed, when a page fixes it.
-
warnings[].fix.label
string, required
- What the link says.
-
warnings[].fix.path
string, required
- The app route that fixes it.
-
warnings[].id
string, required
- The rule that raised it, stable, e.g. client_care.medicaid_id_pending.
-
warnings[].message
string, required
- For a person to read.
| Field |
Type |
Required |
Description |
| data |
Visit |
yes |
|
| meta |
object |
yes |
|
| meta.exceptions_dismissed |
integer |
yes |
|
| meta.links |
VisitDeleteLinks |
yes |
|
| warnings |
array of object |
yes |
What the delete left resting on the visit, in words (US-116.18), beside meta.links; usually empty. Never a refusal: the visit is deleted. Each id is one of visits.delete_keeps_entry_times (one item for the timesheet entries whose EVV times came from it) and visits.delete_reopens_month (one per Work Order month its signature alone froze, open to edits again). |
| warnings[].fix |
object |
no |
Where it is fixed, when a page fixes it. |
| warnings[].fix.label |
string |
yes |
What the link says. |
| warnings[].fix.path |
string |
yes |
The app route that fixes it. |
| warnings[].id |
string |
yes |
The rule that raised it, stable, e.g. client_care.medicaid_id_pending. |
| warnings[].message |
string |
yes |
For a person to read. |
Denial
A claim Colorado Medicaid did not pay, with the reasons it gave.
-
adjustment_codes
array of object
- The claim adjustment reason codes (CARC) on the remittance.
-
adjustment_codes[].amount
string
- The amount adjusted.
-
adjustment_codes[].group_code
string
- The CARC group code, such as CO or PR.
-
adjustment_codes[].meaning
string
- What Colorado Medicaid's code means, in plain English.
-
adjustment_codes[].reason_code
string
- The CARC reason code, such as 45.
-
adjustment_reason_codes
array of string
- Claim adjustment reason codes.
-
batch_id
string, required
- The batch the claim belongs to.
-
charge_amount
string
- Amount billed.
-
claim_frequency
string
- CLM05-3: 1 bills a new claim, 7 replaces a paid claim, 8 voids one.
-
diagnosis_code_1
string
-
diagnosis_code_2
string
-
diagnosis_code_3
string
-
diagnosis_code_4
string
-
duplicate_of_claim_id
string
-
evv_validation_status
string
-
icn
string
- HCPF's internal control number.
-
id
string, required
- The record's id.
-
investigation_status
string
- Where the agency's investigation of a denial stands.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
-
modifier_2
string
-
modifier_3
string
-
modifier_4
string
-
original_icn
string
- The ICN of the paid claim an uploaded replace (7) or void (8) row named.
-
paid_amount
string
- Amount paid.
-
paid_date
string
-
par_number
string
- The prior authorization request number.
-
patient_account_number
string
-
patient_first_name
string
-
patient_last_name
string
-
payment_status_code
string
-
place_of_service
string
-
procedure_code
string
- The HCPCS code billed.
-
reconciled_at
string
- When it was marked reconciled with its payment, if it was.
-
remark_codes
array of object
- The remittance advice remark codes (RARC) on the remittance.
-
remark_codes[].code
string
- The RARC, such as N821.
-
remark_codes[].meaning
string
- What the remark code means, in plain English.
-
replaced_account_number
string
- The account number the uploaded file gave this claim, when another row or a claim in progress or paid already used it and it was not kept; patient_account_number is the claim's own.
-
resolution_notes
string
- The agency's notes on resolving a denial.
-
row_number
integer
- Its row in the uploaded file.
-
service_date_from
string
-
service_date_to
string
-
status
string, required
-
unit_type
string
-
units
string
- Units billed.
-
updated_at
string
- When the record last changed.
-
validation_errors
array of object
- Why the claim is invalid, if it is.
-
validation_errors[].code
string
- Stable, e.g. required or invalid_format.
-
validation_errors[].field
string
- The claim field.
-
validation_errors[].message
string
- For a person to read.
| Field |
Type |
Required |
Description |
| adjustment_codes |
array of object |
no |
The claim adjustment reason codes (CARC) on the remittance. |
| adjustment_codes[].amount |
string |
no |
The amount adjusted. |
| adjustment_codes[].group_code |
string |
no |
The CARC group code, such as CO or PR. |
| adjustment_codes[].meaning |
string |
no |
What Colorado Medicaid's code means, in plain English. |
| adjustment_codes[].reason_code |
string |
no |
The CARC reason code, such as 45. |
| adjustment_reason_codes |
array of string |
no |
Claim adjustment reason codes. |
| batch_id |
string |
yes |
The batch the claim belongs to. |
| charge_amount |
string |
no |
Amount billed. |
| claim_frequency |
string |
no |
CLM05-3: 1 bills a new claim, 7 replaces a paid claim, 8 voids one. |
| diagnosis_code_1 |
string |
no |
|
| diagnosis_code_2 |
string |
no |
|
| diagnosis_code_3 |
string |
no |
|
| diagnosis_code_4 |
string |
no |
|
| duplicate_of_claim_id |
string |
no |
|
| evv_validation_status |
string |
no |
|
| icn |
string |
no |
HCPF's internal control number. |
| id |
string |
yes |
The record's id. |
| investigation_status |
string |
no |
Where the agency's investigation of a denial stands. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
|
| modifier_2 |
string |
no |
|
| modifier_3 |
string |
no |
|
| modifier_4 |
string |
no |
|
| original_icn |
string |
no |
The ICN of the paid claim an uploaded replace (7) or void (8) row named. |
| paid_amount |
string |
no |
Amount paid. |
| paid_date |
string |
no |
|
| par_number |
string |
no |
The prior authorization request number. |
| patient_account_number |
string |
no |
|
| patient_first_name |
string |
no |
|
| patient_last_name |
string |
no |
|
| payment_status_code |
string |
no |
|
| place_of_service |
string |
no |
|
| procedure_code |
string |
no |
The HCPCS code billed. |
| reconciled_at |
string |
no |
When it was marked reconciled with its payment, if it was. |
| remark_codes |
array of object |
no |
The remittance advice remark codes (RARC) on the remittance. |
| remark_codes[].code |
string |
no |
The RARC, such as N821. |
| remark_codes[].meaning |
string |
no |
What the remark code means, in plain English. |
| replaced_account_number |
string |
no |
The account number the uploaded file gave this claim, when another row or a claim in progress or paid already used it and it was not kept; patient_account_number is the claim's own. |
| resolution_notes |
string |
no |
The agency's notes on resolving a denial. |
| row_number |
integer |
no |
Its row in the uploaded file. |
| service_date_from |
string |
no |
|
| service_date_to |
string |
no |
|
| status |
string |
yes |
|
| unit_type |
string |
no |
|
| units |
string |
no |
Units billed. |
| updated_at |
string |
no |
When the record last changed. |
| validation_errors |
array of object |
no |
Why the claim is invalid, if it is. |
| validation_errors[].code |
string |
no |
Stable, e.g. required or invalid_format. |
| validation_errors[].field |
string |
no |
The claim field. |
| validation_errors[].message |
string |
no |
For a person to read. |
DenialPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Denial, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Denial |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
DocuSignAgencyConnection
The agency's own DocuSign connection, null when it never connected. A disconnected one stays here for its history; account_kind says which account a send goes through.
-
account_name
string
- The DocuSign account's name.
-
connect_hmac_key_set
boolean, required
- Whether a Connect HMAC key is stored. The key itself is never shown.
-
connect_hmac_key_set_at
string
- When the Connect HMAC key was stored.
-
connected_at
string
- When it was connected.
-
connected_by
string
- Who connected it.
-
disconnected_at
string
- When it was disconnected.
-
docusign_account_id
string
- The DocuSign account id.
-
docusign_user_email
string
- The DocuSign user who connected it.
-
status
string, required
- The agency's own DocuSign connection.
| Field |
Type |
Required |
Description |
| account_name |
string |
no |
The DocuSign account's name. |
| connect_hmac_key_set |
boolean |
yes |
Whether a Connect HMAC key is stored. The key itself is never shown. |
| connect_hmac_key_set_at |
string |
no |
When the Connect HMAC key was stored. |
| connected_at |
string |
no |
When it was connected. |
| connected_by |
string |
no |
Who connected it. |
| disconnected_at |
string |
no |
When it was disconnected. |
| docusign_account_id |
string |
no |
The DocuSign account id. |
| docusign_user_email |
string |
no |
The DocuSign user who connected it. |
| status |
string |
yes |
The agency's own DocuSign connection. |
DocuSignConnectHmacKey
-
hmac_key
string, required
- The HMAC key from the agency's DocuSign Connect configuration, which must be 16 to 256 characters with no spaces. It is stored encrypted and never shown again.
| Field |
Type |
Required |
Description |
| hmac_key |
string |
yes |
The HMAC key from the agency's DocuSign Connect configuration, which must be 16 to 256 characters with no spaces. It is stored encrypted and never shown again. |
DocuSignEnvelope
-
account_kind
string, required
- The DocuSign account it was sent through.
-
completed_at
string
- When every signer had signed.
-
id
string, required
- The envelope's id.
-
recipients
array of object, required
- Its signers.
-
recipients[].email
string, required
- Where DocuSign sent the signing link.
-
recipients[].name
string, required
- The signer's name.
-
recipients[].role
string, required
- Who signs.
-
record_id
string
- The record's id.
-
record_type
string
- The record's type.
-
sent_at
string
- When DocuSign accepted it.
-
status
string, required
- Where the envelope is.
| Field |
Type |
Required |
Description |
| account_kind |
string |
yes |
The DocuSign account it was sent through. |
| completed_at |
string |
no |
When every signer had signed. |
| id |
string |
yes |
The envelope's id. |
| recipients |
array of object |
yes |
Its signers. |
| recipients[].email |
string |
yes |
Where DocuSign sent the signing link. |
| recipients[].name |
string |
yes |
The signer's name. |
| recipients[].role |
string |
yes |
Who signs. |
| record_id |
string |
no |
The record's id. |
| record_type |
string |
no |
The record's type. |
| sent_at |
string |
no |
When DocuSign accepted it. |
| status |
string |
yes |
Where the envelope is. |
DocuSignEnvelopePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].account_kind
string, required
- The DocuSign account it was sent through.
-
data[].completed_at
string
- When every signer had signed.
-
data[].id
string, required
- The envelope's id.
-
data[].recipients
array of object, required
- Its signers.
-
data[].recipients[].email
string, required
- Where DocuSign sent the signing link.
-
data[].recipients[].name
string, required
- The signer's name.
-
data[].recipients[].role
string, required
- Who signs.
-
data[].record_id
string
- The record's id.
-
data[].record_type
string
- The record's type.
-
data[].sent_at
string
- When DocuSign accepted it.
-
data[].status
string, required
- Where the envelope is.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].account_kind |
string |
yes |
The DocuSign account it was sent through. |
| data[].completed_at |
string |
no |
When every signer had signed. |
| data[].id |
string |
yes |
The envelope's id. |
| data[].recipients |
array of object |
yes |
Its signers. |
| data[].recipients[].email |
string |
yes |
Where DocuSign sent the signing link. |
| data[].recipients[].name |
string |
yes |
The signer's name. |
| data[].recipients[].role |
string |
yes |
Who signs. |
| data[].record_id |
string |
no |
The record's id. |
| data[].record_type |
string |
no |
The record's type. |
| data[].sent_at |
string |
no |
When DocuSign accepted it. |
| data[].status |
string |
yes |
Where the envelope is. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
DocuSignEnvelopeRecipient
-
email
string, required
- Where DocuSign sent the signing link.
-
name
string, required
- The signer's name.
-
role
string, required
- Who signs.
| Field |
Type |
Required |
Description |
| email |
string |
yes |
Where DocuSign sent the signing link. |
| name |
string |
yes |
The signer's name. |
| role |
string |
yes |
Who signs. |
DocuSignEnvelopeSent
-
account_kind
string, required
- The DocuSign account it was sent through.
-
available_balance_microdollars
integer
- A send through HomeCareBilling's account: the prepaid credit left after the hold.
-
completed_at
string
- When every signer had signed.
-
id
string, required
- The envelope's id.
-
price_microdollars
integer
- A send through HomeCareBilling's account: the prepaid credit held for it, in millionths of a dollar.
-
recipients
array of object, required
- Its signers.
-
recipients[].email
string, required
- Where DocuSign sent the signing link.
-
recipients[].name
string, required
- The signer's name.
-
recipients[].role
string, required
- Who signs.
-
record_id
string
- The record's id.
-
record_type
string
- The record's type.
-
sent_at
string
- When DocuSign accepted it.
-
status
string, required
- Where the envelope is.
| Field |
Type |
Required |
Description |
| account_kind |
string |
yes |
The DocuSign account it was sent through. |
| available_balance_microdollars |
integer |
no |
A send through HomeCareBilling's account: the prepaid credit left after the hold. |
| completed_at |
string |
no |
When every signer had signed. |
| id |
string |
yes |
The envelope's id. |
| price_microdollars |
integer |
no |
A send through HomeCareBilling's account: the prepaid credit held for it, in millionths of a dollar. |
| recipients |
array of object |
yes |
Its signers. |
| recipients[].email |
string |
yes |
Where DocuSign sent the signing link. |
| recipients[].name |
string |
yes |
The signer's name. |
| recipients[].role |
string |
yes |
Who signs. |
| record_id |
string |
no |
The record's id. |
| record_type |
string |
no |
The record's type. |
| sent_at |
string |
no |
When DocuSign accepted it. |
| status |
string |
yes |
Where the envelope is. |
DocuSignOwnKey
-
integration_key
string, required
- The integration key of a Private custom integration in the agency's own DocuSign account: must be a UUID, as DocuSign shows it. It is stored encrypted and never shown again.
-
secret_key
string, required
- The secret of that integration key, which must be 8 to 256 characters with no spaces. It is stored encrypted and never shown again.
| Field |
Type |
Required |
Description |
| integration_key |
string |
yes |
The integration key of a Private custom integration in the agency's own DocuSign account: must be a UUID, as DocuSign shows it. It is stored encrypted and never shown again. |
| secret_key |
string |
yes |
The secret of that integration key, which must be 8 to 256 characters with no spaces. It is stored encrypted and never shown again. |
DocuSignRecipientInput
-
email
string, required
- Where DocuSign sends the signing link.
-
name
string, required
- The signer's name, as it prints.
-
role
string, required
- Who signs.
| Field |
Type |
Required |
Description |
| email |
string |
yes |
Where DocuSign sends the signing link. |
| name |
string |
yes |
The signer's name, as it prints. |
| role |
string |
yes |
Who signs. |
DocuSignSend
-
recipients
array of object
- Who signs. Left out, the record's client and its designated representative, where the record has a representative's line, each with an email on file, as the page's Send dialog offers them.
-
recipients[].email
string, required
- Where DocuSign sends the signing link.
-
recipients[].name
string, required
- The signer's name, as it prints.
-
recipients[].role
string, required
- Who signs.
| Field |
Type |
Required |
Description |
| recipients |
array of object |
no |
Who signs. Left out, the record's client and its designated representative, where the record has a representative's line, each with an email on file, as the page's Send dialog offers them. |
| recipients[].email |
string |
yes |
Where DocuSign sends the signing link. |
| recipients[].name |
string |
yes |
The signer's name, as it prints. |
| recipients[].role |
string |
yes |
Who signs. |
DocuSignSettings
-
account_kind
string, required
- The account a send goes through: the agency's own, HomeCareBilling's (paid from prepaid credit), or null when neither is available.
-
agency_connection
object, required
- The agency's own DocuSign connection, null when it never connected. A disconnected one stays here for its history; account_kind says which account a send goes through.
-
agency_connection.account_name
string
- The DocuSign account's name.
-
agency_connection.connect_hmac_key_set
boolean, required
- Whether a Connect HMAC key is stored. The key itself is never shown.
-
agency_connection.connect_hmac_key_set_at
string
- When the Connect HMAC key was stored.
-
agency_connection.connected_at
string
- When it was connected.
-
agency_connection.connected_by
string
- Who connected it.
-
agency_connection.disconnected_at
string
- When it was disconnected.
-
agency_connection.docusign_account_id
string
- The DocuSign account id.
-
agency_connection.docusign_user_email
string
- The DocuSign user who connected it.
-
agency_connection.status
string, required
- The agency's own DocuSign connection.
-
own_key_set
boolean, required
- Whether the agency has saved its own DocuSign integration key, which Connect and every token refresh then run under. The key and its secret are never shown.
-
own_key_set_at
string
- When the agency's own key was saved.
-
platform_price_microdollars
integer
- What one envelope costs in prepaid credit, in millionths of a dollar, when sends go through HomeCareBilling's account.
-
status
string, required
- The agency's own DocuSign connection: agency_connection.status, or none when it never connected.
| Field |
Type |
Required |
Description |
| account_kind |
string |
yes |
The account a send goes through: the agency's own, HomeCareBilling's (paid from prepaid credit), or null when neither is available. |
| agency_connection |
object |
yes |
The agency's own DocuSign connection, null when it never connected. A disconnected one stays here for its history; account_kind says which account a send goes through. |
| agency_connection.account_name |
string |
no |
The DocuSign account's name. |
| agency_connection.connect_hmac_key_set |
boolean |
yes |
Whether a Connect HMAC key is stored. The key itself is never shown. |
| agency_connection.connect_hmac_key_set_at |
string |
no |
When the Connect HMAC key was stored. |
| agency_connection.connected_at |
string |
no |
When it was connected. |
| agency_connection.connected_by |
string |
no |
Who connected it. |
| agency_connection.disconnected_at |
string |
no |
When it was disconnected. |
| agency_connection.docusign_account_id |
string |
no |
The DocuSign account id. |
| agency_connection.docusign_user_email |
string |
no |
The DocuSign user who connected it. |
| agency_connection.status |
string |
yes |
The agency's own DocuSign connection. |
| own_key_set |
boolean |
yes |
Whether the agency has saved its own DocuSign integration key, which Connect and every token refresh then run under. The key and its secret are never shown. |
| own_key_set_at |
string |
no |
When the agency's own key was saved. |
| platform_price_microdollars |
integer |
no |
What one envelope costs in prepaid credit, in millionths of a dollar, when sends go through HomeCareBilling's account. |
| status |
string |
yes |
The agency's own DocuSign connection: agency_connection.status, or none when it never connected. |
ElectronicEvidenceCaregivers
-
data
array of object, required
-
data[].client_days
integer, required
- The caregiver's worked client-days in the month.
-
data[].electronic_days
integer, required
- Of those, the days with electronic evidence.
-
data[].id
string
- The caregiver; null once the caregiver is removed.
-
data[].name
string
- The caregiver's "Last, First".
-
data[].share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
-
total
integer, required
- How many rows the month has.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].client_days |
integer |
yes |
The caregiver's worked client-days in the month. |
| data[].electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| data[].id |
string |
no |
The caregiver; null once the caregiver is removed. |
| data[].name |
string |
no |
The caregiver's "Last, First". |
| data[].share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
| total |
integer |
yes |
How many rows the month has. |
ElectronicEvidenceCaregiversRow
-
client_days
integer, required
- The caregiver's worked client-days in the month.
-
electronic_days
integer, required
- Of those, the days with electronic evidence.
-
id
string
- The caregiver; null once the caregiver is removed.
-
name
string
- The caregiver's "Last, First".
-
share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
| Field |
Type |
Required |
Description |
| client_days |
integer |
yes |
The caregiver's worked client-days in the month. |
| electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| id |
string |
no |
The caregiver; null once the caregiver is removed. |
| name |
string |
no |
The caregiver's "Last, First". |
| share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
ElectronicEvidenceClients
-
data
array of object, required
-
data[].client_days
integer, required
- The client's worked client-days in the month.
-
data[].electronic_days
integer, required
- Of those, the days with electronic evidence.
-
data[].id
string
- The client; null once the client is removed.
-
data[].name
string
- The client's "Last, First".
-
data[].share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
-
total
integer, required
- How many rows the month has.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].client_days |
integer |
yes |
The client's worked client-days in the month. |
| data[].electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| data[].id |
string |
no |
The client; null once the client is removed. |
| data[].name |
string |
no |
The client's "Last, First". |
| data[].share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
| total |
integer |
yes |
How many rows the month has. |
ElectronicEvidenceClientsRow
-
client_days
integer, required
- The client's worked client-days in the month.
-
electronic_days
integer, required
- Of those, the days with electronic evidence.
-
id
string
- The client; null once the client is removed.
-
name
string
- The client's "Last, First".
-
share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
| Field |
Type |
Required |
Description |
| client_days |
integer |
yes |
The client's worked client-days in the month. |
| electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| id |
string |
no |
The client; null once the client is removed. |
| name |
string |
no |
The client's "Last, First". |
| share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
ElectronicEvidenceReport
-
caregivers
object, required
-
caregivers.data
array of object, required
-
caregivers.data[].client_days
integer, required
- The caregiver's worked client-days in the month.
-
caregivers.data[].electronic_days
integer, required
- Of those, the days with electronic evidence.
-
caregivers.data[].id
string
- The caregiver; null once the caregiver is removed.
-
caregivers.data[].name
string
- The caregiver's "Last, First".
-
caregivers.data[].share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
-
caregivers.total
integer, required
- How many rows the month has.
-
clients
object, required
-
clients.data
array of object, required
-
clients.data[].client_days
integer, required
- The client's worked client-days in the month.
-
clients.data[].electronic_days
integer, required
- Of those, the days with electronic evidence.
-
clients.data[].id
string
- The client; null once the client is removed.
-
clients.data[].name
string
- The client's "Last, First".
-
clients.data[].share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
-
clients.total
integer, required
- How many rows the month has.
-
computed
boolean, required
- Whether the month has a snapshot.
-
limit
integer, required
- The page size of both tables.
-
month
string, required
- YYYY-MM.
-
offset
integer, required
- The rows skipped in both tables.
-
trend
array of object, required
- The 12 months ending with month, newest first.
-
trend[].client_days
integer
- Worked client-days; null when not computed.
-
trend[].computed
boolean, required
- False when the month has no snapshot yet: not 0%.
-
trend[].electronic_days
integer
- Of those, the days with electronic evidence; null when not computed.
-
trend[].month
string, required
- YYYY-MM.
-
trend[].share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
| Field |
Type |
Required |
Description |
| caregivers |
object |
yes |
|
| caregivers.data |
array of object |
yes |
|
| caregivers.data[].client_days |
integer |
yes |
The caregiver's worked client-days in the month. |
| caregivers.data[].electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| caregivers.data[].id |
string |
no |
The caregiver; null once the caregiver is removed. |
| caregivers.data[].name |
string |
no |
The caregiver's "Last, First". |
| caregivers.data[].share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
| caregivers.total |
integer |
yes |
How many rows the month has. |
| clients |
object |
yes |
|
| clients.data |
array of object |
yes |
|
| clients.data[].client_days |
integer |
yes |
The client's worked client-days in the month. |
| clients.data[].electronic_days |
integer |
yes |
Of those, the days with electronic evidence. |
| clients.data[].id |
string |
no |
The client; null once the client is removed. |
| clients.data[].name |
string |
no |
The client's "Last, First". |
| clients.data[].share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
| clients.total |
integer |
yes |
How many rows the month has. |
| computed |
boolean |
yes |
Whether the month has a snapshot. |
| limit |
integer |
yes |
The page size of both tables. |
| month |
string |
yes |
YYYY-MM. |
| offset |
integer |
yes |
The rows skipped in both tables. |
| trend |
array of object |
yes |
The 12 months ending with month, newest first. |
| trend[].client_days |
integer |
no |
Worked client-days; null when not computed. |
| trend[].computed |
boolean |
yes |
False when the month has no snapshot yet: not 0%. |
| trend[].electronic_days |
integer |
no |
Of those, the days with electronic evidence; null when not computed. |
| trend[].month |
string |
yes |
YYYY-MM. |
| trend[].share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
ElectronicEvidenceTrendMonth
-
client_days
integer
- Worked client-days; null when not computed.
-
computed
boolean, required
- False when the month has no snapshot yet: not 0%.
-
electronic_days
integer
- Of those, the days with electronic evidence; null when not computed.
-
month
string, required
- YYYY-MM.
-
share
number
- electronic_days / client_days, 0 to 1; null with no worked day.
| Field |
Type |
Required |
Description |
| client_days |
integer |
no |
Worked client-days; null when not computed. |
| computed |
boolean |
yes |
False when the month has no snapshot yet: not 0%. |
| electronic_days |
integer |
no |
Of those, the days with electronic evidence; null when not computed. |
| month |
string |
yes |
YYYY-MM. |
| share |
number |
no |
electronic_days / client_days, 0 to 1; null with no worked day. |
EligibilityCheck
A Medicaid eligibility check the agency recorded for a client and one coverage month.
-
client_id
string, required
- The client checked.
-
coverage_month
integer
- The coverage month, 1 to 12.
-
coverage_year
integer
- The coverage year.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the check was recorded.
-
method
string
-
note
string
- Free text on the check.
-
status
string, required
-
verified_on
string
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client checked. |
| coverage_month |
integer |
no |
The coverage month, 1 to 12. |
| coverage_year |
integer |
no |
The coverage year. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the check was recorded. |
| method |
string |
no |
|
| note |
string |
no |
Free text on the check. |
| status |
string |
yes |
|
| verified_on |
string |
no |
|
Error
Every error on the API. The details field appears on a 422 and maps each invalid field to its messages.
-
error
object, required
-
error.code
string, required
- Stable, machine-readable, for example not_found or idempotency_key_reused.
-
error.details
object
- On a 422: each invalid field to a list of its messages. A nested record's field maps to an object of the same shape, and a list of nested records to a list of such objects. On a 409 whose code carries data (for example possible_match), that data, as the operation's 409 response describes it.
-
error.message
string, required
- For a person to read.
| Field |
Type |
Required |
Description |
| error |
object |
yes |
|
| error.code |
string |
yes |
Stable, machine-readable, for example not_found or idempotency_key_reused. |
| error.details |
object |
no |
On a 422: each invalid field to a list of its messages. A nested record's field maps to an object of the same shape, and a list of nested records to a list of such objects. On a 409 whose code carries data (for example possible_match), that data, as the operation's 409 response describes it. |
| error.message |
string |
yes |
For a person to read. |
EvidenceDismissal
-
already_dismissed
boolean, required
- true when this request found the conflict dismissed already.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
conflict_key
string, required
- The conflict dismissed.
-
dismissed_at
string, required
- When it was dismissed.
-
dismissed_by_user_id
string
- The member who dismissed it.
-
id
string, required
- The record's id.
-
reason
string, required
- Why it was dismissed.
-
service_date
string, required
- The day.
| Field |
Type |
Required |
Description |
| already_dismissed |
boolean |
yes |
true when this request found the conflict dismissed already. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| conflict_key |
string |
yes |
The conflict dismissed. |
| dismissed_at |
string |
yes |
When it was dismissed. |
| dismissed_by_user_id |
string |
no |
The member who dismissed it. |
| id |
string |
yes |
The record's id. |
| reason |
string |
yes |
Why it was dismissed. |
| service_date |
string |
yes |
The day. |
EvvCollection
-
enrolled_caregivers
integer, required
- How many caregivers are enrolled in the EVV pilot.
-
evv_collected_from
string, required
- The agency's calendar day HCB starts collecting EVV; null for no start day.
-
evv_rollout
string, required
- Who HCB collects EVV for: off (alerts start with the agency's first clock-in), pilot (enrolled caregivers only) or all.
| Field |
Type |
Required |
Description |
| enrolled_caregivers |
integer |
yes |
How many caregivers are enrolled in the EVV pilot. |
| evv_collected_from |
string |
yes |
The agency's calendar day HCB starts collecting EVV; null for no start day. |
| evv_rollout |
string |
yes |
Who HCB collects EVV for: off (alerts start with the agency's first clock-in), pilot (enrolled caregivers only) or all. |
EvvCollectionUpdate
-
evv_collected_from
string
- The agency's calendar day HCB starts collecting EVV; null for no start day.
-
evv_rollout
string
- Who HCB collects EVV for: off (alerts start with the agency's first clock-in), pilot (enrolled caregivers only) or all.
| Field |
Type |
Required |
Description |
| evv_collected_from |
string |
no |
The agency's calendar day HCB starts collecting EVV; null for no start day. |
| evv_rollout |
string |
no |
Who HCB collects EVV for: off (alerts start with the agency's first clock-in), pilot (enrolled caregivers only) or all. |
EvvExceptionRule
-
description
string
- What it means.
-
enabled
boolean, required
- Whether it raises exceptions.
-
id
string, required
- The record's id.
-
rule_type
string, required
- What the rule checks.
-
severity
string
- How serious its exceptions are.
-
threshold_unit
string
- The threshold's unit.
-
threshold_value
string
- Its threshold.
| Field |
Type |
Required |
Description |
| description |
string |
no |
What it means. |
| enabled |
boolean |
yes |
Whether it raises exceptions. |
| id |
string |
yes |
The record's id. |
| rule_type |
string |
yes |
What the rule checks. |
| severity |
string |
no |
How serious its exceptions are. |
| threshold_unit |
string |
no |
The threshold's unit. |
| threshold_value |
string |
no |
Its threshold. |
EvvExceptionRuleUpdate
-
description
string
- What it means; null clears it.
-
enabled
boolean
- Whether it raises exceptions.
-
severity
string
- How serious.
-
threshold_unit
string
- The threshold's unit; null clears it.
-
threshold_value
string
- The threshold; null clears it.
| Field |
Type |
Required |
Description |
| description |
string |
no |
What it means; null clears it. |
| enabled |
boolean |
no |
Whether it raises exceptions. |
| severity |
string |
no |
How serious. |
| threshold_unit |
string |
no |
The threshold's unit; null clears it. |
| threshold_value |
string |
no |
The threshold; null clears it. |
EvvExceptionRules
EvvExceptionRulesReset
FileCompleteness
One client's or caregiver's file completeness: each item's status, what is wrong, and its expiry.
-
id
string, required
- The record's id.
-
items
object, required
- Each file item by key.
-
name
string
- The person's name.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record's id. |
| items |
object |
yes |
Each file item by key. |
| name |
string |
no |
The person's name. |
FileCompletenessItem
One item of a person's file: its status, what is wrong with it, and its expiry.
-
days
integer
- Days until it expires, or since it expired.
-
details
string
- What is wrong.
-
expiry_date
string
- When it expires.
-
status
string, required
- complete, missing, expiring_soon, and so on.
| Field |
Type |
Required |
Description |
| days |
integer |
no |
Days until it expires, or since it expired. |
| details |
string |
no |
What is wrong. |
| expiry_date |
string |
no |
When it expires. |
| status |
string |
yes |
complete, missing, expiring_soon, and so on. |
FileGaps
One person with a gap in their file: who, and only the items not complete.
-
gaps
object, required
-
id
string, required
- The record's id.
-
name
string
- The person's name.
| Field |
Type |
Required |
Description |
| gaps |
object |
yes |
|
| id |
string |
yes |
The record's id. |
| name |
string |
no |
The person's name. |
FindingDismissal
-
dismissed_at
string, required
- When it was dismissed.
-
dismissed_by_user_id
string
- The member who dismissed it.
-
dismissed_via
string, required
- session (the web app) or token (an API key or connected app).
-
fingerprint
string, required
- The figures dismissed.
-
id
string, required
- The record's id.
-
reason
string
- Why it was dismissed.
-
restored_at
string
- When it was shown again; null while it is dismissed.
-
rule_id
string, required
- The warning's rule, as the warning names it.
-
subject_date
string
- The day, for a warning about one day of its subject.
-
subject_id
string, required
- The record's id.
-
subject_type
string, required
- What the warning is about, e.g. claim.
| Field |
Type |
Required |
Description |
| dismissed_at |
string |
yes |
When it was dismissed. |
| dismissed_by_user_id |
string |
no |
The member who dismissed it. |
| dismissed_via |
string |
yes |
session (the web app) or token (an API key or connected app). |
| fingerprint |
string |
yes |
The figures dismissed. |
| id |
string |
yes |
The record's id. |
| reason |
string |
no |
Why it was dismissed. |
| restored_at |
string |
no |
When it was shown again; null while it is dismissed. |
| rule_id |
string |
yes |
The warning's rule, as the warning names it. |
| subject_date |
string |
no |
The day, for a warning about one day of its subject. |
| subject_id |
string |
yes |
The record's id. |
| subject_type |
string |
yes |
What the warning is about, e.g. claim. |
HalfMonthSummary
One caregiver's half of a month for one client, as the evidence grid shows it, with where its signing stands. A draft's days are re-read from the grid each time it is answered; the first signature freezes them.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
client_skip_reason
string
- Why the client could not sign, as the caregiver gave it; null when none.
-
days
array of object, required
- The days of the half with care, oldest first.
-
days[].date
string, required
- The day.
-
days[].hours
string, required
- The day's hours.
-
days[].shifts
array of object, required
- The day's shifts.
-
days[].shifts[].end
string
- When it ended (UTC).
-
days[].shifts[].hours
string, required
- Its hours, to two places.
-
days[].shifts[].source
string, required
- Where the shift came from: a care log's source, else the visit's evidence source.
-
days[].shifts[].start
string
- When it started (UTC).
-
days[].shifts[].tasks
array of string, required
- The codes of the tasks done, from a care log; empty otherwise.
-
id
string, required
- The record's id.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
period_end
string, required
- The half's last day, the 15th or the month's last.
-
period_start
string, required
- The half's first day, the 1st or the 16th.
-
record_state
string, required
- draft until the first signature freezes it; then signed, amended or voided (corrected by a new draft).
-
replaces_id
string
- The voided summary this draft corrects; null when none.
-
service_type
string
- The service it attests: the client signs one summary per service. null for a shared summary from before that, which covers every service of the pair until it is voided.
-
signatures
array of object, required
- The live signatures, oldest first, without their images.
-
signatures[].channel
string
- Where it was captured.
-
signatures[].id
string, required
- The signature.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed: caregiver, client or representative.
-
signatures[].signed_at
string, required
- When it was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When it was first signed; null for a draft.
-
signing
object, required
-
signing.caregiver_signed
boolean, required
- Whether the caregiver's line is signed.
-
signing.client_signed
boolean, required
- Whether the client's line is signed, by them or a representative.
-
signing.complete
boolean, required
- Whether every line it needs is signed.
-
signing.hash
string, required
- The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed.
-
signing.open
boolean, required
- Whether that day has come.
-
signing.opens_on
string, required
- The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date).
-
total_hours
string
- The half's hours.
-
voided_at
string
- When it was voided; null unless voided.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| client_skip_reason |
string |
no |
Why the client could not sign, as the caregiver gave it; null when none. |
| days |
array of object |
yes |
The days of the half with care, oldest first. |
| days[].date |
string |
yes |
The day. |
| days[].hours |
string |
yes |
The day's hours. |
| days[].shifts |
array of object |
yes |
The day's shifts. |
| days[].shifts[].end |
string |
no |
When it ended (UTC). |
| days[].shifts[].hours |
string |
yes |
Its hours, to two places. |
| days[].shifts[].source |
string |
yes |
Where the shift came from: a care log's source, else the visit's evidence source. |
| days[].shifts[].start |
string |
no |
When it started (UTC). |
| days[].shifts[].tasks |
array of string |
yes |
The codes of the tasks done, from a care log; empty otherwise. |
| id |
string |
yes |
The record's id. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| period_end |
string |
yes |
The half's last day, the 15th or the month's last. |
| period_start |
string |
yes |
The half's first day, the 1st or the 16th. |
| record_state |
string |
yes |
draft until the first signature freezes it; then signed, amended or voided (corrected by a new draft). |
| replaces_id |
string |
no |
The voided summary this draft corrects; null when none. |
| service_type |
string |
no |
The service it attests: the client signs one summary per service. null for a shared summary from before that, which covers every service of the pair until it is voided. |
| signatures |
array of object |
yes |
The live signatures, oldest first, without their images. |
| signatures[].channel |
string |
no |
Where it was captured. |
| signatures[].id |
string |
yes |
The signature. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed: caregiver, client or representative. |
| signatures[].signed_at |
string |
yes |
When it was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| signing |
object |
yes |
|
| signing.caregiver_signed |
boolean |
yes |
Whether the caregiver's line is signed. |
| signing.client_signed |
boolean |
yes |
Whether the client's line is signed, by them or a representative. |
| signing.complete |
boolean |
yes |
Whether every line it needs is signed. |
| signing.hash |
string |
yes |
The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed. |
| signing.open |
boolean |
yes |
Whether that day has come. |
| signing.opens_on |
string |
yes |
The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date). |
| total_hours |
string |
no |
The half's hours. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
HalfMonthSummaryDay
-
date
string, required
- The day.
-
hours
string, required
- The day's hours.
-
shifts
array of object, required
- The day's shifts.
-
shifts[].end
string
- When it ended (UTC).
-
shifts[].hours
string, required
- Its hours, to two places.
-
shifts[].source
string, required
- Where the shift came from: a care log's source, else the visit's evidence source.
-
shifts[].start
string
- When it started (UTC).
-
shifts[].tasks
array of string, required
- The codes of the tasks done, from a care log; empty otherwise.
| Field |
Type |
Required |
Description |
| date |
string |
yes |
The day. |
| hours |
string |
yes |
The day's hours. |
| shifts |
array of object |
yes |
The day's shifts. |
| shifts[].end |
string |
no |
When it ended (UTC). |
| shifts[].hours |
string |
yes |
Its hours, to two places. |
| shifts[].source |
string |
yes |
Where the shift came from: a care log's source, else the visit's evidence source. |
| shifts[].start |
string |
no |
When it started (UTC). |
| shifts[].tasks |
array of string |
yes |
The codes of the tasks done, from a care log; empty otherwise. |
HalfMonthSummaryShift
-
end
string
- When it ended (UTC).
-
hours
string, required
- Its hours, to two places.
-
source
string, required
- Where the shift came from: a care log's source, else the visit's evidence source.
-
start
string
- When it started (UTC).
-
tasks
array of string, required
- The codes of the tasks done, from a care log; empty otherwise.
| Field |
Type |
Required |
Description |
| end |
string |
no |
When it ended (UTC). |
| hours |
string |
yes |
Its hours, to two places. |
| source |
string |
yes |
Where the shift came from: a care log's source, else the visit's evidence source. |
| start |
string |
no |
When it started (UTC). |
| tasks |
array of string |
yes |
The codes of the tasks done, from a care log; empty otherwise. |
HalfMonthSummarySignature
-
channel
string
- Where it was captured.
-
id
string, required
- The signature.
-
method
string, required
- How it was signed.
-
role
string, required
- The line signed: caregiver, client or representative.
-
signed_at
string, required
- When it was signed.
-
signer_name
string
- The name the line is signed under.
| Field |
Type |
Required |
Description |
| channel |
string |
no |
Where it was captured. |
| id |
string |
yes |
The signature. |
| method |
string |
yes |
How it was signed. |
| role |
string |
yes |
The line signed: caregiver, client or representative. |
| signed_at |
string |
yes |
When it was signed. |
| signer_name |
string |
no |
The name the line is signed under. |
HalfMonthSummarySigning
-
caregiver_signed
boolean, required
- Whether the caregiver's line is signed.
-
client_signed
boolean, required
- Whether the client's line is signed, by them or a representative.
-
complete
boolean, required
- Whether every line it needs is signed.
-
hash
string, required
- The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed.
-
open
boolean, required
- Whether that day has come.
-
opens_on
string, required
- The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date).
| Field |
Type |
Required |
Description |
| caregiver_signed |
boolean |
yes |
Whether the caregiver's line is signed. |
| client_signed |
boolean |
yes |
Whether the client's line is signed, by them or a representative. |
| complete |
boolean |
yes |
Whether every line it needs is signed. |
| hash |
string |
yes |
The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed. |
| open |
boolean |
yes |
Whether that day has come. |
| opens_on |
string |
yes |
The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date). |
IntakeWarningDismissal
-
client_id
string, required
- The record's id.
-
dismissed_at
string, required
- When it was dismissed.
-
dismissed_by_id
string
- The user who dismissed it; the credential's user here.
-
missing_forms
array of string, required
- The forms missing when it was dismissed; the warning shows again only when another form goes missing.
-
reason
string
- The reason given, or null.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The record's id. |
| dismissed_at |
string |
yes |
When it was dismissed. |
| dismissed_by_id |
string |
no |
The user who dismissed it; the credential's user here. |
| missing_forms |
array of string |
yes |
The forms missing when it was dismissed; the warning shows again only when another form goes missing. |
| reason |
string |
no |
The reason given, or null. |
IntakeWarningDismissalInput
-
reason
string
- Why the warning is dismissed, e.g. the intake packet was signed on paper and filed. Optional.
| Field |
Type |
Required |
Description |
| reason |
string |
no |
Why the warning is dismissed, e.g. the intake packet was signed on paper and filed. Optional. |
Me
-
agency_name
string, required
- The agency the caregiver works for.
-
email
string, required
- The caregiver's email.
-
employee_id
string, required
- The caregiver's employee id at the agency.
-
first_name
string, required
-
id
string, required
- The caregiver's id.
-
last_name
string, required
-
phone
string, required
- The caregiver's cell phone, or home phone.
-
unread_notifications
integer, required
- Notifications not yet read or dismissed (GET /api/v1/me/notifications).
| Field |
Type |
Required |
Description |
| agency_name |
string |
yes |
The agency the caregiver works for. |
| email |
string |
yes |
The caregiver's email. |
| employee_id |
string |
yes |
The caregiver's employee id at the agency. |
| first_name |
string |
yes |
|
| id |
string |
yes |
The caregiver's id. |
| last_name |
string |
yes |
|
| phone |
string |
yes |
The caregiver's cell phone, or home phone. |
| unread_notifications |
integer |
yes |
Notifications not yet read or dismissed (GET /api/v1/me/notifications). |
MeCareLog
One of your care logs not finished yet: a draft with no finished_at, inside the app's reach.
-
attestation_skip_note
string
- The caregiver's note on that reason (required for other); null when none.
-
attestation_skip_reason
string
- Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given.
-
attestation_skipped_at
string
- When the reason was given; null when none was.
-
attestation_skipped_by_caregiver_id
string
- The caregiver who gave the reason; null when none was.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
finished_at
string
- When it was marked finished; null while open.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
- The day's notes.
-
record_state
string, required
- draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft).
-
replaces_id
string
- The voided care log this draft corrects; null when none.
-
service_date
string, required
- The day.
-
service_type
string
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4.
-
signed_at
string
- When it was first signed; null for a draft.
-
source
string
- Where it was captured: hcb_app, hcb_phone, office, paper_scan or import.
-
time_in
string
- The entered start time, used only when no Visit is linked.
-
time_out
string
- The entered end time, used only when no Visit is linked.
-
updated_at
string
- When it last changed.
-
visit_id
string
- The Visit linked to the day, whose times are the care log's; null when none.
-
voided_at
string
- When it was voided; null unless voided.
| Field |
Type |
Required |
Description |
| attestation_skip_note |
string |
no |
The caregiver's note on that reason (required for other); null when none. |
| attestation_skip_reason |
string |
no |
Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given. |
| attestation_skipped_at |
string |
no |
When the reason was given; null when none was. |
| attestation_skipped_by_caregiver_id |
string |
no |
The caregiver who gave the reason; null when none was. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| finished_at |
string |
no |
When it was marked finished; null while open. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
The day's notes. |
| record_state |
string |
yes |
draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft). |
| replaces_id |
string |
no |
The voided care log this draft corrects; null when none. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
no |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| source |
string |
no |
Where it was captured: hcb_app, hcb_phone, office, paper_scan or import. |
| time_in |
string |
no |
The entered start time, used only when no Visit is linked. |
| time_out |
string |
no |
The entered end time, used only when no Visit is linked. |
| updated_at |
string |
no |
When it last changed. |
| visit_id |
string |
no |
The Visit linked to the day, whose times are the care log's; null when none. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
MeCareLogAttestation
-
capture_method
string
- drawn (the default) or initials.
-
expected_content_hash
string
- The signing_hash of the day the client read; a day changed since is refused with 409 content_changed.
-
image
string, required
- The signature as a base64 PNG, at most 51200 bytes.
-
role
string
- Who signs: the client (the default) or their representative in their place.
-
signer_name
string
- A representative's attestation by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". A client signs under their own name.
-
signer_relation_id
string
- A representative's attestation: the relation_id of one of the representatives the care log lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed.
| Field |
Type |
Required |
Description |
| capture_method |
string |
no |
drawn (the default) or initials. |
| expected_content_hash |
string |
no |
The signing_hash of the day the client read; a day changed since is refused with 409 content_changed. |
| image |
string |
yes |
The signature as a base64 PNG, at most 51200 bytes. |
| role |
string |
no |
Who signs: the client (the default) or their representative in their place. |
| signer_name |
string |
no |
A representative's attestation by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". A client signs under their own name. |
| signer_relation_id |
string |
no |
A representative's attestation: the relation_id of one of the representatives the care log lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed. |
MeCareLogAttestationSkip
-
note
string
- The reason in words; required for other.
-
reason
string, required
- Why the client could not sign.
| Field |
Type |
Required |
Description |
| note |
string |
no |
The reason in words; required for other. |
| reason |
string |
yes |
Why the client could not sign. |
MeCareLogDetail
One of your care logs: the day, its tasks, its times, the differences from the plan to explain and its live signatures, with the hash to attest it under and the people who may sign in the client's place.
-
attestation_skip_note
string
- The caregiver's note on that reason (required for other); null when none.
-
attestation_skip_reason
string
- Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given.
-
attestation_skipped_at
string
- When the reason was given; null when none was.
-
attestation_skipped_by_caregiver_id
string
- The caregiver who gave the reason; null when none was.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
finished_at
string
- When it was marked finished; null while open.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
notes
string
- The day's notes.
-
record_state
string, required
- draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft).
-
replaced_by_id
string
- The draft that corrects this voided care log; null when none.
-
replaces_id
string
- The voided care log this draft corrects; null when none.
-
representatives
array of MeRepresentative, required
- The client's current representative, then its current responsible party, one entry per person; empty when the office recorded neither, or when the client is not one you are assigned to today. Send an entry's relation_id as signer_relation_id with a representative's attestation.
-
service_date
string, required
- The day.
-
service_type
string
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4.
-
signatures
array of object, required
- The live signatures, oldest first, without their images.
-
signatures[].channel
string
- Where it was captured.
-
signatures[].evidence_document_id
string
- The client's document holding the paper scan; null when none.
-
signatures[].id
string, required
- The signature.
-
signatures[].method
string, required
- How it was signed; paper_on_file for a paper signature the office marked as on file.
-
signatures[].role
string, required
- The line signed (client, caregiver, ...).
-
signatures[].signed_at
string, required
- When it was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When it was first signed; null for a draft.
-
signing_hash
string, required
- The hash of the day as answered; send it as expected_content_hash with the client's attestation, so a day changed since is refused (409 content_changed) rather than signed.
-
source
string
- Where it was captured: hcb_app, hcb_phone, office, paper_scan or import.
-
tasks
array of object, required
- Planned tasks first, then those added off the plan.
-
tasks[].code
string
- The task's code.
-
tasks[].count
integer, required
- How many times.
-
tasks[].id
string, required
- The care log's task.
-
tasks[].name
string
- The task's name.
-
tasks[].planned
boolean, required
- Whether a Work Order in force planned it for the day; false for one added off the plan.
-
tasks[].reason_code
string
- Why it was refused, not needed or added.
-
tasks[].reason_note
string
- The reason in words.
-
tasks[].status
string
- done, refused or not_needed; null when unmarked.
-
tasks[].task_definition_id
string, required
- The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark).
-
time_in
string
- The entered start time, used only when no Visit is linked.
-
time_out
string
- The entered end time, used only when no Visit is linked.
-
times
object, required
-
times.end
string
- When it ended.
-
times.source
string, required
- visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked.
-
times.start
string
- When the day's care started.
-
updated_at
string
- When it last changed.
-
visit_id
string
- The Visit linked to the day, whose times are the care log's; null when none.
-
voided_at
string
- When it was voided; null unless voided.
-
warnings
array of object, required
- The differences from the plan the care log should explain.
-
warnings[].code
string, required
- What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save.
-
warnings[].message
string, required
- The warning in words.
-
warnings[].task_definition_id
string
- The task it is about; null for a warning about the day (times_missing).
| Field |
Type |
Required |
Description |
| attestation_skip_note |
string |
no |
The caregiver's note on that reason (required for other); null when none. |
| attestation_skip_reason |
string |
no |
Why the client did not sign, as the caregiver gave it with Client can't sign (US-101.20); the day stays a draft for the office to collect a signature. null when none was given. |
| attestation_skipped_at |
string |
no |
When the reason was given; null when none was. |
| attestation_skipped_by_caregiver_id |
string |
no |
The caregiver who gave the reason; null when none was. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| finished_at |
string |
no |
When it was marked finished; null while open. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| notes |
string |
no |
The day's notes. |
| record_state |
string |
yes |
draft until the client's signature (or a paper signature on file) locks it; then signed, amended (an addendum was signed) or voided (corrected by a new draft). |
| replaced_by_id |
string |
no |
The draft that corrects this voided care log; null when none. |
| replaces_id |
string |
no |
The voided care log this draft corrects; null when none. |
| representatives |
array of MeRepresentative |
yes |
The client's current representative, then its current responsible party, one entry per person; empty when the office recorded neither, or when the client is not one you are assigned to today. Send an entry's relation_id as signer_relation_id with a representative's attestation. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
no |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| signatures |
array of object |
yes |
The live signatures, oldest first, without their images. |
| signatures[].channel |
string |
no |
Where it was captured. |
| signatures[].evidence_document_id |
string |
no |
The client's document holding the paper scan; null when none. |
| signatures[].id |
string |
yes |
The signature. |
| signatures[].method |
string |
yes |
How it was signed; paper_on_file for a paper signature the office marked as on file. |
| signatures[].role |
string |
yes |
The line signed (client, caregiver, ...). |
| signatures[].signed_at |
string |
yes |
When it was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| signing_hash |
string |
yes |
The hash of the day as answered; send it as expected_content_hash with the client's attestation, so a day changed since is refused (409 content_changed) rather than signed. |
| source |
string |
no |
Where it was captured: hcb_app, hcb_phone, office, paper_scan or import. |
| tasks |
array of object |
yes |
Planned tasks first, then those added off the plan. |
| tasks[].code |
string |
no |
The task's code. |
| tasks[].count |
integer |
yes |
How many times. |
| tasks[].id |
string |
yes |
The care log's task. |
| tasks[].name |
string |
no |
The task's name. |
| tasks[].planned |
boolean |
yes |
Whether a Work Order in force planned it for the day; false for one added off the plan. |
| tasks[].reason_code |
string |
no |
Why it was refused, not needed or added. |
| tasks[].reason_note |
string |
no |
The reason in words. |
| tasks[].status |
string |
no |
done, refused or not_needed; null when unmarked. |
| tasks[].task_definition_id |
string |
yes |
The agency's task; the {task_id} a mark is sent to (POST /care-logs/{id}/tasks/{task_id}/mark). |
| time_in |
string |
no |
The entered start time, used only when no Visit is linked. |
| time_out |
string |
no |
The entered end time, used only when no Visit is linked. |
| times |
object |
yes |
|
| times.end |
string |
no |
When it ended. |
| times.source |
string |
yes |
visit: the linked Visit's billable times (adjusted, else actual, else scheduled); entered: time_in and time_out, when no Visit is linked. |
| times.start |
string |
no |
When the day's care started. |
| updated_at |
string |
no |
When it last changed. |
| visit_id |
string |
no |
The Visit linked to the day, whose times are the care log's; null when none. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
| warnings |
array of object |
yes |
The differences from the plan the care log should explain. |
| warnings[].code |
string |
yes |
What differs from the plan. times_missing: no Visit is linked and the time in or time out is empty, so the day counts 0 hours. A care_logs.* code is a finding the save just answered raised: past the weekly or daily caregiver limit, past the Work Order's planned hours, entered times off the clocked Visit by more than 30 minutes, a day the Work Order withdrew, or time out equal to time in (0 hours). None refuses the save. |
| warnings[].message |
string |
yes |
The warning in words. |
| warnings[].task_definition_id |
string |
no |
The task it is about; null for a warning about the day (times_missing). |
MeCareLogPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeCareLog, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeCareLog |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MeCareLogStart
-
client_id
string, required
- The client.
-
service_date
string, required
- The day.
-
service_type
string, required
- The service, as the Work Order's.
-
shift_number
integer
- The shift, 1 to 4 (default 1).
-
visit_id
string
- Your Visit to link, with the same client on the same day. Left out, the day's one such Visit is linked when exactly one exists.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
yes |
The service, as the Work Order's. |
| shift_number |
integer |
no |
The shift, 1 to 4 (default 1). |
| visit_id |
string |
no |
Your Visit to link, with the same client on the same day. Left out, the day's one such Visit is linked when exactly one exists. |
MeCareLogTaskAdd
-
count
integer
- How many times; 1 when left out.
-
reason_code
string
- Why it was done off the plan.
-
reason_note
string
- The reason in words.
-
task_definition_id
string, required
- The task to add: one of the agency's tasks or a system one.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; 1 when left out. |
| reason_code |
string |
no |
Why it was done off the plan. |
| reason_note |
string |
no |
The reason in words. |
| task_definition_id |
string |
yes |
The task to add: one of the agency's tasks or a system one. |
MeCareLogTaskMark
-
count
integer
- How many times; unchanged when left out.
-
expect_status
string
- The status the app showed; sent (null included), the mark is refused with 409 stale_record when the task no longer has it, so a clear re-sent after the office changed the task changes nothing.
-
reason_code
string
- Why a task was refused or not needed; left out or null clears it, as a mark on the screen does.
-
reason_note
string
- The reason in words; left out or null clears it.
-
status
string, required
- The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing.
| Field |
Type |
Required |
Description |
| count |
integer |
no |
How many times; unchanged when left out. |
| expect_status |
string |
no |
The status the app showed; sent (null included), the mark is refused with 409 stale_record when the task no longer has it, so a clear re-sent after the office changed the task changes nothing. |
| reason_code |
string |
no |
Why a task was refused or not needed; left out or null clears it, as a mark on the screen does. |
| reason_note |
string |
no |
The reason in words; left out or null clears it. |
| status |
string |
yes |
The status to SET: done, refused or not_needed; null clears it. Sending the status the task already has changes nothing. |
MeClockEvent
-
accuracy
number
- GPS accuracy in meters.
-
action
string, required
-
captured_at
number
- When the phone recorded the clock, in Unix milliseconds: the clock's time, read as clock-in reads it.
-
id
string, required
- The app's own id for the event, echoed in synced or failed; resend the same one to retry.
-
latitude
number
-
longitude
number
-
manual
boolean
- true records a manual call.
-
visit_id
string, required
- One of your visits.
| Field |
Type |
Required |
Description |
| accuracy |
number |
no |
GPS accuracy in meters. |
| action |
string |
yes |
|
| captured_at |
number |
no |
When the phone recorded the clock, in Unix milliseconds: the clock's time, read as clock-in reads it. |
| id |
string |
yes |
The app's own id for the event, echoed in synced or failed; resend the same one to retry. |
| latitude |
number |
no |
|
| longitude |
number |
no |
|
| manual |
boolean |
no |
true records a manual call. |
| visit_id |
string |
yes |
One of your visits. |
MeClockEventsInput
-
events
array of object, required
- At most 100.
-
events[].accuracy
number
- GPS accuracy in meters.
-
events[].action
string, required
-
events[].captured_at
number
- When the phone recorded the clock, in Unix milliseconds: the clock's time, read as clock-in reads it.
-
events[].id
string, required
- The app's own id for the event, echoed in synced or failed; resend the same one to retry.
-
events[].latitude
number
-
events[].longitude
number
-
events[].manual
boolean
- true records a manual call.
-
events[].visit_id
string, required
- One of your visits.
| Field |
Type |
Required |
Description |
| events |
array of object |
yes |
At most 100. |
| events[].accuracy |
number |
no |
GPS accuracy in meters. |
| events[].action |
string |
yes |
|
| events[].captured_at |
number |
no |
When the phone recorded the clock, in Unix milliseconds: the clock's time, read as clock-in reads it. |
| events[].id |
string |
yes |
The app's own id for the event, echoed in synced or failed; resend the same one to retry. |
| events[].latitude |
number |
no |
|
| events[].longitude |
number |
no |
|
| events[].manual |
boolean |
no |
true records a manual call. |
| events[].visit_id |
string |
yes |
One of your visits. |
MeClockEventsResult
-
failed
array of object, required
- Events not recorded, each with why; keep them and retry those that can succeed.
-
failed[].error
string
- visit_not_found (not one of your visits within reach), unknown_action, invalid_event (an id that is not a string; answered with a null id), clock_in_required, visit_not_clockable (the visit was closed and the server could not keep the clock: retry), sync_failed (retry), clock_in_failed or clock_out_failed.
-
failed[].id
string
-
synced
array of string, required
- Ids of events recorded, already recorded, or kept for the office because the visit was closed: drop them.
| Field |
Type |
Required |
Description |
| failed |
array of object |
yes |
Events not recorded, each with why; keep them and retry those that can succeed. |
| failed[].error |
string |
no |
visit_not_found (not one of your visits within reach), unknown_action, invalid_event (an id that is not a string; answered with a null id), clock_in_required, visit_not_clockable (the visit was closed and the server could not keep the clock: retry), sync_failed (retry), clock_in_failed or clock_out_failed. |
| failed[].id |
string |
no |
|
| synced |
array of string |
yes |
Ids of events recorded, already recorded, or kept for the office because the visit was closed: drop them. |
MeClockInput
-
accuracy
number
- GPS accuracy in meters; a negative one, one over 10,000 km, or a non-number is left out, with unknown_accuracy.
-
captured_at
number
- When the device recorded the clock, in Unix milliseconds (a fraction is allowed); omit for now. One that is not a number, ahead of now, or before the visit existed (each by more than 5 minutes) is recorded at the server's time with a warning; one sent more than 5 minutes after the time it carries is recorded at that time, with late_sync.
-
latitude
number
- The device's latitude. With longitude, a pair that is not a location is left out, with invalid_coordinates; none at all records a manual call.
-
longitude
number
- The device's longitude.
-
manual
boolean
- true records a manual call, with no coordinates needed; false, null or left out does not.
| Field |
Type |
Required |
Description |
| accuracy |
number |
no |
GPS accuracy in meters; a negative one, one over 10,000 km, or a non-number is left out, with unknown_accuracy. |
| captured_at |
number |
no |
When the device recorded the clock, in Unix milliseconds (a fraction is allowed); omit for now. One that is not a number, ahead of now, or before the visit existed (each by more than 5 minutes) is recorded at the server's time with a warning; one sent more than 5 minutes after the time it carries is recorded at that time, with late_sync. |
| latitude |
number |
no |
The device's latitude. With longitude, a pair that is not a location is left out, with invalid_coordinates; none at all records a manual call. |
| longitude |
number |
no |
The device's longitude. |
| manual |
boolean |
no |
true records a manual call, with no coordinates needed; false, null or left out does not. |
MeClockResult
-
call
object, required
- A clock-in or clock-out recorded on the visit.
-
call.call_datetime
string
- When the call was made (UTC).
-
call.call_type
string
- How the call was made.
-
call.id
string
- The record's id.
-
call.location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
-
gps_warnings
array of object, required
- What the clock was recorded with; it was recorded whatever they are.
-
gps_warnings[].message
string, required
-
gps_warnings[].type
string, required
- One of no_gps, low_accuracy, moderate_accuracy, suspicious_accuracy, outside_geofence, invalid_coordinates, unknown_accuracy, invalid_captured_at, captured_at_out_of_range, late_sync, manual, outside_schedule, before_clock_in; a later one may be added.
-
visit
object, required
-
visit.actual_end_time
string
- When you clocked out (UTC).
-
visit.actual_start_time
string
- When you clocked in (UTC).
-
visit.id
string, required
- The record's id.
-
visit.status
string, required
| Field |
Type |
Required |
Description |
| call |
object |
yes |
A clock-in or clock-out recorded on the visit. |
| call.call_datetime |
string |
no |
When the call was made (UTC). |
| call.call_type |
string |
no |
How the call was made. |
| call.id |
string |
no |
The record's id. |
| call.location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
| gps_warnings |
array of object |
yes |
What the clock was recorded with; it was recorded whatever they are. |
| gps_warnings[].message |
string |
yes |
|
| gps_warnings[].type |
string |
yes |
One of no_gps, low_accuracy, moderate_accuracy, suspicious_accuracy, outside_geofence, invalid_coordinates, unknown_accuracy, invalid_captured_at, captured_at_out_of_range, late_sync, manual, outside_schedule, before_clock_in; a later one may be added. |
| visit |
object |
yes |
|
| visit.actual_end_time |
string |
no |
When you clocked out (UTC). |
| visit.actual_start_time |
string |
no |
When you clocked in (UTC). |
| visit.id |
string |
yes |
The record's id. |
| visit.status |
string |
yes |
|
MeDevice
-
current
boolean, required
- Whether this is the device making the request.
-
device_id
string, required
- The app's id for the device, sent at sign-in.
-
expires_at
string
- When the sign-in ends unless renewed.
-
id
string, required
- The record's id.
-
inserted_at
string, required
- When the device signed in.
-
last_seen_at
string
- When the device was last used.
| Field |
Type |
Required |
Description |
| current |
boolean |
yes |
Whether this is the device making the request. |
| device_id |
string |
yes |
The app's id for the device, sent at sign-in. |
| expires_at |
string |
no |
When the sign-in ends unless renewed. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
yes |
When the device signed in. |
| last_seen_at |
string |
no |
When the device was last used. |
MeDevicePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeDevice, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeDevice |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MeHalfMonthSummary
Your half-month summary as the app opens it, with the people who may sign the client's line in their place.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
client_skip_reason
string
- Why the client could not sign, as the caregiver gave it; null when none.
-
days
array of object, required
- The days of the half with care, oldest first.
-
days[].date
string, required
- The day.
-
days[].hours
string, required
- The day's hours.
-
days[].shifts
array of object, required
- The day's shifts.
-
days[].shifts[].end
string
- When it ended (UTC).
-
days[].shifts[].hours
string, required
- Its hours, to two places.
-
days[].shifts[].source
string, required
- Where the shift came from: a care log's source, else the visit's evidence source.
-
days[].shifts[].start
string
- When it started (UTC).
-
days[].shifts[].tasks
array of string, required
- The codes of the tasks done, from a care log; empty otherwise.
-
id
string, required
- The record's id.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
period_end
string, required
- The half's last day, the 15th or the month's last.
-
period_start
string, required
- The half's first day, the 1st or the 16th.
-
record_state
string, required
- draft until the first signature freezes it; then signed, amended or voided (corrected by a new draft).
-
replaces_id
string
- The voided summary this draft corrects; null when none.
-
representatives
array of MeRepresentative, required
- The client's current representative, then its current responsible party, one entry per person; empty when the office recorded neither, or when the client is not one you are assigned to today.
-
service_type
string
- The service it attests: the client signs one summary per service. null for a shared summary from before that, which covers every service of the pair until it is voided.
-
signatures
array of object, required
- The live signatures, oldest first, without their images.
-
signatures[].channel
string
- Where it was captured.
-
signatures[].id
string, required
- The signature.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed: caregiver, client or representative.
-
signatures[].signed_at
string, required
- When it was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When it was first signed; null for a draft.
-
signing
object, required
-
signing.caregiver_signed
boolean, required
- Whether the caregiver's line is signed.
-
signing.client_signed
boolean, required
- Whether the client's line is signed, by them or a representative.
-
signing.complete
boolean, required
- Whether every line it needs is signed.
-
signing.hash
string, required
- The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed.
-
signing.open
boolean, required
- Whether that day has come.
-
signing.opens_on
string, required
- The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date).
-
total_hours
string
- The half's hours.
-
voided_at
string
- When it was voided; null unless voided.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| client_skip_reason |
string |
no |
Why the client could not sign, as the caregiver gave it; null when none. |
| days |
array of object |
yes |
The days of the half with care, oldest first. |
| days[].date |
string |
yes |
The day. |
| days[].hours |
string |
yes |
The day's hours. |
| days[].shifts |
array of object |
yes |
The day's shifts. |
| days[].shifts[].end |
string |
no |
When it ended (UTC). |
| days[].shifts[].hours |
string |
yes |
Its hours, to two places. |
| days[].shifts[].source |
string |
yes |
Where the shift came from: a care log's source, else the visit's evidence source. |
| days[].shifts[].start |
string |
no |
When it started (UTC). |
| days[].shifts[].tasks |
array of string |
yes |
The codes of the tasks done, from a care log; empty otherwise. |
| id |
string |
yes |
The record's id. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| period_end |
string |
yes |
The half's last day, the 15th or the month's last. |
| period_start |
string |
yes |
The half's first day, the 1st or the 16th. |
| record_state |
string |
yes |
draft until the first signature freezes it; then signed, amended or voided (corrected by a new draft). |
| replaces_id |
string |
no |
The voided summary this draft corrects; null when none. |
| representatives |
array of MeRepresentative |
yes |
The client's current representative, then its current responsible party, one entry per person; empty when the office recorded neither, or when the client is not one you are assigned to today. |
| service_type |
string |
no |
The service it attests: the client signs one summary per service. null for a shared summary from before that, which covers every service of the pair until it is voided. |
| signatures |
array of object |
yes |
The live signatures, oldest first, without their images. |
| signatures[].channel |
string |
no |
Where it was captured. |
| signatures[].id |
string |
yes |
The signature. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed: caregiver, client or representative. |
| signatures[].signed_at |
string |
yes |
When it was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When it was first signed; null for a draft. |
| signing |
object |
yes |
|
| signing.caregiver_signed |
boolean |
yes |
Whether the caregiver's line is signed. |
| signing.client_signed |
boolean |
yes |
Whether the client's line is signed, by them or a representative. |
| signing.complete |
boolean |
yes |
Whether every line it needs is signed. |
| signing.hash |
string |
yes |
The hash of the half as answered; send it as expected_content_hash with a signature, so a half that changed since is refused (409 content_changed) rather than signed. |
| signing.open |
boolean |
yes |
Whether that day has come. |
| signing.opens_on |
string |
yes |
The first day the half may be signed: the 15th for a first half, the 20th for a second (Colorado's date). |
| total_hours |
string |
no |
The half's hours. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
MeHalfMonthSummaryClientSkip
-
reason
string, required
- Why the client could not sign.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why the client could not sign. |
MeHalfMonthSummaryDraft
-
client_id
string, required
- The client.
-
period_start
string, required
- The half's first day, YYYY-MM-DD: the 1st or the 16th.
-
service_type
string
- The service the summary attests: the client signs one per service. Left out, the half's only service; a half with care for two services, or with none recorded and no summary yet, is 422 validation_failed.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| period_start |
string |
yes |
The half's first day, YYYY-MM-DD: the 1st or the 16th. |
| service_type |
string |
no |
The service the summary attests: the client signs one per service. Left out, the half's only service; a half with care for two services, or with none recorded and no summary yet, is 422 validation_failed. |
MeHalfMonthSummarySignature
-
capture_method
string
- drawn (the default) or initials.
-
expected_content_hash
string
- The signing.hash of the half the signer read; a half changed since is refused with 409 content_changed.
-
image
string, required
- The signature as a base64 PNG, at most 51200 bytes.
-
role
string, required
- The line signed: yours first, then the client's or their representative's.
-
signer_name
string
- A representative's line signed by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative".
-
signer_relation_id
string
- A representative's line: the relation_id of one of the representatives the summary lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed.
| Field |
Type |
Required |
Description |
| capture_method |
string |
no |
drawn (the default) or initials. |
| expected_content_hash |
string |
no |
The signing.hash of the half the signer read; a half changed since is refused with 409 content_changed. |
| image |
string |
yes |
The signature as a base64 PNG, at most 51200 bytes. |
| role |
string |
yes |
The line signed: yours first, then the client's or their representative's. |
| signer_name |
string |
no |
A representative's line signed by someone the office did not record: their name, signed with no relationship. With neither this nor signer_relation_id, the first listed representative signs, else "Representative". |
| signer_relation_id |
string |
no |
A representative's line: the relation_id of one of the representatives the summary lists, whose name and relationship it is signed under (signer_name is then ignored). One the list does not hold is 422 validation_failed. |
MeNotification
-
body
string
-
dismissed_at
string
- When it was dismissed.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was sent.
-
read_at
string
- When it was read.
-
title
string, required
-
type
string, required
| Field |
Type |
Required |
Description |
| body |
string |
no |
|
| dismissed_at |
string |
no |
When it was dismissed. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was sent. |
| read_at |
string |
no |
When it was read. |
| title |
string |
yes |
|
| type |
string |
yes |
|
MeNotificationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeNotification, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeNotification |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MeNotificationsMarked
-
marked
integer, required
| Field |
Type |
Required |
Description |
| marked |
integer |
yes |
|
MePinChange
The caregiver's current PIN and the new one.
-
current_pin
string, required
- The PIN the caregiver signs in with now.
-
new_pin
string, required
- Six digits, not repeated or sequential.
| Field |
Type |
Required |
Description |
| current_pin |
string |
yes |
The PIN the caregiver signs in with now. |
| new_pin |
string |
yes |
Six digits, not repeated or sequential. |
MePushToken
-
platform
string, required
-
registered_at
string, required
- When this device's token was last registered.
| Field |
Type |
Required |
Description |
| platform |
string |
yes |
|
| registered_at |
string |
yes |
When this device's token was last registered. |
MePushTokenInput
-
platform
string, required
-
token
string, required
| Field |
Type |
Required |
Description |
| platform |
string |
yes |
|
| token |
string |
yes |
|
MeRefusedClock
-
assignment
string, required
- A clock-in or a clock-out.
-
captured_at
string, required
- When you clocked (UTC).
-
id
string, required
- The record's id.
-
reviewed_at
string
- When the office handled it (UTC); null until then.
-
service_date
string, required
- The visit's day of service.
-
visit_id
string, required
- The record's id.
-
visit_status
string, required
- The visit's status when it refused the clock.
| Field |
Type |
Required |
Description |
| assignment |
string |
yes |
A clock-in or a clock-out. |
| captured_at |
string |
yes |
When you clocked (UTC). |
| id |
string |
yes |
The record's id. |
| reviewed_at |
string |
no |
When the office handled it (UTC); null until then. |
| service_date |
string |
yes |
The visit's day of service. |
| visit_id |
string |
yes |
The record's id. |
| visit_status |
string |
yes |
The visit's status when it refused the clock. |
MeRefusedClockPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeRefusedClock, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeRefusedClock |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MeRepresentative
A person the office recorded as the client's representative or responsible party. Send relation_id as signer_relation_id to sign a representative's line as them.
-
name
string, required
- The person's name, or the organization's when it has no name.
-
relation_id
string, required
- The relation the office recorded.
-
relationship_label
string, required
- Their relationship to the client, as the office wrote it.
| Field |
Type |
Required |
Description |
| name |
string |
yes |
The person's name, or the organization's when it has no name. |
| relation_id |
string |
yes |
The relation the office recorded. |
| relationship_label |
string |
yes |
Their relationship to the client, as the office wrote it. |
MeSignature
-
captured_at
string, required
- When it was signed (UTC).
-
captured_by_caregiver_id
string
- The record's id.
-
id
string, required
- The record's id.
-
signature_type
string, required
- A drawn signature or initials.
-
signer_name
string, required
- The signer's name as given.
-
signer_type
string, required
- Who signed.
-
updated_at
string
- When the server stored this capture (UTC), a replacement's included.
-
visit_id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| captured_at |
string |
yes |
When it was signed (UTC). |
| captured_by_caregiver_id |
string |
no |
The record's id. |
| id |
string |
yes |
The record's id. |
| signature_type |
string |
yes |
A drawn signature or initials. |
| signer_name |
string |
yes |
The signer's name as given. |
| signer_type |
string |
yes |
Who signed. |
| updated_at |
string |
no |
When the server stored this capture (UTC), a replacement's included. |
| visit_id |
string |
yes |
The record's id. |
MeSignatureInput
-
captured_at
number
- When it was signed, in Unix milliseconds; omit for now.
-
image
string, required
- The signature as a base64 PNG of at most 51200 bytes once decoded.
-
replace
boolean
- true replaces the visit's signature from this signer; otherwise a second one answers 200 with the one it holds.
-
signature_type
string, required
-
signer_name
string, required
- The signer's name.
-
signer_type
string, required
| Field |
Type |
Required |
Description |
| captured_at |
number |
no |
When it was signed, in Unix milliseconds; omit for now. |
| image |
string |
yes |
The signature as a base64 PNG of at most 51200 bytes once decoded. |
| replace |
boolean |
no |
true replaces the visit's signature from this signer; otherwise a second one answers 200 with the one it holds. |
| signature_type |
string |
yes |
|
| signer_name |
string |
yes |
The signer's name. |
| signer_type |
string |
yes |
|
MeVisit
-
actual_end_time
string
- When you clocked out (UTC).
-
actual_start_time
string
- When you clocked in (UTC).
-
client
object, required
- Who the visit serves and where, for the caregiver on the way there.
-
client.address
string
-
client.address_line_2
string
-
client.city
string
-
client.first_name
string
-
client.geofence_radius_meters
integer
- How close to the home a clock-in counts as at the home.
-
client.id
string
- The record's id.
-
client.last_name
string
-
client.latitude
string
- The home's latitude, for the geofence.
-
client.longitude
string
- The home's longitude, for the geofence.
-
client.state
string
-
client.zip
string
-
deleted_at
string
- When the agency removed the visit (UTC); only read by id.
-
id
string, required
- The record's id.
-
procedure_code
string
- The service's HCPCS code.
-
scheduled_end_time
string
- Scheduled end (UTC).
-
scheduled_start_time
string
- Scheduled start (UTC).
-
service_date
string, required
- The day of service.
-
status
string, required
- Where the visit is in its lifecycle.
-
visit_type
string
| Field |
Type |
Required |
Description |
| actual_end_time |
string |
no |
When you clocked out (UTC). |
| actual_start_time |
string |
no |
When you clocked in (UTC). |
| client |
object |
yes |
Who the visit serves and where, for the caregiver on the way there. |
| client.address |
string |
no |
|
| client.address_line_2 |
string |
no |
|
| client.city |
string |
no |
|
| client.first_name |
string |
no |
|
| client.geofence_radius_meters |
integer |
no |
How close to the home a clock-in counts as at the home. |
| client.id |
string |
no |
The record's id. |
| client.last_name |
string |
no |
|
| client.latitude |
string |
no |
The home's latitude, for the geofence. |
| client.longitude |
string |
no |
The home's longitude, for the geofence. |
| client.state |
string |
no |
|
| client.zip |
string |
no |
|
| deleted_at |
string |
no |
When the agency removed the visit (UTC); only read by id. |
| id |
string |
yes |
The record's id. |
| procedure_code |
string |
no |
The service's HCPCS code. |
| scheduled_end_time |
string |
no |
Scheduled end (UTC). |
| scheduled_start_time |
string |
no |
Scheduled start (UTC). |
| service_date |
string |
yes |
The day of service. |
| status |
string |
yes |
Where the visit is in its lifecycle. |
| visit_type |
string |
no |
|
MeVisitCall
A clock-in or clock-out recorded on the visit.
-
call_datetime
string
- When the call was made (UTC).
-
call_type
string
- How the call was made.
-
id
string
- The record's id.
-
location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
| Field |
Type |
Required |
Description |
| call_datetime |
string |
no |
When the call was made (UTC). |
| call_type |
string |
no |
How the call was made. |
| id |
string |
no |
The record's id. |
| location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
MeVisitClient
Who the visit serves and where, for the caregiver on the way there.
-
address
string
-
address_line_2
string
-
city
string
-
first_name
string
-
geofence_radius_meters
integer
- How close to the home a clock-in counts as at the home.
-
id
string
- The record's id.
-
last_name
string
-
latitude
string
- The home's latitude, for the geofence.
-
longitude
string
- The home's longitude, for the geofence.
-
state
string
-
zip
string
| Field |
Type |
Required |
Description |
| address |
string |
no |
|
| address_line_2 |
string |
no |
|
| city |
string |
no |
|
| first_name |
string |
no |
|
| geofence_radius_meters |
integer |
no |
How close to the home a clock-in counts as at the home. |
| id |
string |
no |
The record's id. |
| last_name |
string |
no |
|
| latitude |
string |
no |
The home's latitude, for the geofence. |
| longitude |
string |
no |
The home's longitude, for the geofence. |
| state |
string |
no |
|
| zip |
string |
no |
|
MeVisitDetail
-
actual_end_time
string
- When you clocked out (UTC).
-
actual_start_time
string
- When you clocked in (UTC).
-
client
object, required
- Who the visit serves and where, for the caregiver on the way there.
-
client.address
string
-
client.address_line_2
string
-
client.city
string
-
client.first_name
string
-
client.geofence_radius_meters
integer
- How close to the home a clock-in counts as at the home.
-
client.id
string
- The record's id.
-
client.last_name
string
-
client.latitude
string
- The home's latitude, for the geofence.
-
client.longitude
string
- The home's longitude, for the geofence.
-
client.state
string
-
client.zip
string
-
deleted_at
string
- When the agency removed the visit (UTC); only read by id.
-
id
string, required
- The record's id.
-
procedure_code
string
- The service's HCPCS code.
-
scheduled_end_time
string
- Scheduled end (UTC).
-
scheduled_start_time
string
- Scheduled start (UTC).
-
service_date
string, required
- The day of service.
-
status
string, required
- Where the visit is in its lifecycle.
-
time_in
object, required
- The clock-in, once recorded.
-
time_in.call_datetime
string
- When the call was made (UTC).
-
time_in.call_type
string
- How the call was made.
-
time_in.id
string
- The record's id.
-
time_in.location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
-
time_out
object, required
- The clock-out, once recorded.
-
time_out.call_datetime
string
- When the call was made (UTC).
-
time_out.call_type
string
- How the call was made.
-
time_out.id
string
- The record's id.
-
time_out.location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
-
visit_type
string
| Field |
Type |
Required |
Description |
| actual_end_time |
string |
no |
When you clocked out (UTC). |
| actual_start_time |
string |
no |
When you clocked in (UTC). |
| client |
object |
yes |
Who the visit serves and where, for the caregiver on the way there. |
| client.address |
string |
no |
|
| client.address_line_2 |
string |
no |
|
| client.city |
string |
no |
|
| client.first_name |
string |
no |
|
| client.geofence_radius_meters |
integer |
no |
How close to the home a clock-in counts as at the home. |
| client.id |
string |
no |
The record's id. |
| client.last_name |
string |
no |
|
| client.latitude |
string |
no |
The home's latitude, for the geofence. |
| client.longitude |
string |
no |
The home's longitude, for the geofence. |
| client.state |
string |
no |
|
| client.zip |
string |
no |
|
| deleted_at |
string |
no |
When the agency removed the visit (UTC); only read by id. |
| id |
string |
yes |
The record's id. |
| procedure_code |
string |
no |
The service's HCPCS code. |
| scheduled_end_time |
string |
no |
Scheduled end (UTC). |
| scheduled_start_time |
string |
no |
Scheduled start (UTC). |
| service_date |
string |
yes |
The day of service. |
| status |
string |
yes |
Where the visit is in its lifecycle. |
| time_in |
object |
yes |
The clock-in, once recorded. |
| time_in.call_datetime |
string |
no |
When the call was made (UTC). |
| time_in.call_type |
string |
no |
How the call was made. |
| time_in.id |
string |
no |
The record's id. |
| time_in.location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
| time_out |
object |
yes |
The clock-out, once recorded. |
| time_out.call_datetime |
string |
no |
When the call was made (UTC). |
| time_out.call_type |
string |
no |
How the call was made. |
| time_out.id |
string |
no |
The record's id. |
| time_out.location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
| visit_type |
string |
no |
|
MeVisitPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeVisit, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeVisit |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Meeting minutesPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MeetingMinutes, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MeetingMinutes |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MeetingMinutes
One meeting's minutes. A draft until finalized; finalized minutes are not changed.
-
adjourned_by
string
- Who adjourned it.
-
adjourned_time
string
- When it was adjourned, HH:MM:SS.
-
attendees
array of object
- Who was invited.
-
attendees[].name
string
- Who attended.
-
attendees[].present
string
- "true" when they were present.
-
attendees[].title
string
- Their title.
-
called_by
string
- Who called it.
-
end_time
string
- When it ended, HH:MM:SS.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the minutes were created.
-
location
string
- Where it was held.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
meeting_date
string, required
- The day it was held.
-
meeting_type
string, required
- The kind of meeting.
-
new_business_topics
array of object
- New business, one entry a topic.
-
new_business_topics[].action_items
string
-
new_business_topics[].deadline
string
-
new_business_topics[].discussion
string
-
new_business_topics[].responsible
string
-
new_business_topics[].topic
string
-
next_meeting_date
string
- The next meeting's day.
-
next_meeting_location
string
- Where the next meeting is.
-
next_meeting_time
string
- The next meeting's time, HH:MM:SS.
-
notes
string
- Anything else.
-
old_business
string
- Old business.
-
previous_minutes_approved
boolean
- Whether the previous meeting's minutes were approved.
-
previous_minutes_notes
string
- Notes on the previous minutes.
-
start_time
string
- When it started, HH:MM:SS.
-
status
string, required
- draft, or finalized.
-
updated_at
string
- When they last changed.
| Field |
Type |
Required |
Description |
| adjourned_by |
string |
no |
Who adjourned it. |
| adjourned_time |
string |
no |
When it was adjourned, HH:MM:SS. |
| attendees |
array of object |
no |
Who was invited. |
| attendees[].name |
string |
no |
Who attended. |
| attendees[].present |
string |
no |
"true" when they were present. |
| attendees[].title |
string |
no |
Their title. |
| called_by |
string |
no |
Who called it. |
| end_time |
string |
no |
When it ended, HH:MM:SS. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the minutes were created. |
| location |
string |
no |
Where it was held. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| meeting_date |
string |
yes |
The day it was held. |
| meeting_type |
string |
yes |
The kind of meeting. |
| new_business_topics |
array of object |
no |
New business, one entry a topic. |
| new_business_topics[].action_items |
string |
no |
|
| new_business_topics[].deadline |
string |
no |
|
| new_business_topics[].discussion |
string |
no |
|
| new_business_topics[].responsible |
string |
no |
|
| new_business_topics[].topic |
string |
no |
|
| next_meeting_date |
string |
no |
The next meeting's day. |
| next_meeting_location |
string |
no |
Where the next meeting is. |
| next_meeting_time |
string |
no |
The next meeting's time, HH:MM:SS. |
| notes |
string |
no |
Anything else. |
| old_business |
string |
no |
Old business. |
| previous_minutes_approved |
boolean |
no |
Whether the previous meeting's minutes were approved. |
| previous_minutes_notes |
string |
no |
Notes on the previous minutes. |
| start_time |
string |
no |
When it started, HH:MM:SS. |
| status |
string |
yes |
draft, or finalized. |
| updated_at |
string |
no |
When they last changed. |
MeetingMinutesInput
Meeting minutes' fields; meeting_type and meeting_date are required on a create. A PATCH carries lock_version.
-
adjourned_by
string
- Who adjourned it.
-
adjourned_time
string
- When it was adjourned, HH:MM:SS.
-
attendees
array of object
- Who was invited.
-
attendees[].name
string
- Who attended.
-
attendees[].present
string
- "true" when they were present.
-
attendees[].title
string
- Their title.
-
called_by
string
- Who called it.
-
end_time
string
- When it ended, HH:MM:SS.
-
location
string
- Where it was held.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
meeting_date
string
- The day it was held.
-
meeting_type
string
- The kind of meeting.
-
new_business_topics
array of object
- New business, one entry a topic.
-
new_business_topics[].action_items
string
-
new_business_topics[].deadline
string
-
new_business_topics[].discussion
string
-
new_business_topics[].responsible
string
-
new_business_topics[].topic
string
-
next_meeting_date
string
- The next meeting's day.
-
next_meeting_location
string
- Where the next meeting is.
-
next_meeting_time
string
- The next meeting's time, HH:MM:SS.
-
notes
string
- Anything else.
-
old_business
string
- Old business.
-
previous_minutes_approved
boolean
- Whether the previous meeting's minutes were approved.
-
previous_minutes_notes
string
- Notes on the previous minutes.
-
start_time
string
- When it started, HH:MM:SS.
| Field |
Type |
Required |
Description |
| adjourned_by |
string |
no |
Who adjourned it. |
| adjourned_time |
string |
no |
When it was adjourned, HH:MM:SS. |
| attendees |
array of object |
no |
Who was invited. |
| attendees[].name |
string |
no |
Who attended. |
| attendees[].present |
string |
no |
"true" when they were present. |
| attendees[].title |
string |
no |
Their title. |
| called_by |
string |
no |
Who called it. |
| end_time |
string |
no |
When it ended, HH:MM:SS. |
| location |
string |
no |
Where it was held. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| meeting_date |
string |
no |
The day it was held. |
| meeting_type |
string |
no |
The kind of meeting. |
| new_business_topics |
array of object |
no |
New business, one entry a topic. |
| new_business_topics[].action_items |
string |
no |
|
| new_business_topics[].deadline |
string |
no |
|
| new_business_topics[].discussion |
string |
no |
|
| new_business_topics[].responsible |
string |
no |
|
| new_business_topics[].topic |
string |
no |
|
| next_meeting_date |
string |
no |
The next meeting's day. |
| next_meeting_location |
string |
no |
Where the next meeting is. |
| next_meeting_time |
string |
no |
The next meeting's time, HH:MM:SS. |
| notes |
string |
no |
Anything else. |
| old_business |
string |
no |
Old business. |
| previous_minutes_approved |
boolean |
no |
Whether the previous meeting's minutes were approved. |
| previous_minutes_notes |
string |
no |
Notes on the previous minutes. |
| start_time |
string |
no |
When it started, HH:MM:SS. |
MissingSigner
-
label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
roles
array of string, required
- The roles that would fill the line: any one of them.
| Field |
Type |
Required |
Description |
| label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
MonthlyClientReport
The monthly check-in with a client, one per Work Order month. Saved here with its answers, comments and how it was taken; the client signs in person.
-
client_id
string, required
- The client.
-
client_signed
boolean
- Whether the client's line is signed, on the device or on paper before.
-
comments
string
- Comments; null or blank clears them.
-
conducted_via
string
- How the check-in was taken.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the report was first saved.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
month
integer
- The report's month, 1 to 12.
-
questions
array of QuestionAnswer
- The report's questions.
-
record_state
string
- Where the report stands as a signed record: draft (it changes here), signed or amended (locked: corrected with an addendum, or voided and started again as a new draft), voided. signing_complete says whether every required line is signed.
-
signatures
array of object
- The live signatures, oldest first.
-
signatures[].method
string, required
- How it was signed.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When.
-
signatures[].signer_name
string, required
- Who signed.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signed_on_paper
boolean
- Whether the signed paper sheet is on file. A yes is recorded as a paper-on-file signature on the report's signature line (the client's in person, the office's by phone or video), so it can sign the report; read-only.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
updated_at
string
- When the report last changed.
-
work_order_id
string, required
- The Work Order month the report belongs to.
-
year
integer
- The report's year.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| client_signed |
boolean |
no |
Whether the client's line is signed, on the device or on paper before. |
| comments |
string |
no |
Comments; null or blank clears them. |
| conducted_via |
string |
no |
How the check-in was taken. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the report was first saved. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| month |
integer |
no |
The report's month, 1 to 12. |
| questions |
array of QuestionAnswer |
no |
The report's questions. |
| record_state |
string |
no |
Where the report stands as a signed record: draft (it changes here), signed or amended (locked: corrected with an addendum, or voided and started again as a new draft), voided. signing_complete says whether every required line is signed. |
| signatures |
array of object |
no |
The live signatures, oldest first. |
| signatures[].method |
string |
yes |
How it was signed. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When. |
| signatures[].signer_name |
string |
yes |
Who signed. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signed_on_paper |
boolean |
no |
Whether the signed paper sheet is on file. A yes is recorded as a paper-on-file signature on the report's signature line (the client's in person, the office's by phone or video), so it can sign the report; read-only. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| updated_at |
string |
no |
When the report last changed. |
| work_order_id |
string |
yes |
The Work Order month the report belongs to. |
| year |
integer |
no |
The report's year. |
MonthlyClientReportInput
What to save: answers maps a question key to yes or no (or true/false), a text or code, or a list of choices; comments; conducted_via. A save sends something to change. Saving again updates the same report.
-
answers
object
- Answers by question key, as the agency's monthly report lists its questions: yes or no (or true/false), a text or code, or a list of choices.
-
comments
string
- Comments; null or blank clears them.
-
conducted_via
string
- How the check-in was taken.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
Answers by question key, as the agency's monthly report lists its questions: yes or no (or true/false), a text or code, or a list of choices. |
| comments |
string |
no |
Comments; null or blank clears them. |
| conducted_via |
string |
no |
How the check-in was taken. |
MonthlyClientReportPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of MonthlyClientReport, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of MonthlyClientReport |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
MonthlyClientReportSignature
-
signer
string, required
- Whose line to sign: office, the staff member who conducted a phone or video check-in, signed as you. The client's line is drawn on the device in the app.
| Field |
Type |
Required |
Description |
| signer |
string |
yes |
Whose line to sign: office, the staff member who conducted a phone or video check-in, signed as you. The client's line is drawn on the device in the app. |
MonthlyFollowUp
A client's monthly follow-up: the contact the agency makes with each client once a month.
-
client_id
string, required
- The client it is for.
-
completed
boolean, required
- Whether it has been logged.
-
completed_at
string
- When it was logged.
-
contact_date
string
- The day of the contact.
-
contact_type
string
- How the client was reached.
-
due_date
string
- The day it is due.
-
id
string, required
- The record's id.
-
month
integer, required
- The month it is filed under (1-12).
-
notes
string
- What was discussed.
-
year
integer, required
- The year it is filed under.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client it is for. |
| completed |
boolean |
yes |
Whether it has been logged. |
| completed_at |
string |
no |
When it was logged. |
| contact_date |
string |
no |
The day of the contact. |
| contact_type |
string |
no |
How the client was reached. |
| due_date |
string |
no |
The day it is due. |
| id |
string |
yes |
The record's id. |
| month |
integer |
yes |
The month it is filed under (1-12). |
| notes |
string |
no |
What was discussed. |
| year |
integer |
yes |
The year it is filed under. |
MonthlyFollowUpLogInput
The contact that completes the follow-up, as the Log form takes it. contact_type and contact_date are required; the date cannot be in the future.
-
contact_date
string, required
- The day of the contact (YYYY-MM-DD).
-
contact_type
string, required
- How the client was reached.
-
notes
string
- Optional: what was discussed.
| Field |
Type |
Required |
Description |
| contact_date |
string |
yes |
The day of the contact (YYYY-MM-DD). |
| contact_type |
string |
yes |
How the client was reached. |
| notes |
string |
no |
Optional: what was discussed. |
MoveDirection
-
direction
string, required
- Which way to move it one place.
| Field |
Type |
Required |
Description |
| direction |
string |
yes |
Which way to move it one place. |
NextActionSnooze
-
client_id
string, required
- The client.
-
snoozed_until
string, required
- When it comes back.
-
suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| snoozed_until |
string |
yes |
When it comes back. |
| suggestion_id |
string |
yes |
The Next Actions suggestion. |
NextActionSnoozeCreate
-
days
integer
- Days to snooze it, 1 to 365. Leave it out for 7, as the page does.
-
suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| days |
integer |
no |
Days to snooze it, 1 to 365. Leave it out for 7, as the page does. |
| suggestion_id |
string |
yes |
The Next Actions suggestion. |
NextActionUnsnoozed
-
client_id
string, required
- The client.
-
suggestion_id
string, required
- The Next Actions suggestion.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| suggestion_id |
string |
yes |
The Next Actions suggestion. |
NoteAttachment
-
content_type
string, required
- Its type.
-
file_size
integer, required
- Its size in bytes.
-
filename
string, required
- The file's name.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was attached.
-
note_id
string, required
- The note.
-
note_kind
string, required
- The kind of note it is on.
-
scan_status
string, required
- The virus scan's verdict; only a clean file can be downloaded.
-
uploaded_by_id
string
- Who attached it.
| Field |
Type |
Required |
Description |
| content_type |
string |
yes |
Its type. |
| file_size |
integer |
yes |
Its size in bytes. |
| filename |
string |
yes |
The file's name. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was attached. |
| note_id |
string |
yes |
The note. |
| note_kind |
string |
yes |
The kind of note it is on. |
| scan_status |
string |
yes |
The virus scan's verdict; only a clean file can be downloaded. |
| uploaded_by_id |
string |
no |
Who attached it. |
NoteAttachmentList
-
data
array of object, required
-
data[].content_type
string, required
- Its type.
-
data[].file_size
integer, required
- Its size in bytes.
-
data[].filename
string, required
- The file's name.
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When it was attached.
-
data[].note_id
string, required
- The note.
-
data[].note_kind
string, required
- The kind of note it is on.
-
data[].scan_status
string, required
- The virus scan's verdict; only a clean file can be downloaded.
-
data[].uploaded_by_id
string
- Who attached it.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].content_type |
string |
yes |
Its type. |
| data[].file_size |
integer |
yes |
Its size in bytes. |
| data[].filename |
string |
yes |
The file's name. |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When it was attached. |
| data[].note_id |
string |
yes |
The note. |
| data[].note_kind |
string |
yes |
The kind of note it is on. |
| data[].scan_status |
string |
yes |
The virus scan's verdict; only a clean file can be downloaded. |
| data[].uploaded_by_id |
string |
no |
Who attached it. |
Notification
-
body
string
- Its text.
-
created_at
string
- When it was raised (UTC).
-
id
string, required
- The record's id.
-
priority
string
- How urgent it is.
-
read_at
string
- When it was read (UTC).
-
resolved_at
string
- When it was resolved (UTC).
-
source_id
string
- The record it is about.
-
source_type
string
- The kind of record it is about.
-
title
string, required
- Its headline.
-
type
string, required
- The kind of notification.
| Field |
Type |
Required |
Description |
| body |
string |
no |
Its text. |
| created_at |
string |
no |
When it was raised (UTC). |
| id |
string |
yes |
The record's id. |
| priority |
string |
no |
How urgent it is. |
| read_at |
string |
no |
When it was read (UTC). |
| resolved_at |
string |
no |
When it was resolved (UTC). |
| source_id |
string |
no |
The record it is about. |
| source_type |
string |
no |
The kind of record it is about. |
| title |
string |
yes |
Its headline. |
| type |
string |
yes |
The kind of notification. |
NotificationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].body
string
- Its text.
-
data[].created_at
string
- When it was raised (UTC).
-
data[].id
string, required
- The record's id.
-
data[].priority
string
- How urgent it is.
-
data[].read_at
string
- When it was read (UTC).
-
data[].resolved_at
string
- When it was resolved (UTC).
-
data[].source_id
string
- The record it is about.
-
data[].source_type
string
- The kind of record it is about.
-
data[].title
string, required
- Its headline.
-
data[].type
string, required
- The kind of notification.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].body |
string |
no |
Its text. |
| data[].created_at |
string |
no |
When it was raised (UTC). |
| data[].id |
string |
yes |
The record's id. |
| data[].priority |
string |
no |
How urgent it is. |
| data[].read_at |
string |
no |
When it was read (UTC). |
| data[].resolved_at |
string |
no |
When it was resolved (UTC). |
| data[].source_id |
string |
no |
The record it is about. |
| data[].source_type |
string |
no |
The kind of record it is about. |
| data[].title |
string |
yes |
Its headline. |
| data[].type |
string |
yes |
The kind of notification. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
NotificationResolve
-
notes
string
- Why it is resolved. Leave it out for none.
| Field |
Type |
Required |
Description |
| notes |
string |
no |
Why it is resolved. Leave it out for none. |
NotificationSettings
-
notify_on_277ca
boolean, required
- Whether the agency is emailed for this event.
-
notify_on_835
boolean, required
- Whether the agency is emailed for this event.
-
notify_on_999
boolean, required
- Whether the agency is emailed for this event.
-
notify_on_submission
boolean, required
- Whether the agency is emailed for this event.
-
notify_on_ta1
boolean, required
- Whether the agency is emailed for this event.
-
remittance_review_email
boolean, required
- Whether the agency is emailed for this event.
-
text_caregivers_before_expiry
boolean, required
- Whether each caregiver is texted a month, and again a week, before a dated credential of theirs expires.
| Field |
Type |
Required |
Description |
| notify_on_277ca |
boolean |
yes |
Whether the agency is emailed for this event. |
| notify_on_835 |
boolean |
yes |
Whether the agency is emailed for this event. |
| notify_on_999 |
boolean |
yes |
Whether the agency is emailed for this event. |
| notify_on_submission |
boolean |
yes |
Whether the agency is emailed for this event. |
| notify_on_ta1 |
boolean |
yes |
Whether the agency is emailed for this event. |
| remittance_review_email |
boolean |
yes |
Whether the agency is emailed for this event. |
| text_caregivers_before_expiry |
boolean |
yes |
Whether each caregiver is texted a month, and again a week, before a dated credential of theirs expires. |
NotificationSettingsUpdate
-
notify_on_277ca
boolean
- Whether the agency is emailed for this event.
-
notify_on_835
boolean
- Whether the agency is emailed for this event.
-
notify_on_999
boolean
- Whether the agency is emailed for this event.
-
notify_on_submission
boolean
- Whether the agency is emailed for this event.
-
notify_on_ta1
boolean
- Whether the agency is emailed for this event.
-
remittance_review_email
boolean
- Whether the agency is emailed for this event.
-
text_caregivers_before_expiry
boolean
- Whether each caregiver is texted a month, and again a week, before a dated credential of theirs expires.
| Field |
Type |
Required |
Description |
| notify_on_277ca |
boolean |
no |
Whether the agency is emailed for this event. |
| notify_on_835 |
boolean |
no |
Whether the agency is emailed for this event. |
| notify_on_999 |
boolean |
no |
Whether the agency is emailed for this event. |
| notify_on_submission |
boolean |
no |
Whether the agency is emailed for this event. |
| notify_on_ta1 |
boolean |
no |
Whether the agency is emailed for this event. |
| remittance_review_email |
boolean |
no |
Whether the agency is emailed for this event. |
| text_caregivers_before_expiry |
boolean |
no |
Whether each caregiver is texted a month, and again a week, before a dated credential of theirs expires. |
NotificationsMarked
-
marked
integer, required
- Notifications marked read.
| Field |
Type |
Required |
Description |
| marked |
integer |
yes |
Notifications marked read. |
OIG attestationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of OigAttestation, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of OigAttestation |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OigAttestation
One month's OIG exclusion attestation. It is never changed once recorded.
-
administrator_name
string
- Who attests.
-
all_clear
boolean
- Whether nobody matched.
-
company_document_id
string
- The attached report, a company document; null for none.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
leie_file_date
string
- The list file's date.
-
leie_source
string
- Where the exclusion list came from.
-
recorded_by
string
- The user who recorded it.
-
report_state
string
- The attached report's state: kept in Company Documents, virus scan pending, failed the virus scan, or removed after failing it; null for none.
-
review_month
string, required
- The month screened, as its first day.
-
review_names
string
- The names to review; required when all_clear is false.
-
screen_date
string
- The day the screen was run; not in the future.
-
screened_count
integer
- How many people were screened.
-
signed_on
string
- The day they signed; not in the future.
| Field |
Type |
Required |
Description |
| administrator_name |
string |
no |
Who attests. |
| all_clear |
boolean |
no |
Whether nobody matched. |
| company_document_id |
string |
no |
The attached report, a company document; null for none. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| leie_file_date |
string |
no |
The list file's date. |
| leie_source |
string |
no |
Where the exclusion list came from. |
| recorded_by |
string |
no |
The user who recorded it. |
| report_state |
string |
no |
The attached report's state: kept in Company Documents, virus scan pending, failed the virus scan, or removed after failing it; null for none. |
| review_month |
string |
yes |
The month screened, as its first day. |
| review_names |
string |
no |
The names to review; required when all_clear is false. |
| screen_date |
string |
no |
The day the screen was run; not in the future. |
| screened_count |
integer |
no |
How many people were screened. |
| signed_on |
string |
no |
The day they signed; not in the future. |
OigAttestationInput
An attestation's fields. attested must be true. Attach the report by uploading it as a company document first and sending its id.
-
administrator_name
string
- Who attests.
-
all_clear
boolean
- Whether nobody matched.
-
attested
boolean
- Must be true: the administrator attests the screen was run.
-
company_document_id
string
- The report, a company document of this agency.
-
leie_file_date
string
- The list file's date.
-
leie_source
string
- Where the exclusion list came from.
-
review_month
string
- The month screened, as its first day.
-
review_names
string
- The names to review; required when all_clear is false.
-
screen_date
string
- The day the screen was run; not in the future.
-
screened_count
integer
- How many people were screened.
-
signed_on
string
- The day they signed; not in the future.
| Field |
Type |
Required |
Description |
| administrator_name |
string |
no |
Who attests. |
| all_clear |
boolean |
no |
Whether nobody matched. |
| attested |
boolean |
no |
Must be true: the administrator attests the screen was run. |
| company_document_id |
string |
no |
The report, a company document of this agency. |
| leie_file_date |
string |
no |
The list file's date. |
| leie_source |
string |
no |
Where the exclusion list came from. |
| review_month |
string |
no |
The month screened, as its first day. |
| review_names |
string |
no |
The names to review; required when all_clear is false. |
| screen_date |
string |
no |
The day the screen was run; not in the future. |
| screened_count |
integer |
no |
How many people were screened. |
| signed_on |
string |
no |
The day they signed; not in the future. |
OigCheck
One caregiver's latest OIG exclusion check: whether the monthly screen covers them, when they were last checked, the result and status, and whether a person or the automatic screen recorded it.
-
employment_status
string
- The caregiver's status.
-
id
string, required
- The record's id.
-
in_screen
boolean
- Whether the monthly screen covers them.
-
last_checked_on
string
- When last checked.
-
name
string
- The caregiver's name.
-
recorded_by
string
- automatic screen or a person.
-
result
string
- clear, review or excluded.
-
status
string
- current, overdue, missing, review, excluded or not_in_screen.
| Field |
Type |
Required |
Description |
| employment_status |
string |
no |
The caregiver's status. |
| id |
string |
yes |
The record's id. |
| in_screen |
boolean |
no |
Whether the monthly screen covers them. |
| last_checked_on |
string |
no |
When last checked. |
| name |
string |
no |
The caregiver's name. |
| recorded_by |
string |
no |
automatic screen or a person. |
| result |
string |
no |
clear, review or excluded. |
| status |
string |
no |
current, overdue, missing, review, excluded or not_in_screen. |
OigCheckPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of OigCheck, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of OigCheck |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OigExclusionBulk
-
checked_on
string, required
- The day the LEIE was checked, YYYY-MM-DD.
| Field |
Type |
Required |
Description |
| checked_on |
string |
yes |
The day the LEIE was checked, YYYY-MM-DD. |
OigExclusionCheck
-
caregiver_id
string, required
- The caregiver.
-
checked_by
string
- Who recorded it.
-
checked_on
string, required
- The day the LEIE was checked.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
notes
string
- Notes.
-
result
string, required
-
source
string
- Recorded by a person or by a screen run.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| checked_by |
string |
no |
Who recorded it. |
| checked_on |
string |
yes |
The day the LEIE was checked. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| notes |
string |
no |
Notes. |
| result |
string |
yes |
|
| source |
string |
no |
Recorded by a person or by a screen run. |
OigExclusionCheckCreate
-
checked_on
string, required
- The day the LEIE was checked, YYYY-MM-DD; not in the future, not over a year ago.
-
notes
string
- Notes, e.g. how a match was reconciled.
-
result
string, required
- The result.
| Field |
Type |
Required |
Description |
| checked_on |
string |
yes |
The day the LEIE was checked, YYYY-MM-DD; not in the future, not over a year ago. |
| notes |
string |
no |
Notes, e.g. how a match was reconciled. |
| result |
string |
yes |
The result. |
OigExclusionCheckPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].caregiver_id
string, required
- The caregiver.
-
data[].checked_by
string
- Who recorded it.
-
data[].checked_on
string, required
- The day the LEIE was checked.
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When it was recorded.
-
data[].notes
string
- Notes.
-
data[].result
string, required
-
data[].source
string
- Recorded by a person or by a screen run.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].caregiver_id |
string |
yes |
The caregiver. |
| data[].checked_by |
string |
no |
Who recorded it. |
| data[].checked_on |
string |
yes |
The day the LEIE was checked. |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When it was recorded. |
| data[].notes |
string |
no |
Notes. |
| data[].result |
string |
yes |
|
| data[].source |
string |
no |
Recorded by a person or by a screen run. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OigScreen
One OIG exclusion screen: screen date, LEIE file date, how many were screened, how many names it raised to review, how many of those are still open (each counted once, on the newest screen that raised it), and the printable record the Administrator signs.
-
all_clear
boolean
- Whether it raised nothing.
-
id
string, required
- The record's id.
-
kind
string
- monthly, new_hire or single.
-
leie_file_date
string
- The LEIE file it screened against.
-
record_url
string
- The printable record.
-
screen_date
string
- When the screen ran.
-
screened
integer
- How many were screened.
-
still_to_review
integer
- How many of its reviews are still open.
-
to_review
integer
- How many names it raised to review.
| Field |
Type |
Required |
Description |
| all_clear |
boolean |
no |
Whether it raised nothing. |
| id |
string |
yes |
The record's id. |
| kind |
string |
no |
monthly, new_hire or single. |
| leie_file_date |
string |
no |
The LEIE file it screened against. |
| record_url |
string |
no |
The printable record. |
| screen_date |
string |
no |
When the screen ran. |
| screened |
integer |
no |
How many were screened. |
| still_to_review |
integer |
no |
How many of its reviews are still open. |
| to_review |
integer |
no |
How many names it raised to review. |
OigScreenPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of OigScreen, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of OigScreen |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OigScreenQueued
A roster screen request: queued, or already_queued when a screen was already waiting, running or retrying. The screen's row exists once the worker starts; read it from GET /api/v1/oig-screens.
-
status
string, required
- What became of the request.
| Field |
Type |
Required |
Description |
| status |
string |
yes |
What became of the request. |
OpenShift
-
care_type
string
-
client
object
- The client, by name only: never the address or point.
-
client.first_name
string
-
client.id
string
- The record's id.
-
client.last_name
string
-
client_gender
string
-
cross_streets
string
-
date_mode
string
-
end_time
string
- HH:MM.
-
hours
string
- A one-time shift's hours.
-
id
string
- The record's id.
-
inserted_at
string
- When it was posted.
-
kind
string
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
note
string
-
ongoing_times
object
- An ongoing shift's Shift Plan times on starts_on, and the ISO weekdays (1 Monday .. 7 Sunday) its slot runs on; null for a one-time shift.
-
ongoing_times.end
string
- HH:MM.
-
ongoing_times.ends_next_day
boolean
- The end is past midnight.
-
ongoing_times.hours
string
- The hours that day.
-
ongoing_times.run_days
array of integer
-
ongoing_times.start
string
- HH:MM.
-
rate_cents
integer
- The hourly rate, in cents.
-
service_area
object
-
service_area.id
string
- The record's id.
-
service_area.name
string
-
shift_id
string
- An ongoing shift's slot.
-
start_time
string
- HH:MM.
-
starts_on
string
- The date for exact; the window's last day for this_week, next_week and within_2_weeks; null for tbd.
-
status
string
-
time_mode
string
-
zip
string
| Field |
Type |
Required |
Description |
| care_type |
string |
no |
|
| client |
object |
no |
The client, by name only: never the address or point. |
| client.first_name |
string |
no |
|
| client.id |
string |
no |
The record's id. |
| client.last_name |
string |
no |
|
| client_gender |
string |
no |
|
| cross_streets |
string |
no |
|
| date_mode |
string |
no |
|
| end_time |
string |
no |
HH:MM. |
| hours |
string |
no |
A one-time shift's hours. |
| id |
string |
no |
The record's id. |
| inserted_at |
string |
no |
When it was posted. |
| kind |
string |
no |
|
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| note |
string |
no |
|
| ongoing_times |
object |
no |
An ongoing shift's Shift Plan times on starts_on, and the ISO weekdays (1 Monday .. 7 Sunday) its slot runs on; null for a one-time shift. |
| ongoing_times.end |
string |
no |
HH:MM. |
| ongoing_times.ends_next_day |
boolean |
no |
The end is past midnight. |
| ongoing_times.hours |
string |
no |
The hours that day. |
| ongoing_times.run_days |
array of integer |
no |
|
| ongoing_times.start |
string |
no |
HH:MM. |
| rate_cents |
integer |
no |
The hourly rate, in cents. |
| service_area |
object |
no |
|
| service_area.id |
string |
no |
The record's id. |
| service_area.name |
string |
no |
|
| shift_id |
string |
no |
An ongoing shift's slot. |
| start_time |
string |
no |
HH:MM. |
| starts_on |
string |
no |
The date for exact; the window's last day for this_week, next_week and within_2_weeks; null for tbd. |
| status |
string |
no |
|
| time_mode |
string |
no |
|
| zip |
string |
no |
|
OpenShiftAssign
-
caregiver_id
string, required
- The caregiver to assign.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver to assign. |
OpenShiftCreate
-
acknowledged
array of string
- The fingerprints of client_info_found refusals the sender confirmed are not client information.
-
care_type
string, required
- The care the shift gives.
-
client_gender
string, required
- The client's gender, shown to responders.
-
client_id
string, required
- The client the shift is for.
-
cross_streets
string, required
- Two nearby major streets, as 'S Chambers Rd & E Hampden Ave'; never a house number.
-
date_mode
string, required
- exact needs starts_on; this_week, next_week and within_2_weeks are windows; tbd has no date yet.
-
end_time
string
- HH:MM, one-time exact only; earlier than start_time for an overnight shift.
-
hours
string
- One-time only, when time_mode is not exact: 0.5 to 24, in halves.
-
kind
string, required
- one_time for a single shift; ongoing to fill a Shift Plan slot, whose days and times are the Shift Plan's.
-
note
string
- Up to 500 characters for responders. Checked for client information: a match is refused unless acknowledged names its fingerprint.
-
rate_cents
integer, required
- The hourly rate shown to responders, in cents.
-
service_area_id
string, required
- The agency area the shift is shown at.
-
shift_id
string
- Ongoing only: the Shift Plan slot the shift fills.
-
start_time
string
- HH:MM, one-time exact only.
-
starts_on
string
- The date, for date_mode exact; ignored for a window.
-
time_mode
string
- One-time only: exact needs start_time and end_time; am, midday, pm and flexible need hours.
-
zip
string
- The client's 5-digit ZIP code, shown to responders.
| Field |
Type |
Required |
Description |
| acknowledged |
array of string |
no |
The fingerprints of client_info_found refusals the sender confirmed are not client information. |
| care_type |
string |
yes |
The care the shift gives. |
| client_gender |
string |
yes |
The client's gender, shown to responders. |
| client_id |
string |
yes |
The client the shift is for. |
| cross_streets |
string |
yes |
Two nearby major streets, as 'S Chambers Rd & E Hampden Ave'; never a house number. |
| date_mode |
string |
yes |
exact needs starts_on; this_week, next_week and within_2_weeks are windows; tbd has no date yet. |
| end_time |
string |
no |
HH:MM, one-time exact only; earlier than start_time for an overnight shift. |
| hours |
string |
no |
One-time only, when time_mode is not exact: 0.5 to 24, in halves. |
| kind |
string |
yes |
one_time for a single shift; ongoing to fill a Shift Plan slot, whose days and times are the Shift Plan's. |
| note |
string |
no |
Up to 500 characters for responders. Checked for client information: a match is refused unless acknowledged names its fingerprint. |
| rate_cents |
integer |
yes |
The hourly rate shown to responders, in cents. |
| service_area_id |
string |
yes |
The agency area the shift is shown at. |
| shift_id |
string |
no |
Ongoing only: the Shift Plan slot the shift fills. |
| start_time |
string |
no |
HH:MM, one-time exact only. |
| starts_on |
string |
no |
The date, for date_mode exact; ignored for a window. |
| time_mode |
string |
no |
One-time only: exact needs start_time and end_time; am, midday, pm and flexible need hours. |
| zip |
string |
no |
The client's 5-digit ZIP code, shown to responders. |
OpenShiftCrossStreets
-
client_id
string, required
- The client.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
OpenShiftDashboard
-
counts
object
- No section: the four counts.
-
coverage
array of object
- No section: one row per area holding an open shift.
-
rows
array of object
-
section
string
-
total
integer
| Field |
Type |
Required |
Description |
| counts |
object |
no |
No section: the four counts. |
| coverage |
array of object |
no |
No section: one row per area holding an open shift. |
| rows |
array of object |
no |
|
| section |
string |
no |
|
| total |
integer |
no |
|
OpenShiftPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].care_type
string
-
data[].client
object
- The client, by name only: never the address or point.
-
data[].client.first_name
string
-
data[].client.id
string
- The record's id.
-
data[].client.last_name
string
-
data[].client_gender
string
-
data[].cross_streets
string
-
data[].date_mode
string
-
data[].end_time
string
- HH:MM.
-
data[].hours
string
- A one-time shift's hours.
-
data[].id
string
- The record's id.
-
data[].inserted_at
string
- When it was posted.
-
data[].kind
string
-
data[].lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
data[].note
string
-
data[].ongoing_times
object
- An ongoing shift's Shift Plan times on starts_on, and the ISO weekdays (1 Monday .. 7 Sunday) its slot runs on; null for a one-time shift.
-
data[].ongoing_times.end
string
- HH:MM.
-
data[].ongoing_times.ends_next_day
boolean
- The end is past midnight.
-
data[].ongoing_times.hours
string
- The hours that day.
-
data[].ongoing_times.run_days
array of integer
-
data[].ongoing_times.start
string
- HH:MM.
-
data[].rate_cents
integer
- The hourly rate, in cents.
-
data[].service_area
object
-
data[].service_area.id
string
- The record's id.
-
data[].service_area.name
string
-
data[].shift_id
string
- An ongoing shift's slot.
-
data[].start_time
string
- HH:MM.
-
data[].starts_on
string
- The date for exact; the window's last day for this_week, next_week and within_2_weeks; null for tbd.
-
data[].status
string
-
data[].time_mode
string
-
data[].zip
string
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].care_type |
string |
no |
|
| data[].client |
object |
no |
The client, by name only: never the address or point. |
| data[].client.first_name |
string |
no |
|
| data[].client.id |
string |
no |
The record's id. |
| data[].client.last_name |
string |
no |
|
| data[].client_gender |
string |
no |
|
| data[].cross_streets |
string |
no |
|
| data[].date_mode |
string |
no |
|
| data[].end_time |
string |
no |
HH:MM. |
| data[].hours |
string |
no |
A one-time shift's hours. |
| data[].id |
string |
no |
The record's id. |
| data[].inserted_at |
string |
no |
When it was posted. |
| data[].kind |
string |
no |
|
| data[].lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| data[].note |
string |
no |
|
| data[].ongoing_times |
object |
no |
An ongoing shift's Shift Plan times on starts_on, and the ISO weekdays (1 Monday .. 7 Sunday) its slot runs on; null for a one-time shift. |
| data[].ongoing_times.end |
string |
no |
HH:MM. |
| data[].ongoing_times.ends_next_day |
boolean |
no |
The end is past midnight. |
| data[].ongoing_times.hours |
string |
no |
The hours that day. |
| data[].ongoing_times.run_days |
array of integer |
no |
|
| data[].ongoing_times.start |
string |
no |
HH:MM. |
| data[].rate_cents |
integer |
no |
The hourly rate, in cents. |
| data[].service_area |
object |
no |
|
| data[].service_area.id |
string |
no |
The record's id. |
| data[].service_area.name |
string |
no |
|
| data[].shift_id |
string |
no |
An ongoing shift's slot. |
| data[].start_time |
string |
no |
HH:MM. |
| data[].starts_on |
string |
no |
The date for exact; the window's last day for this_week, next_week and within_2_weeks; null for tbd. |
| data[].status |
string |
no |
|
| data[].time_mode |
string |
no |
|
| data[].zip |
string |
no |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OpenShiftResponse
One live response to an open shift (a withdrawn one is not listed).
-
active
boolean
- The caregiver is active.
-
caregiver_id
string
- The caregiver; null for a candidate.
-
completed
integer
- Open shifts this caregiver has completed.
-
home_area
object
- The caregiver's home service area. Present only for a holder of open_shifts.administer; null when none is set.
-
home_area.id
string
- The record's id.
-
home_area.name
string
-
id
string
- The record's id.
-
miles
integer
- Whole miles from the caregiver's home area to the shift's service area; null when either has no known point.
-
name
string
- Last, First.
-
open_shift_id
string
- The record's id.
-
phone
string
-
responded_at
string
- When they responded.
-
role
string
| Field |
Type |
Required |
Description |
| active |
boolean |
no |
The caregiver is active. |
| caregiver_id |
string |
no |
The caregiver; null for a candidate. |
| completed |
integer |
no |
Open shifts this caregiver has completed. |
| home_area |
object |
no |
The caregiver's home service area. Present only for a holder of open_shifts.administer; null when none is set. |
| home_area.id |
string |
no |
The record's id. |
| home_area.name |
string |
no |
|
| id |
string |
no |
The record's id. |
| miles |
integer |
no |
Whole miles from the caregiver's home area to the shift's service area; null when either has no known point. |
| name |
string |
no |
Last, First. |
| open_shift_id |
string |
no |
The record's id. |
| phone |
string |
no |
|
| responded_at |
string |
no |
When they responded. |
| role |
string |
no |
|
OpenShiftResponsePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].active
boolean
- The caregiver is active.
-
data[].caregiver_id
string
- The caregiver; null for a candidate.
-
data[].completed
integer
- Open shifts this caregiver has completed.
-
data[].home_area
object
- The caregiver's home service area. Present only for a holder of open_shifts.administer; null when none is set.
-
data[].home_area.id
string
- The record's id.
-
data[].home_area.name
string
-
data[].id
string
- The record's id.
-
data[].miles
integer
- Whole miles from the caregiver's home area to the shift's service area; null when either has no known point.
-
data[].name
string
- Last, First.
-
data[].open_shift_id
string
- The record's id.
-
data[].phone
string
-
data[].responded_at
string
- When they responded.
-
data[].role
string
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].active |
boolean |
no |
The caregiver is active. |
| data[].caregiver_id |
string |
no |
The caregiver; null for a candidate. |
| data[].completed |
integer |
no |
Open shifts this caregiver has completed. |
| data[].home_area |
object |
no |
The caregiver's home service area. Present only for a holder of open_shifts.administer; null when none is set. |
| data[].home_area.id |
string |
no |
The record's id. |
| data[].home_area.name |
string |
no |
|
| data[].id |
string |
no |
The record's id. |
| data[].miles |
integer |
no |
Whole miles from the caregiver's home area to the shift's service area; null when either has no known point. |
| data[].name |
string |
no |
Last, First. |
| data[].open_shift_id |
string |
no |
The record's id. |
| data[].phone |
string |
no |
|
| data[].responded_at |
string |
no |
When they responded. |
| data[].role |
string |
no |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
OpenShiftSettings
The agency's open shifts rules. Sending the object sets only the keys sent; changing it needs agency_settings.manage, and a value out of range answers 422 validation_failed naming open_shifts.<field>.
-
alert_withdrawn_on_change
boolean
- A withdrawn responder is also told when a shift's details change.
-
api_may_assign_non_responder
boolean
- REST and MCP may assign an active caregiver who did not respond.
-
assignee_sees_client_details
boolean
- The assignee sees the client's name and address in the app.
-
complete_before_start
boolean
- A shift may be marked completed before its start.
-
cross_street_min_meters
integer
- The least distance from the client's door for the cross streets (0-1000).
-
default_radius_miles
integer
- The radius a new person starts with; one of radius_choices_miles.
-
enabled
boolean
- Open shifts are on for the agency; every open shifts job checks it.
-
free_cancel_hours
integer
- A caregiver may cancel free until this many hours before the start (0-168).
-
my_shifts_history_days
integer
- How far back My shifts' history reaches, in days (7-365).
-
not_responding_alerts
integer
- Alerts unanswered that mark a person as not responding (1-50).
-
not_responding_days
integer
- The days those unanswered alerts are counted over (1-365).
-
pause_days
integer
- How long a pause from open shifts lasts, in days (0-365).
-
pause_extends_running
boolean
- A new pause during a running one keeps the later end.
-
post_lead_hours
integer
- An exact-date shift starting sooner than this many hours warns when posted (0-168).
-
radius_choices_miles
array of integer
- The radii a person may pick, in miles: 1-8 distinct values, 1-200.
-
reminder_offsets_hours
array of integer
- Hours before the start the assignee is reminded: 1-3 distinct values, 1-168.
-
self_signup_enabled
boolean
- New people may sign up on the portal themselves.
-
strike_window_days
integer
- Only strikes this recent count, in days (1-365).
-
strikes_before_pause
integer
- Strikes that pause a person (1-10).
| Field |
Type |
Required |
Description |
| alert_withdrawn_on_change |
boolean |
no |
A withdrawn responder is also told when a shift's details change. |
| api_may_assign_non_responder |
boolean |
no |
REST and MCP may assign an active caregiver who did not respond. |
| assignee_sees_client_details |
boolean |
no |
The assignee sees the client's name and address in the app. |
| complete_before_start |
boolean |
no |
A shift may be marked completed before its start. |
| cross_street_min_meters |
integer |
no |
The least distance from the client's door for the cross streets (0-1000). |
| default_radius_miles |
integer |
no |
The radius a new person starts with; one of radius_choices_miles. |
| enabled |
boolean |
no |
Open shifts are on for the agency; every open shifts job checks it. |
| free_cancel_hours |
integer |
no |
A caregiver may cancel free until this many hours before the start (0-168). |
| my_shifts_history_days |
integer |
no |
How far back My shifts' history reaches, in days (7-365). |
| not_responding_alerts |
integer |
no |
Alerts unanswered that mark a person as not responding (1-50). |
| not_responding_days |
integer |
no |
The days those unanswered alerts are counted over (1-365). |
| pause_days |
integer |
no |
How long a pause from open shifts lasts, in days (0-365). |
| pause_extends_running |
boolean |
no |
A new pause during a running one keeps the later end. |
| post_lead_hours |
integer |
no |
An exact-date shift starting sooner than this many hours warns when posted (0-168). |
| radius_choices_miles |
array of integer |
no |
The radii a person may pick, in miles: 1-8 distinct values, 1-200. |
| reminder_offsets_hours |
array of integer |
no |
Hours before the start the assignee is reminded: 1-3 distinct values, 1-168. |
| self_signup_enabled |
boolean |
no |
New people may sign up on the portal themselves. |
| strike_window_days |
integer |
no |
Only strikes this recent count, in days (1-365). |
| strikes_before_pause |
integer |
no |
Strikes that pause a person (1-10). |
OpenShiftUpdate
-
acknowledged
array of string
- The fingerprints of client_info_found refusals the sender confirmed are not client information.
-
care_type
string
- The care the shift gives.
-
client_gender
string
- The client's gender, shown to responders.
-
cross_streets
string
- Two nearby major streets, as 'S Chambers Rd & E Hampden Ave'; never a house number.
-
date_mode
string
- exact needs starts_on; this_week, next_week and within_2_weeks are windows; tbd has no date yet.
-
end_time
string
- HH:MM, one-time exact only; earlier than start_time for an overnight shift.
-
hours
string
- One-time only, when time_mode is not exact: 0.5 to 24, in halves.
-
kind
string
- one_time for a single shift; ongoing to fill a Shift Plan slot, whose days and times are the Shift Plan's.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
note
string
- Up to 500 characters for responders. Checked for client information: a match is refused unless acknowledged names its fingerprint.
-
rate_cents
integer
- The hourly rate shown to responders, in cents.
-
service_area_id
string
- The agency area the shift is shown at.
-
shift_id
string
- Ongoing only: the Shift Plan slot the shift fills.
-
start_time
string
- HH:MM, one-time exact only.
-
starts_on
string
- The date, for date_mode exact; ignored for a window.
-
time_mode
string
- One-time only: exact needs start_time and end_time; am, midday, pm and flexible need hours.
-
zip
string
- The client's 5-digit ZIP code, shown to responders.
| Field |
Type |
Required |
Description |
| acknowledged |
array of string |
no |
The fingerprints of client_info_found refusals the sender confirmed are not client information. |
| care_type |
string |
no |
The care the shift gives. |
| client_gender |
string |
no |
The client's gender, shown to responders. |
| cross_streets |
string |
no |
Two nearby major streets, as 'S Chambers Rd & E Hampden Ave'; never a house number. |
| date_mode |
string |
no |
exact needs starts_on; this_week, next_week and within_2_weeks are windows; tbd has no date yet. |
| end_time |
string |
no |
HH:MM, one-time exact only; earlier than start_time for an overnight shift. |
| hours |
string |
no |
One-time only, when time_mode is not exact: 0.5 to 24, in halves. |
| kind |
string |
no |
one_time for a single shift; ongoing to fill a Shift Plan slot, whose days and times are the Shift Plan's. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| note |
string |
no |
Up to 500 characters for responders. Checked for client information: a match is refused unless acknowledged names its fingerprint. |
| rate_cents |
integer |
no |
The hourly rate shown to responders, in cents. |
| service_area_id |
string |
no |
The agency area the shift is shown at. |
| shift_id |
string |
no |
Ongoing only: the Shift Plan slot the shift fills. |
| start_time |
string |
no |
HH:MM, one-time exact only. |
| starts_on |
string |
no |
The date, for date_mode exact; ignored for a window. |
| time_mode |
string |
no |
One-time only: exact needs start_time and end_time; am, midday, pm and flexible need hours. |
| zip |
string |
no |
The client's 5-digit ZIP code, shown to responders. |
OverAuthorizationAdjustment
-
caregiver_id
string
- The record's id.
-
from
integer
- Visits a week before the trim.
-
task
string
- The task's key on the plan.
-
task_definition_id
string
- The record's id.
-
task_label
string
- The task as the plan names it.
-
to
integer
- Visits a week after it; 0 means the task was taken off.
-
work_order_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
no |
The record's id. |
| from |
integer |
no |
Visits a week before the trim. |
| task |
string |
no |
The task's key on the plan. |
| task_definition_id |
string |
no |
The record's id. |
| task_label |
string |
no |
The task as the plan names it. |
| to |
integer |
no |
Visits a week after it; 0 means the task was taken off. |
| work_order_id |
string |
no |
The record's id. |
OverAuthorizationResolve
-
month
integer, required
- The month, 1 to 12.
-
target
object
- Optional: task key or plan task id => the Work Order id to trim it from.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| month |
integer |
yes |
The month, 1 to 12. |
| target |
object |
no |
Optional: task key or plan task id => the Work Order id to trim it from. |
| year |
integer |
yes |
The year. |
Page
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ParCheck
-
client_id
string, required
- The client.
-
flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
other_pars
array of object, required
- The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services.
-
other_pars[].flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
other_pars[].par_effective_date
string
- The PAR's first day.
-
other_pars[].par_expiry_date
string
- The PAR's last day.
-
other_pars[].par_number
string
- The PAR's number.
-
other_pars[].services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
other_pars[].services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
other_pars[].services[].billing_code
string
- The billing code.
-
other_pars[].services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
other_pars[].services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
other_pars[].services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
other_pars[].services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
other_pars[].services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
other_pars[].services[].hours_weekly
string
- Authorized hours a week.
-
other_pars[].services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
other_pars[].services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
other_pars[].services[].service
string, required
-
other_pars[].services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
other_pars[].services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
other_pars[].services[].units_on_par
integer
- The units the case manager's letter carries.
-
other_pars[].services[].variance
integer
- units_on_par less total_units.
-
other_pars[].weeks
string
- The PAR's weeks, as the panel prints them.
-
par_effective_date
string
- The PAR's first day.
-
par_expiry_date
string
- The PAR's last day.
-
par_number
string
- The PAR's number.
-
services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
services[].billing_code
string
- The billing code.
-
services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
services[].hours_weekly
string
- Authorized hours a week.
-
services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
services[].service
string, required
-
services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
services[].units_on_par
integer
- The units the case manager's letter carries.
-
services[].variance
integer
- units_on_par less total_units.
-
weeks
string
- The PAR's weeks, as the panel prints them.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| other_pars |
array of object |
yes |
The client's other current PARs, each with only the services it has a plan for: separate Personal Care and Homemaker PARs are both current (RW1-N2). The top-level check then lists only its own services. |
| other_pars[].flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| other_pars[].par_effective_date |
string |
no |
The PAR's first day. |
| other_pars[].par_expiry_date |
string |
no |
The PAR's last day. |
| other_pars[].par_number |
string |
no |
The PAR's number. |
| other_pars[].services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| other_pars[].services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| other_pars[].services[].billing_code |
string |
no |
The billing code. |
| other_pars[].services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| other_pars[].services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| other_pars[].services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| other_pars[].services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| other_pars[].services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| other_pars[].services[].hours_weekly |
string |
no |
Authorized hours a week. |
| other_pars[].services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| other_pars[].services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| other_pars[].services[].service |
string |
yes |
|
| other_pars[].services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| other_pars[].services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| other_pars[].services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| other_pars[].services[].variance |
integer |
no |
units_on_par less total_units. |
| other_pars[].weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
| par_effective_date |
string |
no |
The PAR's first day. |
| par_expiry_date |
string |
no |
The PAR's last day. |
| par_number |
string |
no |
The PAR's number. |
| services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| services[].billing_code |
string |
no |
The billing code. |
| services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| services[].hours_weekly |
string |
no |
Authorized hours a week. |
| services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| services[].service |
string |
yes |
|
| services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| services[].variance |
integer |
no |
units_on_par less total_units. |
| weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
ParCheckFigures
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
travel_hours
string
- Travel hours a week, counted with the hours a week.
-
units_on_par
integer
- The units the case manager's letter carries.
| Field |
Type |
Required |
Description |
| extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| units_on_par |
integer |
no |
The units the case manager's letter carries. |
ParCheckOther
-
flags
array of string
- MI, BI, PLWA: the client's conditions the PAR carries.
-
par_effective_date
string
- The PAR's first day.
-
par_expiry_date
string
- The PAR's last day.
-
par_number
string
- The PAR's number.
-
services
array of object, required
- One column per service, Personal Care, Homemaker, HMA.
-
services[].base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
services[].billing_code
string
- The billing code.
-
services[].extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
services[].extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
services[].extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
services[].extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
services[].extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
services[].hours_weekly
string
- Authorized hours a week.
-
services[].mismatch
boolean, required
- total_units and units_on_par disagree.
-
services[].plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
services[].service
string, required
-
services[].total_units
integer
- base_units + extra_units, rounded half-up.
-
services[].travel_hours
string
- Travel hours a week, counted with the hours a week.
-
services[].units_on_par
integer
- The units the case manager's letter carries.
-
services[].variance
integer
- units_on_par less total_units.
-
weeks
string
- The PAR's weeks, as the panel prints them.
| Field |
Type |
Required |
Description |
| flags |
array of string |
no |
MI, BI, PLWA: the client's conditions the PAR carries. |
| par_effective_date |
string |
no |
The PAR's first day. |
| par_expiry_date |
string |
no |
The PAR's last day. |
| par_number |
string |
no |
The PAR's number. |
| services |
array of object |
yes |
One column per service, Personal Care, Homemaker, HMA. |
| services[].base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| services[].billing_code |
string |
no |
The billing code. |
| services[].extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| services[].extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| services[].extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| services[].extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| services[].extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| services[].hours_weekly |
string |
no |
Authorized hours a week. |
| services[].mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| services[].plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| services[].service |
string |
yes |
|
| services[].total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| services[].travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| services[].units_on_par |
integer |
no |
The units the case manager's letter carries. |
| services[].variance |
integer |
no |
units_on_par less total_units. |
| weeks |
string |
no |
The PAR's weeks, as the panel prints them. |
ParCheckService
-
base_units
string
- (hours_weekly + travel_hours) × weeks × 4, unrounded.
-
billing_code
string
- The billing code.
-
extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
extra_units
string
- (extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded.
-
extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
extra_without_weeks
boolean
- Extra hours are set with no extra_weeks, so add nothing.
-
hours_weekly
string
- Authorized hours a week.
-
mismatch
boolean, required
- total_units and units_on_par disagree.
-
plan_of_care_id
string
- The plan it is read from; none when not authorized.
-
service
string, required
-
total_units
integer
- base_units + extra_units, rounded half-up.
-
travel_hours
string
- Travel hours a week, counted with the hours a week.
-
units_on_par
integer
- The units the case manager's letter carries.
-
variance
integer
- units_on_par less total_units.
| Field |
Type |
Required |
Description |
| base_units |
string |
no |
(hours_weekly + travel_hours) × weeks × 4, unrounded. |
| billing_code |
string |
no |
The billing code. |
| extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| extra_units |
string |
no |
(extra_hours + extra_travel_hours) × extra_weeks × 4, unrounded. |
| extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| extra_without_weeks |
boolean |
no |
Extra hours are set with no extra_weeks, so add nothing. |
| hours_weekly |
string |
no |
Authorized hours a week. |
| mismatch |
boolean |
yes |
total_units and units_on_par disagree. |
| plan_of_care_id |
string |
no |
The plan it is read from; none when not authorized. |
| service |
string |
yes |
|
| total_units |
integer |
no |
base_units + extra_units, rounded half-up. |
| travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| units_on_par |
integer |
no |
The units the case manager's letter carries. |
| variance |
integer |
no |
units_on_par less total_units. |
ParCheckUpdate
-
hma
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
hma.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
hma.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
hma.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
hma.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
hma.units_on_par
integer
- The units the case manager's letter carries.
-
homemaker
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
homemaker.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
homemaker.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
homemaker.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
homemaker.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
homemaker.units_on_par
integer
- The units the case manager's letter carries.
-
personal_care
object
- This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par.
-
personal_care.extra_hours
string
- Extra hours a week, for extra_weeks: a second segment.
-
personal_care.extra_travel_hours
string
- Travel hours a week, counted with extra_hours.
-
personal_care.extra_weeks
string
- Weeks the extra hours run. None means the extra adds no units.
-
personal_care.travel_hours
string
- Travel hours a week, counted with the hours a week.
-
personal_care.units_on_par
integer
- The units the case manager's letter carries.
| Field |
Type |
Required |
Description |
| hma |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| hma.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| hma.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| hma.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| hma.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| hma.units_on_par |
integer |
no |
The units the case manager's letter carries. |
| homemaker |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| homemaker.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| homemaker.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| homemaker.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| homemaker.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| homemaker.units_on_par |
integer |
no |
The units the case manager's letter carries. |
| personal_care |
object |
no |
This service's figures: travel_hours, extra_hours, extra_travel_hours, extra_weeks, units_on_par. |
| personal_care.extra_hours |
string |
no |
Extra hours a week, for extra_weeks: a second segment. |
| personal_care.extra_travel_hours |
string |
no |
Travel hours a week, counted with extra_hours. |
| personal_care.extra_weeks |
string |
no |
Weeks the extra hours run. None means the extra adds no units. |
| personal_care.travel_hours |
string |
no |
Travel hours a week, counted with the hours a week. |
| personal_care.units_on_par |
integer |
no |
The units the case manager's letter carries. |
PayrollCheckFinding
-
caregiver_id
string, required
- The caregiver, or null for the export as a whole.
-
code
string, required
- Which rule found it.
-
fix_path
string, required
- The HomeCareBilling page where it is fixed.
-
message
string, required
- The sentence Payroll exports > Check shows.
-
severity
string, required
- unsendable (no line of the ADP file can be written), refusal (ADP refuses this line; the rest goes) or warning (sent as it is).
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver, or null for the export as a whole. |
| code |
string |
yes |
Which rule found it. |
| fix_path |
string |
yes |
The HomeCareBilling page where it is fixed. |
| message |
string |
yes |
The sentence Payroll exports > Check shows. |
| severity |
string |
yes |
unsendable (no line of the ADP file can be written), refusal (ADP refuses this line; the rest goes) or warning (sent as it is). |
PayrollConnectCode
-
connect_code
string, required
- The single-use code to paste into the ADP Marketplace checkout form. Answered only here, never stored or shown again; a new code replaces the old.
-
expires_at
string, required
- When the code stops working, 7 days after it was made.
| Field |
Type |
Required |
Description |
| connect_code |
string |
yes |
The single-use code to paste into the ADP Marketplace checkout form. Answered only here, never stored or shown again; a new code replaces the old. |
| expires_at |
string |
yes |
When the code stops working, 7 days after it was made. |
PayrollConnection
-
certificate_expires_at
string, required
- When the ADP API certificate expires; null when there is none (own_api only).
-
enabled
boolean, required
- Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch).
-
health
object, required
-
health.certificate_expires_at
string, required
- When the ADP API certificate expires.
-
health.consecutive_failures
integer, required
- Failures since the last success.
-
health.last_failure_at
string, required
- The last failed one.
-
health.last_success_at
string, required
- The last successful token request or call to ADP.
-
health.message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
health.paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
health.status
string, required
- The connection's state.
-
health.status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
-
method
string, required
- How payroll reaches ADP.
-
methods_offered
array of string, required
- The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on.
-
notice
string, required
- On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null.
-
product
string, required
- Which ADP the agency runs: run, wfn or unknown.
-
secrets_set
object, required
-
secrets_set.certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
secrets_set.client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
secrets_set.client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
secrets_set.private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
secrets_set.sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
-
settings
object, required
-
settings.allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
settings.employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
settings.mark_exported_on
string, required
- When a sent export is marked exported.
-
settings.rate_mode
string, required
- How API methods send a pay rate.
-
settings.rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
settings.run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
settings.run_file_version
string, required
- The RUN Time Sheet Import file version.
-
settings.send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
settings.sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
settings.sftp_host
string, required
- The SFTP drop's host; null when unset.
-
settings.sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
settings.sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
settings.sftp_user
string, required
- The SFTP drop's user; null when unset.
-
sftp_key_fingerprint
string, required
- The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered.
-
status
string, required
- The connection's state.
| Field |
Type |
Required |
Description |
| certificate_expires_at |
string |
yes |
When the ADP API certificate expires; null when there is none (own_api only). |
| enabled |
boolean |
yes |
Whether the ADP payroll integration is on for the agency (Settings > Payroll's switch). |
| health |
object |
yes |
|
| health.certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| health.consecutive_failures |
integer |
yes |
Failures since the last success. |
| health.last_failure_at |
string |
yes |
The last failed one. |
| health.last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| health.message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| health.paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| health.status |
string |
yes |
The connection's state. |
| health.status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
| method |
string |
yes |
How payroll reaches ADP. |
| methods_offered |
array of string |
yes |
The sending methods Settings > Payroll offers for this product: built, fitting the product and switched on. |
| notice |
string |
yes |
On a change, "Sending switched to the file, because that method is not offered for this ADP." when the method was not offered for the product and the file was stored instead (or, when the marketplace is kept for an ADP product other than the one the agency's ADP Marketplace subscription is for, a sentence naming both products: the connection waits for that product's order); otherwise null. |
| product |
string |
yes |
Which ADP the agency runs: run, wfn or unknown. |
| secrets_set |
object |
yes |
|
| secrets_set.certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| secrets_set.client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| secrets_set.client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| secrets_set.private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| secrets_set.sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
| settings |
object |
yes |
|
| settings.allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| settings.employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| settings.mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| settings.rate_mode |
string |
yes |
How API methods send a pay rate. |
| settings.rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| settings.run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| settings.run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| settings.send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| settings.sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| settings.sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| settings.sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| settings.sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| settings.sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
| sftp_key_fingerprint |
string |
yes |
The SHA-256 fingerprint (SHA256:..., as ssh-keygen -lf prints it) of the SFTP drop key's public half; null when no key is set. The key is never answered. |
| status |
string |
yes |
The connection's state. |
PayrollConnectionHealth
-
certificate_expires_at
string, required
- When the ADP API certificate expires.
-
consecutive_failures
integer, required
- Failures since the last success.
-
last_failure_at
string, required
- The last failed one.
-
last_success_at
string, required
- The last successful token request or call to ADP.
-
message
string, required
- The sentence the reconnect banner shows while the connection needs attention; null otherwise.
-
paused_until
string, required
- While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise.
-
status
string, required
- The connection's state.
-
status_reason
string, required
- Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise.
| Field |
Type |
Required |
Description |
| certificate_expires_at |
string |
yes |
When the ADP API certificate expires. |
| consecutive_failures |
integer |
yes |
Failures since the last success. |
| last_failure_at |
string |
yes |
The last failed one. |
| last_success_at |
string |
yes |
The last successful token request or call to ADP. |
| message |
string |
yes |
The sentence the reconnect banner shows while the connection needs attention; null otherwise. |
| paused_until |
string |
yes |
While ADP is not answering and HomeCareBilling has paused calls to it, when it tries again; null otherwise. |
| status |
string |
yes |
The connection's state. |
| status_reason |
string |
yes |
Why the connection needs attention: token_refused, circuit_open, certificate_expired, method_paused, or the code Test connection recorded; null otherwise. |
PayrollConnectionSecretsSet
-
certificate_pem
boolean, required
- Whether certificate_pem is set. The value is never answered.
-
client_id
boolean, required
- Whether client_id is set. The value is never answered.
-
client_secret
boolean, required
- Whether client_secret is set. The value is never answered.
-
private_key_pem
boolean, required
- Whether private_key_pem is set. The value is never answered.
-
sftp_private_key
boolean, required
- Whether sftp_private_key is set. The value is never answered.
| Field |
Type |
Required |
Description |
| certificate_pem |
boolean |
yes |
Whether certificate_pem is set. The value is never answered. |
| client_id |
boolean |
yes |
Whether client_id is set. The value is never answered. |
| client_secret |
boolean |
yes |
Whether client_secret is set. The value is never answered. |
| private_key_pem |
boolean |
yes |
Whether private_key_pem is set. The value is never answered. |
| sftp_private_key |
boolean |
yes |
Whether sftp_private_key is set. The value is never answered. |
PayrollConnectionSettings
-
allow_hire_push
boolean, required
- Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP).
-
employee_id_template
string, required
- Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID).
-
mark_exported_on
string, required
- When a sent export is marked exported.
-
rate_mode
string, required
- How API methods send a pay rate.
-
rate_tolerance
string, required
- How far ADP's rate may differ from HomeCareBilling's before a warning.
-
run_company_code
string, required
- RUN's company code or IID, 1 to 10 letters and numbers; null when unset.
-
run_file_version
string, required
- The RUN Time Sheet Import file version.
-
send_contractors
boolean, required
- Whether 1099 contractors' hours go to ADP too.
-
sftp_folder
string, required
- The SFTP drop's folder; null when unset.
-
sftp_host
string, required
- The SFTP drop's host; null when unset.
-
sftp_host_key_fingerprint
string, required
- The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then.
-
sftp_port
integer, required
- The SFTP drop's port, 1 to 65535; null when unset, which connects on 22.
-
sftp_user
string, required
- The SFTP drop's user; null when unset.
| Field |
Type |
Required |
Description |
| allow_hire_push |
boolean |
yes |
Whether a caregiver may be added to ADP from HomeCareBilling (RUN's Add to ADP). |
| employee_id_template |
string |
yes |
Which RUN Time Sheet Import template keys each caregiver: payroll_assigned (ADP's Employee ID) or time_clock (the Time Clock ID). |
| mark_exported_on |
string |
yes |
When a sent export is marked exported. |
| rate_mode |
string |
yes |
How API methods send a pay rate. |
| rate_tolerance |
string |
yes |
How far ADP's rate may differ from HomeCareBilling's before a warning. |
| run_company_code |
string |
yes |
RUN's company code or IID, 1 to 10 letters and numbers; null when unset. |
| run_file_version |
string |
yes |
The RUN Time Sheet Import file version. |
| send_contractors |
boolean |
yes |
Whether 1099 contractors' hours go to ADP too. |
| sftp_folder |
string |
yes |
The SFTP drop's folder; null when unset. |
| sftp_host |
string |
yes |
The SFTP drop's host; null when unset. |
| sftp_host_key_fingerprint |
string |
yes |
The SHA-256 host key fingerprint the SFTP server presented at the first successful Test connection, trusted from then on; null until then. |
| sftp_port |
integer |
yes |
The SFTP drop's port, 1 to 65535; null when unset, which connects on 22. |
| sftp_user |
string |
yes |
The SFTP drop's user; null when unset. |
PayrollConnectionTest
-
connected
boolean, required
- Whether ADP answered with the saved credentials, or the SFTP drop signed in and listed its folder.
-
message
string, required
- The sentence Settings > Payroll's Test connection shows.
| Field |
Type |
Required |
Description |
| connected |
boolean |
yes |
Whether ADP answered with the saved credentials, or the SFTP drop signed in and listed its folder. |
| message |
string |
yes |
The sentence Settings > Payroll's Test connection shows. |
PayrollConnectionUpdate
-
allow_hire_push
boolean
- RUN: let HomeCareBilling start new hires in RUN (Add to ADP on ADP workers), which sends the caregiver's SSN. Off by default.
-
employee_id_template
string
- payroll_assigned (ADP's Employee ID, the default) or time_clock (the Time Clock ID).
-
enabled
boolean
- Turn the ADP payroll integration on or off for the agency. Off keeps the connection, its settings and earning codes.
-
mark_exported_on
string
- API methods: all_accepted (the default) marks the export exported when ADP accepts every line; manual leaves it to Mark Downloaded.
-
method
string
- How payroll reaches ADP; one of methods_offered. Any other is stored as file, with notice saying so.
-
product
string
- Which ADP the agency runs: run (signs in at runpayroll.adp.com), wfn (workforcenow.adp.com) or unknown.
-
run_company_code
string
- RUN's company code or IID, 1 to 10 letters and numbers; null or blank clears it.
-
run_file_version
string
- The RUN Time Sheet Import file version.
-
send_contractors
boolean
- Send 1099 contractors' hours to ADP too.
| Field |
Type |
Required |
Description |
| allow_hire_push |
boolean |
no |
RUN: let HomeCareBilling start new hires in RUN (Add to ADP on ADP workers), which sends the caregiver's SSN. Off by default. |
| employee_id_template |
string |
no |
payroll_assigned (ADP's Employee ID, the default) or time_clock (the Time Clock ID). |
| enabled |
boolean |
no |
Turn the ADP payroll integration on or off for the agency. Off keeps the connection, its settings and earning codes. |
| mark_exported_on |
string |
no |
API methods: all_accepted (the default) marks the export exported when ADP accepts every line; manual leaves it to Mark Downloaded. |
| method |
string |
no |
How payroll reaches ADP; one of methods_offered. Any other is stored as file, with notice saying so. |
| product |
string |
no |
Which ADP the agency runs: run (signs in at runpayroll.adp.com), wfn (workforcenow.adp.com) or unknown. |
| run_company_code |
string |
no |
RUN's company code or IID, 1 to 10 letters and numbers; null or blank clears it. |
| run_file_version |
string |
no |
The RUN Time Sheet Import file version. |
| send_contractors |
boolean |
no |
Send 1099 contractors' hours to ADP too. |
PayrollCredentialsUpdate
-
certificate_pem
string
- The certificate API Central signed for the request from POST /payroll/connection/csr, PEM; absent or blank keeps the saved one.
-
client_id
string
- The API Central project's client ID; absent or blank keeps the saved one.
-
client_secret
string
- The API Central project's client secret; absent or blank keeps the saved one. Never answered.
| Field |
Type |
Required |
Description |
| certificate_pem |
string |
no |
The certificate API Central signed for the request from POST /payroll/connection/csr, PEM; absent or blank keeps the saved one. |
| client_id |
string |
no |
The API Central project's client ID; absent or blank keeps the saved one. |
| client_secret |
string |
no |
The API Central project's client secret; absent or blank keeps the saved one. Never answered. |
PayrollCsr
-
csr_pem
string, required
- The certificate request to give API Central, PEM. HomeCareBilling keeps its private key; no answer carries it.
| Field |
Type |
Required |
Description |
| csr_pem |
string |
yes |
The certificate request to give API Central, PEM. HomeCareBilling keeps its private key; no answer carries it. |
PayrollEarningMapping
-
earning_code
string, required
- The ADP earning code carrying these hours; null when the slot is unmapped.
-
file_column
integer, required
- The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column.
-
hour_kind
string, required
- The kind of hours.
-
rate_code
string, required
- The ADP rate code, or null.
-
saved
boolean, required
- true for a saved code; false for HomeCareBilling's proposal, used until one is saved.
-
source
string, required
- admin when a member saved it, adp_default when read from ADP; null on a proposal.
-
worker_type
string, required
- Employees or contractors.
| Field |
Type |
Required |
Description |
| earning_code |
string |
yes |
The ADP earning code carrying these hours; null when the slot is unmapped. |
| file_column |
integer |
yes |
The Workforce Now file's "Hours N" pair, 3 to 50, or null for the file's own column. |
| hour_kind |
string |
yes |
The kind of hours. |
| rate_code |
string |
yes |
The ADP rate code, or null. |
| saved |
boolean |
yes |
true for a saved code; false for HomeCareBilling's proposal, used until one is saved. |
| source |
string |
yes |
admin when a member saved it, adp_default when read from ADP; null on a proposal. |
| worker_type |
string |
yes |
Employees or contractors. |
PayrollEarningMappingUpdate
-
earning_code
string, required
- The ADP earning code, 1 to 10 letters or digits as on your ADP Earnings Codes report (upcased and trimmed); null or blank clears the slot back to its proposal.
-
file_column
integer
- The Workforce Now "Hours N" pair, 3 to 50, not used by another slot. Left out keeps it; null clears it.
-
hour_kind
string, required
- The kind of hours to map.
-
rate_code
string
- On RUN, BASE, RATE_2 to RATE_5 or HRLY4SLRY1; elsewhere up to 10 letters, digits or underscores. Left out keeps it; null clears it.
-
worker_type
string, required
- employee or contractor.
| Field |
Type |
Required |
Description |
| earning_code |
string |
yes |
The ADP earning code, 1 to 10 letters or digits as on your ADP Earnings Codes report (upcased and trimmed); null or blank clears the slot back to its proposal. |
| file_column |
integer |
no |
The Workforce Now "Hours N" pair, 3 to 50, not used by another slot. Left out keeps it; null clears it. |
| hour_kind |
string |
yes |
The kind of hours to map. |
| rate_code |
string |
no |
On RUN, BASE, RATE_2 to RATE_5 or HRLY4SLRY1; elsewhere up to 10 letters, digits or underscores. Left out keeps it; null clears it. |
| worker_type |
string |
yes |
employee or contractor. |
PayrollExport
-
adp_co_code
string
-
billing_period_end
string
-
billing_period_start
string
-
file_ready
boolean
- Whether GET .../file has a file to return.
-
format
string
- adp (Workforce Now) or adp_run.
-
id
string
- The record's id.
-
status
string
- pending, generated or exported.
| Field |
Type |
Required |
Description |
| adp_co_code |
string |
no |
|
| billing_period_end |
string |
no |
|
| billing_period_start |
string |
no |
|
| file_ready |
boolean |
no |
Whether GET .../file has a file to return. |
| format |
string |
no |
adp (Workforce Now) or adp_run. |
| id |
string |
no |
The record's id. |
| status |
string |
no |
pending, generated or exported. |
PayrollHireAttempt
-
caregiver_id
string, required
- The caregiver.
-
message
string, required
- The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again.
-
status
string, required
- Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there").
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| message |
string |
yes |
The sentence ADP workers shows on the caregiver's row; null where it offers Add to ADP again. |
| status |
string |
yes |
Where the send stands: sent (ADP named the worker, now linked), pending_in_adp (an ADP user finishes it in RUN's New Hire Wizard), unconfirmed (ADP did not answer: check RUN's new hires before sending again), abandoned (cleared by "I checked RUN: not there"). |
PayrollSftpUpdate
-
folder
string
- The folder ADP picks paydata files up from; absent, blank or null keeps the saved one.
-
host
string
- The SFTP server ADP gave the agency, a host name; absent, blank or null keeps the saved one. A new host trusts the next Test connection's host key.
-
port
integer | string
- The SFTP server's port, 1 to 65535; absent or null keeps the saved one, an empty string clears it, and none saved connects on 22. A new port trusts the next Test connection's host key.
-
private_key
string
- The private key file ADP gave the agency (OpenSSH or PEM, no passphrase), as text; absent, blank or null keeps the saved one. Never answered.
-
user
string
- The SFTP user ADP gave the agency; absent, blank or null keeps the saved one.
| Field |
Type |
Required |
Description |
| folder |
string |
no |
The folder ADP picks paydata files up from; absent, blank or null keeps the saved one. |
| host |
string |
no |
The SFTP server ADP gave the agency, a host name; absent, blank or null keeps the saved one. A new host trusts the next Test connection's host key. |
| port |
integer | string |
no |
The SFTP server's port, 1 to 65535; absent or null keeps the saved one, an empty string clears it, and none saved connects on 22. A new port trusts the next Test connection's host key. |
| private_key |
string |
no |
The private key file ADP gave the agency (OpenSSH or PEM, no passphrase), as text; absent, blank or null keeps the saved one. Never answered. |
| user |
string |
no |
The SFTP user ADP gave the agency; absent, blank or null keeps the saved one. |
PayrollSubmission
-
attempt
integer, required
- 1 for the first send of the export, one more per resend.
-
confirmed_at
string
- When every line was answered.
-
id
string, required
- The record's id.
-
line_count
integer, required
- How many caregivers' lines the submission has.
-
lines
array of object, required
-
lines[].caregiver_id
string
- The caregiver the line pays.
-
lines[].error_code
string
- ADP's code, or HomeCareBilling's when it never reached ADP.
-
lines[].error_message
string
- Why the line was refused.
-
lines[].id
string, required
- The record's id.
-
lines[].label
string, required
- What Payroll exports shows for the line.
-
lines[].status
string, required
- pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file.
-
message
string
- With unchanged: what Payroll exports shows.
-
payroll_export_id
string, required
- The payroll export sent.
-
sent_at
string
- When posting began.
-
status
string, required
- queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it.
-
unchanged
boolean
- Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full.
| Field |
Type |
Required |
Description |
| attempt |
integer |
yes |
1 for the first send of the export, one more per resend. |
| confirmed_at |
string |
no |
When every line was answered. |
| id |
string |
yes |
The record's id. |
| line_count |
integer |
yes |
How many caregivers' lines the submission has. |
| lines |
array of object |
yes |
|
| lines[].caregiver_id |
string |
no |
The caregiver the line pays. |
| lines[].error_code |
string |
no |
ADP's code, or HomeCareBilling's when it never reached ADP. |
| lines[].error_message |
string |
no |
Why the line was refused. |
| lines[].id |
string |
yes |
The record's id. |
| lines[].label |
string |
yes |
What Payroll exports shows for the line. |
| lines[].status |
string |
yes |
pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file. |
| message |
string |
no |
With unchanged: what Payroll exports shows. |
| payroll_export_id |
string |
yes |
The payroll export sent. |
| sent_at |
string |
no |
When posting began. |
| status |
string |
yes |
queued and sending while it goes; sent when ADP accepted every line, partially_refused or refused when it refused some or all; unconfirmed when a post may have been written and is being confirmed; superseded once a resend replaced it. |
| unchanged |
boolean |
no |
Present and true when ADP already had these hours: nothing was sent, and this is the last send that ADP accepted in full. |
PayrollSubmissionInput
-
choices
object
- Per caregiver id, replace (HomeCareBilling's hours) or keep (ADP's), for each line a 409 needs_choice listed.
-
resend
boolean
- true for Fix and resend: lines ADP accepted before are replaced by their ADP item ids, new ones added.
| Field |
Type |
Required |
Description |
| choices |
object |
no |
Per caregiver id, replace (HomeCareBilling's hours) or keep (ADP's), for each line a 409 needs_choice listed. |
| resend |
boolean |
no |
true for Fix and resend: lines ADP accepted before are replaced by their ADP item ids, new ones added. |
PayrollSubmissionLine
-
caregiver_id
string
- The caregiver the line pays.
-
error_code
string
- ADP's code, or HomeCareBilling's when it never reached ADP.
-
error_message
string
- Why the line was refused.
-
id
string, required
- The record's id.
-
label
string, required
- What Payroll exports shows for the line.
-
status
string, required
- pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
no |
The caregiver the line pays. |
| error_code |
string |
no |
ADP's code, or HomeCareBilling's when it never reached ADP. |
| error_message |
string |
no |
Why the line was refused. |
| id |
string |
yes |
The record's id. |
| label |
string |
yes |
What Payroll exports shows for the line. |
| status |
string |
yes |
pending and posting while it goes; accepted; refused by ADP, or before it was posted (error_code not_sent, not_linked or a check rule); unconfirmed while a post that may have been written is confirmed; sent when dropped as a file. |
PayrollSummaryPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
adp_left_out
object
- The 1099 contractors the ADP files leave out over every row of the period, and their hours.
-
adp_left_out.count
integer
- How many contractors.
-
adp_left_out.hours
string
- Their hours, all regular.
-
data
array of PayrollSummaryRow, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
pay_periods
array of object, required
- The month's pay periods, from the agency's pay period frequency.
-
pay_periods[].index
integer
- The period's index, the period parameter that reads it.
-
pay_periods[].period_end
string
-
pay_periods[].period_start
string
-
period_end
string, required
- The last day read.
-
period_start
string, required
- The first day read.
-
total
integer, required
- Every matching row.
-
totals
object, required
- Over every row of the period, not this page; a row with no pay counts 0 in total_pay.
-
totals.attendant_hours
string
-
totals.cash_advance
string
-
totals.daily_overtime_hours
string
-
totals.overtime_hours
string
-
totals.regular_hours
string
-
totals.total_pay
string
-
totals.travel_hours
string
-
warnings
array of string, required
- The page's attendant classification warnings.
| Field |
Type |
Required |
Description |
| adp_left_out |
object |
no |
The 1099 contractors the ADP files leave out over every row of the period, and their hours. |
| adp_left_out.count |
integer |
no |
How many contractors. |
| adp_left_out.hours |
string |
no |
Their hours, all regular. |
| data |
array of PayrollSummaryRow |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| pay_periods |
array of object |
yes |
The month's pay periods, from the agency's pay period frequency. |
| pay_periods[].index |
integer |
no |
The period's index, the period parameter that reads it. |
| pay_periods[].period_end |
string |
no |
|
| pay_periods[].period_start |
string |
no |
|
| period_end |
string |
yes |
The last day read. |
| period_start |
string |
yes |
The first day read. |
| total |
integer |
yes |
Every matching row. |
| totals |
object |
yes |
Over every row of the period, not this page; a row with no pay counts 0 in total_pay. |
| totals.attendant_hours |
string |
no |
|
| totals.cash_advance |
string |
no |
|
| totals.daily_overtime_hours |
string |
no |
|
| totals.overtime_hours |
string |
no |
|
| totals.regular_hours |
string |
no |
|
| totals.total_pay |
string |
no |
|
| totals.travel_hours |
string |
no |
|
| warnings |
array of string |
yes |
The page's attendant classification warnings. |
PayrollSummaryRow
One caregiver's pay for the period, as the Payroll Summary shows it.
-
adp_file_number
string
- The caregiver's ADP file number.
-
attendant_hours
string
- Hours, a decimal string.
-
attendant_rate
string
- The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved.
-
caregiver_id
string, required
- The caregiver.
-
caregiver_name
string
- "Last, First", as the payroll pages show it.
-
cash_advance
string
- The cash advances this month's payroll deducts from the caregiver, the whole month's whichever pay period is shown.
-
cash_advance_held
array of object
-
cash_advance_held[].amount
string
- What that file deducts.
-
cash_advance_held[].cash_advance_id
string
- The advance.
-
cash_advance_held[].description
string
- As the page's Cash Advance column shows it: "$50.00 on the Oct 01 - Oct 15, 2026 file".
-
cash_advance_held[].payroll_export_id
string
- The payroll file that holds it.
-
cash_advance_held[].period_end
string
- That file's last day.
-
cash_advance_held[].period_start
string
- That file's first day.
-
daily_overtime_hours
string
- Hours, a decimal string. Zero unless the agency pays daily overtime.
-
id
string, required
- The caregiver (the row is the caregiver's).
-
overtime_hours
string
- Hours, a decimal string.
-
regular_hours
string
- Hours, a decimal string.
-
timesheets
array of object
-
timesheets[].attendant_hours
string
- Attendant hours in the period.
-
timesheets[].client_id
string
- The client.
-
timesheets[].client_name
string
- "Last, First".
-
timesheets[].hours
string
- Worked hours in the period (regular, overtime and daily overtime).
-
timesheets[].id
string
- The timesheet.
-
timesheets[].period_end
string
- The timesheet's last day.
-
timesheets[].period_start
string
- The timesheet's first day.
-
timesheets[].travel_hours
string
- Travel hours in the period.
-
timesheets[].wo_number
string
- The WO # of the work order it was made from, as the pages show it, or the number imported as text when it names no Work Order; null when it names none.
-
timesheets[].work_order_id
string
- The work order it was made from; null when it names none in this agency.
-
total_pay
string
- The period's pay; null when no work rate resolved.
-
travel_hours
string
- Hours, a decimal string.
-
travel_rate
string
- The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved.
-
work_rate
string
- The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved.
-
worker_classification
string
- w2 (W-2 employee) or 1099 (independent contractor): a contractor's hours are all regular, and the ADP file leaves them out.
| Field |
Type |
Required |
Description |
| adp_file_number |
string |
no |
The caregiver's ADP file number. |
| attendant_hours |
string |
no |
Hours, a decimal string. |
| attendant_rate |
string |
no |
The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved. |
| caregiver_id |
string |
yes |
The caregiver. |
| caregiver_name |
string |
no |
"Last, First", as the payroll pages show it. |
| cash_advance |
string |
no |
The cash advances this month's payroll deducts from the caregiver, the whole month's whichever pay period is shown. |
| cash_advance_held |
array of object |
no |
|
| cash_advance_held[].amount |
string |
no |
What that file deducts. |
| cash_advance_held[].cash_advance_id |
string |
no |
The advance. |
| cash_advance_held[].description |
string |
no |
As the page's Cash Advance column shows it: "$50.00 on the Oct 01 - Oct 15, 2026 file". |
| cash_advance_held[].payroll_export_id |
string |
no |
The payroll file that holds it. |
| cash_advance_held[].period_end |
string |
no |
That file's last day. |
| cash_advance_held[].period_start |
string |
no |
That file's first day. |
| daily_overtime_hours |
string |
no |
Hours, a decimal string. Zero unless the agency pays daily overtime. |
| id |
string |
yes |
The caregiver (the row is the caregiver's). |
| overtime_hours |
string |
no |
Hours, a decimal string. |
| regular_hours |
string |
no |
Hours, a decimal string. |
| timesheets |
array of object |
no |
|
| timesheets[].attendant_hours |
string |
no |
Attendant hours in the period. |
| timesheets[].client_id |
string |
no |
The client. |
| timesheets[].client_name |
string |
no |
"Last, First". |
| timesheets[].hours |
string |
no |
Worked hours in the period (regular, overtime and daily overtime). |
| timesheets[].id |
string |
no |
The timesheet. |
| timesheets[].period_end |
string |
no |
The timesheet's last day. |
| timesheets[].period_start |
string |
no |
The timesheet's first day. |
| timesheets[].travel_hours |
string |
no |
Travel hours in the period. |
| timesheets[].wo_number |
string |
no |
The WO # of the work order it was made from, as the pages show it, or the number imported as text when it names no Work Order; null when it names none. |
| timesheets[].work_order_id |
string |
no |
The work order it was made from; null when it names none in this agency. |
| total_pay |
string |
no |
The period's pay; null when no work rate resolved. |
| travel_hours |
string |
no |
Hours, a decimal string. |
| travel_rate |
string |
no |
The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved. |
| work_rate |
string |
no |
The rate the period applied, a decimal string; "multiple" when it varied by day; null when none resolved. |
| worker_classification |
string |
no |
w2 (W-2 employee) or 1099 (independent contractor): a contractor's hours are all regular, and the ADP file leaves them out. |
PayrollWorker
-
adp_hire_date
string
- The hire date ADP holds.
-
adp_name
string
- The worker's name as ADP spells it.
-
adp_status
string, required
- The worker's status in ADP.
-
adp_status_date
string
- When that status began, in ADP.
-
adp_worker_id
string
- ADP's employee or file number for the worker.
-
associate_oid
string
- ADP's id for the worker.
-
caregiver_id
string, required
- The paired caregiver; null while the worker needs a person.
-
caregiver_name
string
- The paired caregiver's name.
-
id
string, required
- The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker.
-
linked_at
string
- When it was linked.
-
linked_by_name
string
- Who linked it, for a manual link.
-
match_method
string
- How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP.
-
missing_from_adp
boolean, required
- True when ADP's last complete worker list no longer held this worker; it then reads terminated.
-
warning
string
- What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one.
| Field |
Type |
Required |
Description |
| adp_hire_date |
string |
no |
The hire date ADP holds. |
| adp_name |
string |
no |
The worker's name as ADP spells it. |
| adp_status |
string |
yes |
The worker's status in ADP. |
| adp_status_date |
string |
no |
When that status began, in ADP. |
| adp_worker_id |
string |
no |
ADP's employee or file number for the worker. |
| associate_oid |
string |
no |
ADP's id for the worker. |
| caregiver_id |
string |
yes |
The paired caregiver; null while the worker needs a person. |
| caregiver_name |
string |
no |
The paired caregiver's name. |
| id |
string |
yes |
The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker. |
| linked_at |
string |
no |
When it was linked. |
| linked_by_name |
string |
no |
Who linked it, for a manual link. |
| match_method |
string |
no |
How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP. |
| missing_from_adp |
boolean |
yes |
True when ADP's last complete worker list no longer held this worker; it then reads terminated. |
| warning |
string |
no |
What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one. |
PayrollWorkerLinkInput
-
caregiver_id
string, required
- The caregiver this ADP worker is.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver this ADP worker is. |
PayrollWorkerPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].adp_hire_date
string
- The hire date ADP holds.
-
data[].adp_name
string
- The worker's name as ADP spells it.
-
data[].adp_status
string, required
- The worker's status in ADP.
-
data[].adp_status_date
string
- When that status began, in ADP.
-
data[].adp_worker_id
string
- ADP's employee or file number for the worker.
-
data[].associate_oid
string
- ADP's id for the worker.
-
data[].caregiver_id
string, required
- The paired caregiver; null while the worker needs a person.
-
data[].caregiver_name
string
- The paired caregiver's name.
-
data[].id
string, required
- The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker.
-
data[].linked_at
string
- When it was linked.
-
data[].linked_by_name
string
- Who linked it, for a manual link.
-
data[].match_method
string
- How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP.
-
data[].missing_from_adp
boolean, required
- True when ADP's last complete worker list no longer held this worker; it then reads terminated.
-
data[].warning
string
- What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].adp_hire_date |
string |
no |
The hire date ADP holds. |
| data[].adp_name |
string |
no |
The worker's name as ADP spells it. |
| data[].adp_status |
string |
yes |
The worker's status in ADP. |
| data[].adp_status_date |
string |
no |
When that status began, in ADP. |
| data[].adp_worker_id |
string |
no |
ADP's employee or file number for the worker. |
| data[].associate_oid |
string |
no |
ADP's id for the worker. |
| data[].caregiver_id |
string |
yes |
The paired caregiver; null while the worker needs a person. |
| data[].caregiver_name |
string |
no |
The paired caregiver's name. |
| data[].id |
string |
yes |
The worker link, the id POST /payroll/workers/{id}/link takes; null for a caregiver with no ADP worker. |
| data[].linked_at |
string |
no |
When it was linked. |
| data[].linked_by_name |
string |
no |
Who linked it, for a manual link. |
| data[].match_method |
string |
no |
How the pairing was made: by ADP number, by name with birth or hire date, by a person (manual), or by HomeCareBilling adding the worker to ADP. |
| data[].missing_from_adp |
boolean |
yes |
True when ADP's last complete worker list no longer held this worker; it then reads terminated. |
| data[].warning |
string |
no |
What /payroll/workers warns about the row: a different ADP number in HomeCareBilling, or another caregiver already holding this one. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
PayrollWorkerSync
-
queued
boolean, required
- True: the sync is queued, or already waiting to run.
| Field |
Type |
Required |
Description |
| queued |
boolean |
yes |
True: the sync is queued, or already waiting to run. |
PcspDocument
-
client_id
string, required
- The client.
-
content_type
string
- Its type.
-
file_name
string
- Its name.
-
id
string, required
- The record's id.
-
uploaded_at
string
- When it was stored.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| content_type |
string |
no |
Its type. |
| file_name |
string |
no |
Its name. |
| id |
string |
yes |
The record's id. |
| uploaded_at |
string |
no |
When it was stored. |
PcspReconciliationApply
-
decisions
object
- excluded, choices and supersessions.
-
decisions.choices
object
- Row index => the authorization id it updates.
-
decisions.excluded
array of integer
- Row indexes to leave out.
-
decisions.supersessions
object
- Authorization id => end_date or leave.
-
token
string, required
- The token the preview answered.
| Field |
Type |
Required |
Description |
| decisions |
object |
no |
excluded, choices and supersessions. |
| decisions.choices |
object |
no |
Row index => the authorization id it updates. |
| decisions.excluded |
array of integer |
no |
Row indexes to leave out. |
| decisions.supersessions |
object |
no |
Authorization id => end_date or leave. |
| token |
string |
yes |
The token the preview answered. |
PcspReconciliationDecisions
excluded, choices and supersessions.
-
choices
object
- Row index => the authorization id it updates.
-
excluded
array of integer
- Row indexes to leave out.
-
supersessions
object
- Authorization id => end_date or leave.
| Field |
Type |
Required |
Description |
| choices |
object |
no |
Row index => the authorization id it updates. |
| excluded |
array of integer |
no |
Row indexes to leave out. |
| supersessions |
object |
no |
Authorization id => end_date or leave. |
PcspReconciliationPreview
-
candidates
array of object, required
- Each proposed authorisation, with its index.
-
expires_in_seconds
integer
- How long the token is good for.
-
identity_mismatch
array of object
- Set when the PCSP names another member; nothing can be applied.
-
service_plan_type
string
- initial, csr or revision.
-
supersessions
array of object
-
token
string
- The apply token, or null when nothing can be applied.
| Field |
Type |
Required |
Description |
| candidates |
array of object |
yes |
Each proposed authorisation, with its index. |
| expires_in_seconds |
integer |
no |
How long the token is good for. |
| identity_mismatch |
array of object |
no |
Set when the PCSP names another member; nothing can be applied. |
| service_plan_type |
string |
no |
initial, csr or revision. |
| supersessions |
array of object |
no |
|
| token |
string |
no |
The apply token, or null when nothing can be applied. |
PcspReconciliationResult
-
complete
boolean, required
- Whether nothing is left outstanding.
-
results
array of object, required
| Field |
Type |
Required |
Description |
| complete |
boolean |
yes |
Whether nothing is left outstanding. |
| results |
array of object |
yes |
|
PersonDocument
-
content_type
string
- Its type.
-
document_type
string
- What the document is, as the Documents tab's Type.
-
documentable_id
string, required
- The client or caregiver.
-
documentable_type
string, required
- Whose file it is on.
-
expiry_date
string
- When it expires, if it does.
-
file_name
string, required
- The file's name.
-
file_size
integer
- Its size in bytes.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was uploaded.
-
notes
string
- The tab's notes.
-
paper_form_type
string
- A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type.
-
record_date
string
- A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type.
-
scan_status
string, required
- The virus scan's verdict; only a clean file can be downloaded.
-
updated_at
string
- When it last changed.
-
uploaded_by
string
- Who uploaded it.
| Field |
Type |
Required |
Description |
| content_type |
string |
no |
Its type. |
| document_type |
string |
no |
What the document is, as the Documents tab's Type. |
| documentable_id |
string |
yes |
The client or caregiver. |
| documentable_type |
string |
yes |
Whose file it is on. |
| expiry_date |
string |
no |
When it expires, if it does. |
| file_name |
string |
yes |
The file's name. |
| file_size |
integer |
no |
Its size in bytes. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was uploaded. |
| notes |
string |
no |
The tab's notes. |
| paper_form_type |
string |
no |
A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type. |
| record_date |
string |
no |
A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type. |
| scan_status |
string |
yes |
The virus scan's verdict; only a clean file can be downloaded. |
| updated_at |
string |
no |
When it last changed. |
| uploaded_by |
string |
no |
Who uploaded it. |
PersonDocumentList
-
data
array of object, required
-
data[].content_type
string
- Its type.
-
data[].document_type
string
- What the document is, as the Documents tab's Type.
-
data[].documentable_id
string, required
- The client or caregiver.
-
data[].documentable_type
string, required
- Whose file it is on.
-
data[].expiry_date
string
- When it expires, if it does.
-
data[].file_name
string, required
- The file's name.
-
data[].file_size
integer
- Its size in bytes.
-
data[].id
string, required
- The record's id.
-
data[].inserted_at
string
- When it was uploaded.
-
data[].notes
string
- The tab's notes.
-
data[].paper_form_type
string
- A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type.
-
data[].record_date
string
- A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type.
-
data[].scan_status
string, required
- The virus scan's verdict; only a clean file can be downloaded.
-
data[].updated_at
string
- When it last changed.
-
data[].uploaded_by
string
- Who uploaded it.
-
limit
integer, required
-
offset
integer, required
-
total
integer, required
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].content_type |
string |
no |
Its type. |
| data[].document_type |
string |
no |
What the document is, as the Documents tab's Type. |
| data[].documentable_id |
string |
yes |
The client or caregiver. |
| data[].documentable_type |
string |
yes |
Whose file it is on. |
| data[].expiry_date |
string |
no |
When it expires, if it does. |
| data[].file_name |
string |
yes |
The file's name. |
| data[].file_size |
integer |
no |
Its size in bytes. |
| data[].id |
string |
yes |
The record's id. |
| data[].inserted_at |
string |
no |
When it was uploaded. |
| data[].notes |
string |
no |
The tab's notes. |
| data[].paper_form_type |
string |
no |
A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type. |
| data[].record_date |
string |
no |
A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type. |
| data[].scan_status |
string |
yes |
The virus scan's verdict; only a clean file can be downloaded. |
| data[].updated_at |
string |
no |
When it last changed. |
| data[].uploaded_by |
string |
no |
Who uploaded it. |
| limit |
integer |
yes |
|
| offset |
integer |
yes |
|
| total |
integer |
yes |
|
PersonDocumentUpdate
-
document_type
string
- What the document is, as the Documents tab's Type.
-
expiry_date
string
- When it expires.
-
notes
string
- Notes, as the tab's Notes.
-
paper_form_type
string
- A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type.
-
record_date
string
- A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type.
| Field |
Type |
Required |
Description |
| document_type |
string |
no |
What the document is, as the Documents tab's Type. |
| expiry_date |
string |
no |
When it expires. |
| notes |
string |
no |
Notes, as the tab's Notes. |
| paper_form_type |
string |
no |
A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type. |
| record_date |
string |
no |
A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type. |
PersonDocumentUpload
-
content_type
string
- Its type; null or left out reads the extension's.
-
document_type
string
- What the document is, as the Documents tab's Type.
-
expiry_date
string
- When it expires.
-
file_base64
string, required
- The file's bytes, base64.
-
file_name
string, required
- Its name, with its extension.
-
notes
string
- Notes, as the tab's Notes.
-
paper_form_type
string
- A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type.
-
record_date
string
- A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type.
| Field |
Type |
Required |
Description |
| content_type |
string |
no |
Its type; null or left out reads the extension's. |
| document_type |
string |
no |
What the document is, as the Documents tab's Type. |
| expiry_date |
string |
no |
When it expires. |
| file_base64 |
string |
yes |
The file's bytes, base64. |
| file_name |
string |
yes |
Its name, with its extension. |
| notes |
string |
no |
Notes, as the tab's Notes. |
| paper_form_type |
string |
no |
A legacy_paper scan's form type, as the paper archive files it (US-101.7); other when not given. Ignored on any other document_type. |
| record_date |
string |
no |
A legacy_paper scan's date on the paper; a monthly form's is its month's first day. Ignored on any other document_type. |
PhoneCareLogDismiss
-
reason
string
- Why it can be dismissed, 3 to 500 characters, as the screen asks.
| Field |
Type |
Required |
Description |
| reason |
string |
no |
Why it can be dismissed, 3 to 500 characters, as the screen asks. |
PhoneCareLogException
-
attestation_skip_reason
string
- Why the phone attestation did not become a signature, if it did not.
-
caregiver_id
string, required
- The caregiver.
-
client_id
string, required
- The client.
-
finished_at
string
- When the call finished the day.
-
id
string, required
- The record's id.
-
reasons
array of string, required
- Why it is listed: no_tasks (No tasks entered); call_ended_early (Call ended before finishing); attestation_missing (No client confirmation); attestation_interrupted (Attestation interrupted); attestation_empty (Client recording silent); attestation_unverified (Recording not linked to this log); attestation_not_saved (Client recording could not be saved)
-
record_state
string, required
- The care log's record state; a voided one is never listed.
-
recording_document_id
string
- The client's kept recording, a voice_attestation document, if any.
-
service_date
string, required
- The day.
-
service_type
string, required
- The service.
-
shift_number
integer, required
- The shift.
-
visit_id
string
- The Visit the call clocked.
| Field |
Type |
Required |
Description |
| attestation_skip_reason |
string |
no |
Why the phone attestation did not become a signature, if it did not. |
| caregiver_id |
string |
yes |
The caregiver. |
| client_id |
string |
yes |
The client. |
| finished_at |
string |
no |
When the call finished the day. |
| id |
string |
yes |
The record's id. |
| reasons |
array of string |
yes |
Why it is listed: no_tasks (No tasks entered); call_ended_early (Call ended before finishing); attestation_missing (No client confirmation); attestation_interrupted (Attestation interrupted); attestation_empty (Client recording silent); attestation_unverified (Recording not linked to this log); attestation_not_saved (Client recording could not be saved) |
| record_state |
string |
yes |
The care log's record state; a voided one is never listed. |
| recording_document_id |
string |
no |
The client's kept recording, a voice_attestation document, if any. |
| service_date |
string |
yes |
The day. |
| service_type |
string |
yes |
The service. |
| shift_number |
integer |
yes |
The shift. |
| visit_id |
string |
no |
The Visit the call clocked. |
PhoneCareLogExceptionPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of PhoneCareLogException, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of PhoneCareLogException |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Plan of carePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of PlanOfCare, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of PlanOfCare |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
PlanOfCare
A client's Plan of Care for one service, with its tasks. Creating one makes the client's current plan for that billing line past, as on the web (an LRP Homemaker plan is its own line).
-
authorization_id
string
- The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id.
-
billing_code_hmkr
string
- The homemaker billing code.
-
billing_code_ihss
string
- The IHSS billing code.
-
billing_code_pcp
string
- The personal care billing code.
-
case_manager_name
string
- The client's case manager.
-
client_id
string, required
- The client the plan is for.
-
cm_authorized_hma_hours_weekly
string
- Health maintenance hours a week the case manager authorized.
-
effective_date
string
-
end_date
string
-
extra_hours_weekly_hma
string
- Extra health maintenance hours a week.
-
extra_hours_weekly_homemaker
string
- Extra homemaker hours a week.
-
extra_hours_weekly_personal_care
string
- Extra personal care hours a week.
-
extra_travel_hours_weekly_hma
string
- Travel hours a week with the extra health maintenance hours.
-
extra_travel_hours_weekly_homemaker
string
- Travel hours a week with the extra homemaker hours.
-
extra_travel_hours_weekly_personal_care
string
- Travel hours a week with the extra personal care hours.
-
extra_weeks_hma
string
- Weeks the extra health maintenance hours run.
-
extra_weeks_homemaker
string
- Weeks the extra homemaker hours run.
-
extra_weeks_personal_care
string
- Weeks the extra personal care hours run.
-
flag_bi
boolean
- Brain injury flag.
-
flag_mi
boolean
- Mental illness flag.
-
flag_plwa
boolean
- PLWA flag.
-
hma_hours_weekly
string
- Health maintenance hours a week.
-
homemaker_hours_weekly
string
- Homemaker hours a week.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the plan was created.
-
lrp
boolean
- A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp.
-
lrp_hours_weekly
string
- Hours a week a legally responsible person provides.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
modifiers_hmkr
array of string
- Homemaker modifiers.
-
modifiers_ihss
array of string
- IHSS modifiers.
-
modifiers_pcp
array of string
- Personal care modifiers.
-
notes
string
- Free text on the plan.
-
par_effective_date
string
-
par_expiry_date
string
-
par_number
string
- The PAR the plan works under.
-
par_units_hma
integer
- PAR units authorized for health maintenance.
-
par_units_homemaker
integer
- PAR units authorized for homemaker.
-
par_units_personal_care
integer
- PAR units authorized for personal care.
-
personal_care_hours_weekly
string
- Personal care hours a week.
-
record_state
string
- The signed record's state: draft until the first signature, then signed (locked: changed only by revising it), amended (an addendum was signed) or voided (revised into a new draft). signing_complete says whether every required line is signed: the client or representative, and the supervisor.
-
replaces_id
string
- The voided plan this draft was revised from, if any.
-
service_type
string
- The plan's one service.
-
signatures
array of object
- The live signatures, oldest first, without their images. Drawing is done on a device, on the plan page.
-
signatures[].method
string, required
- How it was signed: drawn, initials, typed and so on.
-
signatures[].role
string, required
- The line signed: client, or representative in the client's place, and supervisor.
-
signatures[].signed_at
string, required
- When the line was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
status
string, required
-
tasks
array of PlanOfCareTask
- The plan's tasks.
-
travel_hours_weekly_hma
string
- Health maintenance travel hours a week.
-
travel_hours_weekly_homemaker
string
- Homemaker travel hours a week.
-
travel_hours_weekly_personal_care
string
- Personal care travel hours a week.
-
updated_at
string
- When the plan last changed.
-
warnings
array of object
- What a save saved anyway, in this order: over_authorized when an update lowers a task below what the client's Work Orders still schedule; then care_planning.task_hours_over_authorization, one per service whose tasks add up to more hours a week than the plan authorizes, on a create or an update. Empty otherwise, and on a read.
-
warnings[].code
string
- The warning.
-
warnings[].message
string
- What it means.
| Field |
Type |
Required |
Description |
| authorization_id |
string |
no |
The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id. |
| billing_code_hmkr |
string |
no |
The homemaker billing code. |
| billing_code_ihss |
string |
no |
The IHSS billing code. |
| billing_code_pcp |
string |
no |
The personal care billing code. |
| case_manager_name |
string |
no |
The client's case manager. |
| client_id |
string |
yes |
The client the plan is for. |
| cm_authorized_hma_hours_weekly |
string |
no |
Health maintenance hours a week the case manager authorized. |
| effective_date |
string |
no |
|
| end_date |
string |
no |
|
| extra_hours_weekly_hma |
string |
no |
Extra health maintenance hours a week. |
| extra_hours_weekly_homemaker |
string |
no |
Extra homemaker hours a week. |
| extra_hours_weekly_personal_care |
string |
no |
Extra personal care hours a week. |
| extra_travel_hours_weekly_hma |
string |
no |
Travel hours a week with the extra health maintenance hours. |
| extra_travel_hours_weekly_homemaker |
string |
no |
Travel hours a week with the extra homemaker hours. |
| extra_travel_hours_weekly_personal_care |
string |
no |
Travel hours a week with the extra personal care hours. |
| extra_weeks_hma |
string |
no |
Weeks the extra health maintenance hours run. |
| extra_weeks_homemaker |
string |
no |
Weeks the extra homemaker hours run. |
| extra_weeks_personal_care |
string |
no |
Weeks the extra personal care hours run. |
| flag_bi |
boolean |
no |
Brain injury flag. |
| flag_mi |
boolean |
no |
Mental illness flag. |
| flag_plwa |
boolean |
no |
PLWA flag. |
| hma_hours_weekly |
string |
no |
Health maintenance hours a week. |
| homemaker_hours_weekly |
string |
no |
Homemaker hours a week. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the plan was created. |
| lrp |
boolean |
no |
A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp. |
| lrp_hours_weekly |
string |
no |
Hours a week a legally responsible person provides. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| modifiers_hmkr |
array of string |
no |
Homemaker modifiers. |
| modifiers_ihss |
array of string |
no |
IHSS modifiers. |
| modifiers_pcp |
array of string |
no |
Personal care modifiers. |
| notes |
string |
no |
Free text on the plan. |
| par_effective_date |
string |
no |
|
| par_expiry_date |
string |
no |
|
| par_number |
string |
no |
The PAR the plan works under. |
| par_units_hma |
integer |
no |
PAR units authorized for health maintenance. |
| par_units_homemaker |
integer |
no |
PAR units authorized for homemaker. |
| par_units_personal_care |
integer |
no |
PAR units authorized for personal care. |
| personal_care_hours_weekly |
string |
no |
Personal care hours a week. |
| record_state |
string |
no |
The signed record's state: draft until the first signature, then signed (locked: changed only by revising it), amended (an addendum was signed) or voided (revised into a new draft). signing_complete says whether every required line is signed: the client or representative, and the supervisor. |
| replaces_id |
string |
no |
The voided plan this draft was revised from, if any. |
| service_type |
string |
no |
The plan's one service. |
| signatures |
array of object |
no |
The live signatures, oldest first, without their images. Drawing is done on a device, on the plan page. |
| signatures[].method |
string |
yes |
How it was signed: drawn, initials, typed and so on. |
| signatures[].role |
string |
yes |
The line signed: client, or representative in the client's place, and supervisor. |
| signatures[].signed_at |
string |
yes |
When the line was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| status |
string |
yes |
|
| tasks |
array of PlanOfCareTask |
no |
The plan's tasks. |
| travel_hours_weekly_hma |
string |
no |
Health maintenance travel hours a week. |
| travel_hours_weekly_homemaker |
string |
no |
Homemaker travel hours a week. |
| travel_hours_weekly_personal_care |
string |
no |
Personal care travel hours a week. |
| updated_at |
string |
no |
When the plan last changed. |
| warnings |
array of object |
no |
What a save saved anyway, in this order: over_authorized when an update lowers a task below what the client's Work Orders still schedule; then care_planning.task_hours_over_authorization, one per service whose tasks add up to more hours a week than the plan authorizes, on a create or an update. Empty otherwise, and on a read. |
| warnings[].code |
string |
no |
The warning. |
| warnings[].message |
string |
no |
What it means. |
PlanOfCareCreate
A new Plan of Care for one of the agency's clients, with its tasks, all of one service. The client's current plan for that billing line becomes past (lrp true makes a Homemaker plan its own line, beside the regular one). A client_id that is not the agency's answers 422 client_not_found.
-
authorization_id
string
- The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id.
-
billing_code_hmkr
string
- The homemaker billing code.
-
billing_code_ihss
string
- The IHSS billing code.
-
billing_code_pcp
string
- The personal care billing code.
-
case_manager_name
string
- The client's case manager.
-
client_id
string, required
- The client the plan is for.
-
cm_authorized_hma_hours_weekly
string
- Health maintenance hours a week the case manager authorized.
-
effective_date
string, required
-
end_date
string
-
extra_hours_weekly_hma
string
- Extra health maintenance hours a week.
-
extra_hours_weekly_homemaker
string
- Extra homemaker hours a week.
-
extra_hours_weekly_personal_care
string
- Extra personal care hours a week.
-
extra_travel_hours_weekly_hma
string
- Travel hours a week with the extra health maintenance hours.
-
extra_travel_hours_weekly_homemaker
string
- Travel hours a week with the extra homemaker hours.
-
extra_travel_hours_weekly_personal_care
string
- Travel hours a week with the extra personal care hours.
-
extra_weeks_hma
string
- Weeks the extra health maintenance hours run.
-
extra_weeks_homemaker
string
- Weeks the extra homemaker hours run.
-
extra_weeks_personal_care
string
- Weeks the extra personal care hours run.
-
flag_bi
boolean
- Brain injury flag.
-
flag_mi
boolean
- Mental illness flag.
-
flag_plwa
boolean
- PLWA flag.
-
hma_hours_weekly
string
- Health maintenance hours a week.
-
homemaker_hours_weekly
string
- Homemaker hours a week.
-
lrp
boolean
- A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp.
-
lrp_hours_weekly
string
- Hours a week a legally responsible person provides.
-
modifiers_hmkr
array of string
- Homemaker modifiers.
-
modifiers_ihss
array of string
- IHSS modifiers.
-
modifiers_pcp
array of string
- Personal care modifiers.
-
notes
string
- Free text on the plan.
-
par_effective_date
string
-
par_expiry_date
string
-
par_number
string
- The PAR the plan works under.
-
par_units_hma
integer
- PAR units authorized for health maintenance.
-
par_units_homemaker
integer
- PAR units authorized for homemaker.
-
par_units_personal_care
integer
- PAR units authorized for personal care.
-
personal_care_hours_weekly
string
- Personal care hours a week.
-
service_type
string
- The plan's service; derived from the tasks when they share one.
-
tasks
array of object, required
- The plan's tasks. A create or update replaces them with the list sent.
-
tasks[].ame_flag
boolean
- Whether the task is AME.
-
tasks[].justification
string
- Why the task needs the time it takes.
-
tasks[].minutes_fri
integer
- Minutes on that weekday (minutes_fri).
-
tasks[].minutes_mon
integer
- Minutes on that weekday (minutes_mon).
-
tasks[].minutes_per_task
number
- Minutes each time.
-
tasks[].minutes_sat
integer
- Minutes on that weekday (minutes_sat).
-
tasks[].minutes_sun
integer
- Minutes on that weekday (minutes_sun).
-
tasks[].minutes_thu
integer
- Minutes on that weekday (minutes_thu).
-
tasks[].minutes_tue
integer
- Minutes on that weekday (minutes_tue).
-
tasks[].minutes_wed
integer
- Minutes on that weekday (minutes_wed).
-
tasks[].norms
string
- The norms that apply to the task.
-
tasks[].shift_number
integer
- The shift, 1 to 4.
-
tasks[].sort_order
integer
- Where the task sits in the plan.
-
tasks[].task_category
string
- The service the task belongs to.
-
tasks[].task_name
string
- What the caregiver does; free text, as on the web.
-
tasks[].times_per_week
integer
- Times a week.
-
travel_hours_weekly_hma
string
- Health maintenance travel hours a week.
-
travel_hours_weekly_homemaker
string
- Homemaker travel hours a week.
-
travel_hours_weekly_personal_care
string
- Personal care travel hours a week.
| Field |
Type |
Required |
Description |
| authorization_id |
string |
no |
The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id. |
| billing_code_hmkr |
string |
no |
The homemaker billing code. |
| billing_code_ihss |
string |
no |
The IHSS billing code. |
| billing_code_pcp |
string |
no |
The personal care billing code. |
| case_manager_name |
string |
no |
The client's case manager. |
| client_id |
string |
yes |
The client the plan is for. |
| cm_authorized_hma_hours_weekly |
string |
no |
Health maintenance hours a week the case manager authorized. |
| effective_date |
string |
yes |
|
| end_date |
string |
no |
|
| extra_hours_weekly_hma |
string |
no |
Extra health maintenance hours a week. |
| extra_hours_weekly_homemaker |
string |
no |
Extra homemaker hours a week. |
| extra_hours_weekly_personal_care |
string |
no |
Extra personal care hours a week. |
| extra_travel_hours_weekly_hma |
string |
no |
Travel hours a week with the extra health maintenance hours. |
| extra_travel_hours_weekly_homemaker |
string |
no |
Travel hours a week with the extra homemaker hours. |
| extra_travel_hours_weekly_personal_care |
string |
no |
Travel hours a week with the extra personal care hours. |
| extra_weeks_hma |
string |
no |
Weeks the extra health maintenance hours run. |
| extra_weeks_homemaker |
string |
no |
Weeks the extra homemaker hours run. |
| extra_weeks_personal_care |
string |
no |
Weeks the extra personal care hours run. |
| flag_bi |
boolean |
no |
Brain injury flag. |
| flag_mi |
boolean |
no |
Mental illness flag. |
| flag_plwa |
boolean |
no |
PLWA flag. |
| hma_hours_weekly |
string |
no |
Health maintenance hours a week. |
| homemaker_hours_weekly |
string |
no |
Homemaker hours a week. |
| lrp |
boolean |
no |
A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp. |
| lrp_hours_weekly |
string |
no |
Hours a week a legally responsible person provides. |
| modifiers_hmkr |
array of string |
no |
Homemaker modifiers. |
| modifiers_ihss |
array of string |
no |
IHSS modifiers. |
| modifiers_pcp |
array of string |
no |
Personal care modifiers. |
| notes |
string |
no |
Free text on the plan. |
| par_effective_date |
string |
no |
|
| par_expiry_date |
string |
no |
|
| par_number |
string |
no |
The PAR the plan works under. |
| par_units_hma |
integer |
no |
PAR units authorized for health maintenance. |
| par_units_homemaker |
integer |
no |
PAR units authorized for homemaker. |
| par_units_personal_care |
integer |
no |
PAR units authorized for personal care. |
| personal_care_hours_weekly |
string |
no |
Personal care hours a week. |
| service_type |
string |
no |
The plan's service; derived from the tasks when they share one. |
| tasks |
array of object |
yes |
The plan's tasks. A create or update replaces them with the list sent. |
| tasks[].ame_flag |
boolean |
no |
Whether the task is AME. |
| tasks[].justification |
string |
no |
Why the task needs the time it takes. |
| tasks[].minutes_fri |
integer |
no |
Minutes on that weekday (minutes_fri). |
| tasks[].minutes_mon |
integer |
no |
Minutes on that weekday (minutes_mon). |
| tasks[].minutes_per_task |
number |
no |
Minutes each time. |
| tasks[].minutes_sat |
integer |
no |
Minutes on that weekday (minutes_sat). |
| tasks[].minutes_sun |
integer |
no |
Minutes on that weekday (minutes_sun). |
| tasks[].minutes_thu |
integer |
no |
Minutes on that weekday (minutes_thu). |
| tasks[].minutes_tue |
integer |
no |
Minutes on that weekday (minutes_tue). |
| tasks[].minutes_wed |
integer |
no |
Minutes on that weekday (minutes_wed). |
| tasks[].norms |
string |
no |
The norms that apply to the task. |
| tasks[].shift_number |
integer |
no |
The shift, 1 to 4. |
| tasks[].sort_order |
integer |
no |
Where the task sits in the plan. |
| tasks[].task_category |
string |
no |
The service the task belongs to. |
| tasks[].task_name |
string |
no |
What the caregiver does; free text, as on the web. |
| tasks[].times_per_week |
integer |
no |
Times a week. |
| travel_hours_weekly_hma |
string |
no |
Health maintenance travel hours a week. |
| travel_hours_weekly_homemaker |
string |
no |
Homemaker travel hours a week. |
| travel_hours_weekly_personal_care |
string |
no |
Personal care travel hours a week. |
PlanOfCareRevision
-
reason
string, required
- Why the signed plan is revised, 3 to 1000 characters. It is kept with the voided original.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why the signed plan is revised, 3 to 1000 characters. It is kept with the voided original. |
PlanOfCareSignature
-
method
string, required
- How it was signed: drawn, initials, typed and so on.
-
role
string, required
- The line signed: client, or representative in the client's place, and supervisor.
-
signed_at
string, required
- When the line was signed.
-
signer_name
string
- The name the line is signed under.
| Field |
Type |
Required |
Description |
| method |
string |
yes |
How it was signed: drawn, initials, typed and so on. |
| role |
string |
yes |
The line signed: client, or representative in the client's place, and supervisor. |
| signed_at |
string |
yes |
When the line was signed. |
| signer_name |
string |
no |
The name the line is signed under. |
PlanOfCareSupervisorSignature
-
signer_name
string, required
- The supervisor's name as the signature records it; the credential's user is the signer.
| Field |
Type |
Required |
Description |
| signer_name |
string |
yes |
The supervisor's name as the signature records it; the credential's user is the signer. |
PlanOfCareTask
A task on a Plan of Care.
-
ame_flag
boolean
- Whether the task is AME.
-
id
string
- The record's id.
-
justification
string
- Why the task needs the time it takes.
-
minutes_fri
integer
- Minutes on that weekday (minutes_fri).
-
minutes_mon
integer
- Minutes on that weekday (minutes_mon).
-
minutes_per_task
string
- Minutes each time.
-
minutes_per_week
string
- Minutes a week, computed by the plan.
-
minutes_sat
integer
- Minutes on that weekday (minutes_sat).
-
minutes_sun
integer
- Minutes on that weekday (minutes_sun).
-
minutes_thu
integer
- Minutes on that weekday (minutes_thu).
-
minutes_tue
integer
- Minutes on that weekday (minutes_tue).
-
minutes_wed
integer
- Minutes on that weekday (minutes_wed).
-
norms
string
- The norms that apply to the task.
-
shift_number
integer
- The shift, 1 to 4.
-
sort_order
integer
- Where the task sits in the plan.
-
task_category
string
- The service the task belongs to.
-
task_name
string
- What the caregiver does; free text, as on the web.
-
times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| ame_flag |
boolean |
no |
Whether the task is AME. |
| id |
string |
no |
The record's id. |
| justification |
string |
no |
Why the task needs the time it takes. |
| minutes_fri |
integer |
no |
Minutes on that weekday (minutes_fri). |
| minutes_mon |
integer |
no |
Minutes on that weekday (minutes_mon). |
| minutes_per_task |
string |
no |
Minutes each time. |
| minutes_per_week |
string |
no |
Minutes a week, computed by the plan. |
| minutes_sat |
integer |
no |
Minutes on that weekday (minutes_sat). |
| minutes_sun |
integer |
no |
Minutes on that weekday (minutes_sun). |
| minutes_thu |
integer |
no |
Minutes on that weekday (minutes_thu). |
| minutes_tue |
integer |
no |
Minutes on that weekday (minutes_tue). |
| minutes_wed |
integer |
no |
Minutes on that weekday (minutes_wed). |
| norms |
string |
no |
The norms that apply to the task. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| sort_order |
integer |
no |
Where the task sits in the plan. |
| task_category |
string |
no |
The service the task belongs to. |
| task_name |
string |
no |
What the caregiver does; free text, as on the web. |
| times_per_week |
integer |
no |
Times a week. |
PlanOfCareTaskInput
A task on a Plan of Care, as a create or update takes it.
-
ame_flag
boolean
- Whether the task is AME.
-
justification
string
- Why the task needs the time it takes.
-
minutes_fri
integer
- Minutes on that weekday (minutes_fri).
-
minutes_mon
integer
- Minutes on that weekday (minutes_mon).
-
minutes_per_task
number
- Minutes each time.
-
minutes_sat
integer
- Minutes on that weekday (minutes_sat).
-
minutes_sun
integer
- Minutes on that weekday (minutes_sun).
-
minutes_thu
integer
- Minutes on that weekday (minutes_thu).
-
minutes_tue
integer
- Minutes on that weekday (minutes_tue).
-
minutes_wed
integer
- Minutes on that weekday (minutes_wed).
-
norms
string
- The norms that apply to the task.
-
shift_number
integer
- The shift, 1 to 4.
-
sort_order
integer
- Where the task sits in the plan.
-
task_category
string
- The service the task belongs to.
-
task_name
string
- What the caregiver does; free text, as on the web.
-
times_per_week
integer
- Times a week.
| Field |
Type |
Required |
Description |
| ame_flag |
boolean |
no |
Whether the task is AME. |
| justification |
string |
no |
Why the task needs the time it takes. |
| minutes_fri |
integer |
no |
Minutes on that weekday (minutes_fri). |
| minutes_mon |
integer |
no |
Minutes on that weekday (minutes_mon). |
| minutes_per_task |
number |
no |
Minutes each time. |
| minutes_sat |
integer |
no |
Minutes on that weekday (minutes_sat). |
| minutes_sun |
integer |
no |
Minutes on that weekday (minutes_sun). |
| minutes_thu |
integer |
no |
Minutes on that weekday (minutes_thu). |
| minutes_tue |
integer |
no |
Minutes on that weekday (minutes_tue). |
| minutes_wed |
integer |
no |
Minutes on that weekday (minutes_wed). |
| norms |
string |
no |
The norms that apply to the task. |
| shift_number |
integer |
no |
The shift, 1 to 4. |
| sort_order |
integer |
no |
Where the task sits in the plan. |
| task_category |
string |
no |
The service the task belongs to. |
| task_name |
string |
no |
What the caregiver does; free text, as on the web. |
| times_per_week |
integer |
no |
Times a week. |
PlanOfCareUpdate
The plan fields to change, and its tasks. A task list sent replaces the plan's tasks; leave it out to keep them. Lowering a task below what the client's Work Orders still schedule is saved with an over_authorized warning.
-
authorization_id
string
- The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id.
-
billing_code_hmkr
string
- The homemaker billing code.
-
billing_code_ihss
string
- The IHSS billing code.
-
billing_code_pcp
string
- The personal care billing code.
-
case_manager_name
string
- The client's case manager.
-
cm_authorized_hma_hours_weekly
string
- Health maintenance hours a week the case manager authorized.
-
effective_date
string
-
end_date
string
-
extra_hours_weekly_hma
string
- Extra health maintenance hours a week.
-
extra_hours_weekly_homemaker
string
- Extra homemaker hours a week.
-
extra_hours_weekly_personal_care
string
- Extra personal care hours a week.
-
extra_travel_hours_weekly_hma
string
- Travel hours a week with the extra health maintenance hours.
-
extra_travel_hours_weekly_homemaker
string
- Travel hours a week with the extra homemaker hours.
-
extra_travel_hours_weekly_personal_care
string
- Travel hours a week with the extra personal care hours.
-
extra_weeks_hma
string
- Weeks the extra health maintenance hours run.
-
extra_weeks_homemaker
string
- Weeks the extra homemaker hours run.
-
extra_weeks_personal_care
string
- Weeks the extra personal care hours run.
-
flag_bi
boolean
- Brain injury flag.
-
flag_mi
boolean
- Mental illness flag.
-
flag_plwa
boolean
- PLWA flag.
-
hma_hours_weekly
string
- Health maintenance hours a week.
-
homemaker_hours_weekly
string
- Homemaker hours a week.
-
lrp
boolean
- A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp.
-
lrp_hours_weekly
string
- Hours a week a legally responsible person provides.
-
modifiers_hmkr
array of string
- Homemaker modifiers.
-
modifiers_ihss
array of string
- IHSS modifiers.
-
modifiers_pcp
array of string
- Personal care modifiers.
-
notes
string
- Free text on the plan.
-
par_effective_date
string
-
par_expiry_date
string
-
par_number
string
- The PAR the plan works under.
-
par_units_hma
integer
- PAR units authorized for health maintenance.
-
par_units_homemaker
integer
- PAR units authorized for homemaker.
-
par_units_personal_care
integer
- PAR units authorized for personal care.
-
personal_care_hours_weekly
string
- Personal care hours a week.
-
tasks
array of object
- The plan's tasks. A create or update replaces them with the list sent.
-
tasks[].ame_flag
boolean
- Whether the task is AME.
-
tasks[].justification
string
- Why the task needs the time it takes.
-
tasks[].minutes_fri
integer
- Minutes on that weekday (minutes_fri).
-
tasks[].minutes_mon
integer
- Minutes on that weekday (minutes_mon).
-
tasks[].minutes_per_task
number
- Minutes each time.
-
tasks[].minutes_sat
integer
- Minutes on that weekday (minutes_sat).
-
tasks[].minutes_sun
integer
- Minutes on that weekday (minutes_sun).
-
tasks[].minutes_thu
integer
- Minutes on that weekday (minutes_thu).
-
tasks[].minutes_tue
integer
- Minutes on that weekday (minutes_tue).
-
tasks[].minutes_wed
integer
- Minutes on that weekday (minutes_wed).
-
tasks[].norms
string
- The norms that apply to the task.
-
tasks[].shift_number
integer
- The shift, 1 to 4.
-
tasks[].sort_order
integer
- Where the task sits in the plan.
-
tasks[].task_category
string
- The service the task belongs to.
-
tasks[].task_name
string
- What the caregiver does; free text, as on the web.
-
tasks[].times_per_week
integer
- Times a week.
-
travel_hours_weekly_hma
string
- Health maintenance travel hours a week.
-
travel_hours_weekly_homemaker
string
- Homemaker travel hours a week.
-
travel_hours_weekly_personal_care
string
- Personal care travel hours a week.
| Field |
Type |
Required |
Description |
| authorization_id |
string |
no |
The service authorization (PAR) the plan works under: one of this client's, not deleted. Null or blank unlinks it; another id answers 422 naming authorization_id. |
| billing_code_hmkr |
string |
no |
The homemaker billing code. |
| billing_code_ihss |
string |
no |
The IHSS billing code. |
| billing_code_pcp |
string |
no |
The personal care billing code. |
| case_manager_name |
string |
no |
The client's case manager. |
| cm_authorized_hma_hours_weekly |
string |
no |
Health maintenance hours a week the case manager authorized. |
| effective_date |
string |
no |
|
| end_date |
string |
no |
|
| extra_hours_weekly_hma |
string |
no |
Extra health maintenance hours a week. |
| extra_hours_weekly_homemaker |
string |
no |
Extra homemaker hours a week. |
| extra_hours_weekly_personal_care |
string |
no |
Extra personal care hours a week. |
| extra_travel_hours_weekly_hma |
string |
no |
Travel hours a week with the extra health maintenance hours. |
| extra_travel_hours_weekly_homemaker |
string |
no |
Travel hours a week with the extra homemaker hours. |
| extra_travel_hours_weekly_personal_care |
string |
no |
Travel hours a week with the extra personal care hours. |
| extra_weeks_hma |
string |
no |
Weeks the extra health maintenance hours run. |
| extra_weeks_homemaker |
string |
no |
Weeks the extra homemaker hours run. |
| extra_weeks_personal_care |
string |
no |
Weeks the extra personal care hours run. |
| flag_bi |
boolean |
no |
Brain injury flag. |
| flag_mi |
boolean |
no |
Mental illness flag. |
| flag_plwa |
boolean |
no |
PLWA flag. |
| hma_hours_weekly |
string |
no |
Health maintenance hours a week. |
| homemaker_hours_weekly |
string |
no |
Homemaker hours a week. |
| lrp |
boolean |
no |
A legally responsible person provides this Homemaker plan's care (US-83.6): it is its own billing line, billed with HA, and stays current beside the client's regular Homemaker plan. False when left out of a create; only a Homemaker plan may set it, and only on create: a PATCH that changes it answers 422 naming lrp. |
| lrp_hours_weekly |
string |
no |
Hours a week a legally responsible person provides. |
| modifiers_hmkr |
array of string |
no |
Homemaker modifiers. |
| modifiers_ihss |
array of string |
no |
IHSS modifiers. |
| modifiers_pcp |
array of string |
no |
Personal care modifiers. |
| notes |
string |
no |
Free text on the plan. |
| par_effective_date |
string |
no |
|
| par_expiry_date |
string |
no |
|
| par_number |
string |
no |
The PAR the plan works under. |
| par_units_hma |
integer |
no |
PAR units authorized for health maintenance. |
| par_units_homemaker |
integer |
no |
PAR units authorized for homemaker. |
| par_units_personal_care |
integer |
no |
PAR units authorized for personal care. |
| personal_care_hours_weekly |
string |
no |
Personal care hours a week. |
| tasks |
array of object |
no |
The plan's tasks. A create or update replaces them with the list sent. |
| tasks[].ame_flag |
boolean |
no |
Whether the task is AME. |
| tasks[].justification |
string |
no |
Why the task needs the time it takes. |
| tasks[].minutes_fri |
integer |
no |
Minutes on that weekday (minutes_fri). |
| tasks[].minutes_mon |
integer |
no |
Minutes on that weekday (minutes_mon). |
| tasks[].minutes_per_task |
number |
no |
Minutes each time. |
| tasks[].minutes_sat |
integer |
no |
Minutes on that weekday (minutes_sat). |
| tasks[].minutes_sun |
integer |
no |
Minutes on that weekday (minutes_sun). |
| tasks[].minutes_thu |
integer |
no |
Minutes on that weekday (minutes_thu). |
| tasks[].minutes_tue |
integer |
no |
Minutes on that weekday (minutes_tue). |
| tasks[].minutes_wed |
integer |
no |
Minutes on that weekday (minutes_wed). |
| tasks[].norms |
string |
no |
The norms that apply to the task. |
| tasks[].shift_number |
integer |
no |
The shift, 1 to 4. |
| tasks[].sort_order |
integer |
no |
Where the task sits in the plan. |
| tasks[].task_category |
string |
no |
The service the task belongs to. |
| tasks[].task_name |
string |
no |
What the caregiver does; free text, as on the web. |
| tasks[].times_per_week |
integer |
no |
Times a week. |
| travel_hours_weekly_hma |
string |
no |
Health maintenance travel hours a week. |
| travel_hours_weekly_homemaker |
string |
no |
Homemaker travel hours a week. |
| travel_hours_weekly_personal_care |
string |
no |
Personal care travel hours a week. |
PlanServiceMinutes
-
authorized_minutes
integer, required
-
rounding
string, required
-
service
string, required
-
task_minutes
integer, required
| Field |
Type |
Required |
Description |
| authorized_minutes |
integer |
yes |
|
| rounding |
string |
yes |
|
| service |
string |
yes |
|
| task_minutes |
integer |
yes |
|
Prospect
Someone in the agency's pipeline: a potential client or a potential employee. Converting one at onboarding makes the client or caregiver and links it here.
-
address
string
- Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion.
-
availability
string
- Employee: when they can work.
-
contact_name
string
- Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion.
-
contact_notes
string
- Notes from contacting them.
-
contact_phone
string
- Client: the contact person's 10-digit phone.
-
converted_at
string
- When it was converted (UTC).
-
converted_to_id
string
- The client or caregiver it was converted to.
-
converted_to_type
string
- What it was converted to.
-
email
string
- Email address.
-
employee_comments
string
- Employee: comments.
-
first_name
string, required
- First name.
-
has_experience
boolean
- Employee: whether they have care experience.
-
has_vehicle
boolean
- Employee: whether they have a vehicle.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was added.
-
insurance_type
string
- Client: their coverage.
-
languages
array of string
- Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion.
-
last_name
string, required
- Last name.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
medicaid_id
string
- Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion.
-
next_follow_up_date
string
- When to follow up next.
-
phone
string
- Phone number.
-
physical_restrictions
string
- Employee: physical restrictions.
-
prospect_type
string, required
- A potential client or a potential employee.
-
referral_source
string
- Client: who referred them.
-
service_needs
string
- Client: what services they need.
-
source
string
- How they found the agency.
-
status
string, required
- Where they are in the pipeline.
-
updated_at
string
- When it last changed.
-
working_area
string
- Employee: where they can work.
| Field |
Type |
Required |
Description |
| address |
string |
no |
Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion. |
| availability |
string |
no |
Employee: when they can work. |
| contact_name |
string |
no |
Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion. |
| contact_notes |
string |
no |
Notes from contacting them. |
| contact_phone |
string |
no |
Client: the contact person's 10-digit phone. |
| converted_at |
string |
no |
When it was converted (UTC). |
| converted_to_id |
string |
no |
The client or caregiver it was converted to. |
| converted_to_type |
string |
no |
What it was converted to. |
| email |
string |
no |
Email address. |
| employee_comments |
string |
no |
Employee: comments. |
| first_name |
string |
yes |
First name. |
| has_experience |
boolean |
no |
Employee: whether they have care experience. |
| has_vehicle |
boolean |
no |
Employee: whether they have a vehicle. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was added. |
| insurance_type |
string |
no |
Client: their coverage. |
| languages |
array of string |
no |
Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion. |
| last_name |
string |
yes |
Last name. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| medicaid_id |
string |
no |
Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion. |
| next_follow_up_date |
string |
no |
When to follow up next. |
| phone |
string |
no |
Phone number. |
| physical_restrictions |
string |
no |
Employee: physical restrictions. |
| prospect_type |
string |
yes |
A potential client or a potential employee. |
| referral_source |
string |
no |
Client: who referred them. |
| service_needs |
string |
no |
Client: what services they need. |
| source |
string |
no |
How they found the agency. |
| status |
string |
yes |
Where they are in the pipeline. |
| updated_at |
string |
no |
When it last changed. |
| working_area |
string |
no |
Employee: where they can work. |
ProspectConversion
-
converted_to_id
string, required
- The client or caregiver the prospect became: a new record, or the client already on file it was linked to.
-
converted_to_type
string, required
- What was made.
-
prospect
Prospect, required
-
warnings
array of string, required
- What the conversion did not do as asked: a Medicaid ID left off, an existing client linked, namesakes on file. Usually empty.
| Field |
Type |
Required |
Description |
| converted_to_id |
string |
yes |
The client or caregiver the prospect became: a new record, or the client already on file it was linked to. |
| converted_to_type |
string |
yes |
What was made. |
| prospect |
Prospect |
yes |
|
| warnings |
array of string |
yes |
What the conversion did not do as asked: a Medicaid ID left off, an existing client linked, namesakes on file. Usually empty. |
ProspectConversionInput
-
as
string
- Start onboarding (US-122.23), as the Pipeline page's Start onboarding does: an open caregiver lead at any stage (new to onboarding) is moved to onboarding and becomes a caregiver with status potential, its open-shift responses, alerts and portal devices moving with it; a former employee's re-hire lead sets that caregiver card back to potential instead of making one. A closed lead answers 422 lead_not_open, a client lead 422 not_employee_lead. Send it again with the possible-match answer. Absent: convert at onboarding into an active caregiver or a client.
-
create_new
boolean | array of string
- The answer to a 409 possible_match when the prospect is someone else: a new record is made, and warnings counts the namesakes passed over. A list of record ids names the namesakes the caller was shown, and makes the record only if it names every namesake on file now that the caller can open, and, with hidden_seen, no more than that many on cards it cannot; one filed since (or one the 409 counted in more and did not list) answers 409 possible_match again. true is an explicit "create regardless": the record is made, passing over every namesake on file, including any the caller never saw. false or absent makes nothing.
-
hidden_seen
integer
- With a create_new list: the hidden count of the 409 possible_match it answers, the namesakes on cards the caller cannot open, which are never named. The list then also passes over up to that many of them, as the Pipeline page's "Someone else" does; one more than that (filed since) answers 409 possible_match again. Absent or 0 passes over none.
-
same_person_id
string
- The answer to a 409 possible_match: the id of one of its matches, which is the same person. The prospect is linked to that record and nothing is made. An id that is no longer one of the prospect's namesakes answers 409 possible_match again.
| Field |
Type |
Required |
Description |
| as |
string |
no |
Start onboarding (US-122.23), as the Pipeline page's Start onboarding does: an open caregiver lead at any stage (new to onboarding) is moved to onboarding and becomes a caregiver with status potential, its open-shift responses, alerts and portal devices moving with it; a former employee's re-hire lead sets that caregiver card back to potential instead of making one. A closed lead answers 422 lead_not_open, a client lead 422 not_employee_lead. Send it again with the possible-match answer. Absent: convert at onboarding into an active caregiver or a client. |
| create_new |
boolean | array of string |
no |
The answer to a 409 possible_match when the prospect is someone else: a new record is made, and warnings counts the namesakes passed over. A list of record ids names the namesakes the caller was shown, and makes the record only if it names every namesake on file now that the caller can open, and, with hidden_seen, no more than that many on cards it cannot; one filed since (or one the 409 counted in more and did not list) answers 409 possible_match again. true is an explicit "create regardless": the record is made, passing over every namesake on file, including any the caller never saw. false or absent makes nothing. |
| hidden_seen |
integer |
no |
With a create_new list: the hidden count of the 409 possible_match it answers, the namesakes on cards the caller cannot open, which are never named. The list then also passes over up to that many of them, as the Pipeline page's "Someone else" does; one more than that (filed since) answers 409 possible_match again. Absent or 0 passes over none. |
| same_person_id |
string |
no |
The answer to a 409 possible_match: the id of one of its matches, which is the same person. The prospect is linked to that record and nothing is made. An id that is no longer one of the prospect's namesakes answers 409 possible_match again. |
ProspectCreate
Adds a prospect, as the Pipeline page's New does. first_name, last_name, phone and prospect_type are required.
-
address
string
- Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion.
-
availability
string
- Employee: when they can work.
-
contact_name
string
- Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion.
-
contact_notes
string
- Notes from contacting them.
-
contact_phone
string
- Client: the contact person's 10-digit phone.
-
email
string
- Email address.
-
employee_comments
string
- Employee: comments.
-
first_name
string, required
- First name.
-
has_experience
boolean
- Employee: whether they have care experience.
-
has_vehicle
boolean
- Employee: whether they have a vehicle.
-
insurance_type
string
- Client: their coverage.
-
languages
array of string
- Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion.
-
last_name
string, required
- Last name.
-
medicaid_id
string
- Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion.
-
next_follow_up_date
string
- When to follow up next.
-
phone
string, required
- Phone number.
-
physical_restrictions
string
- Employee: physical restrictions.
-
prospect_type
string, required
- A potential client or a potential employee.
-
referral_source
string
- Client: who referred them.
-
service_needs
string
- Client: what services they need.
-
source
string
- How they found the agency.
-
status
string
- Where they are in the pipeline. Not converted: only POST /api/v1/prospects/{id}/convert converts a prospect, with the client or caregiver it makes.
-
working_area
string
- Employee: where they can work.
| Field |
Type |
Required |
Description |
| address |
string |
no |
Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion. |
| availability |
string |
no |
Employee: when they can work. |
| contact_name |
string |
no |
Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion. |
| contact_notes |
string |
no |
Notes from contacting them. |
| contact_phone |
string |
no |
Client: the contact person's 10-digit phone. |
| email |
string |
no |
Email address. |
| employee_comments |
string |
no |
Employee: comments. |
| first_name |
string |
yes |
First name. |
| has_experience |
boolean |
no |
Employee: whether they have care experience. |
| has_vehicle |
boolean |
no |
Employee: whether they have a vehicle. |
| insurance_type |
string |
no |
Client: their coverage. |
| languages |
array of string |
no |
Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion. |
| last_name |
string |
yes |
Last name. |
| medicaid_id |
string |
no |
Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion. |
| next_follow_up_date |
string |
no |
When to follow up next. |
| phone |
string |
yes |
Phone number. |
| physical_restrictions |
string |
no |
Employee: physical restrictions. |
| prospect_type |
string |
yes |
A potential client or a potential employee. |
| referral_source |
string |
no |
Client: who referred them. |
| service_needs |
string |
no |
Client: what services they need. |
| source |
string |
no |
How they found the agency. |
| status |
string |
no |
Where they are in the pipeline. Not converted: only POST /api/v1/prospects/{id}/convert converts a prospect, with the client or caregiver it makes. |
| working_area |
string |
no |
Employee: where they can work. |
ProspectInput
Send only the fields to change, with the lock_version read. A status moves only along the pipeline (new → contacted → interested → interviewing → onboarding; declined or archived back to new); converted is reached only by POST /api/v1/prospects/{id}/convert, never sent as a status (a create or update sending it answers 422).
-
address
string
- Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion.
-
availability
string
- Employee: when they can work.
-
contact_name
string
- Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion.
-
contact_notes
string
- Notes from contacting them.
-
contact_phone
string
- Client: the contact person's 10-digit phone.
-
email
string
- Email address.
-
employee_comments
string
- Employee: comments.
-
first_name
string
- First name.
-
has_experience
boolean
- Employee: whether they have care experience.
-
has_vehicle
boolean
- Employee: whether they have a vehicle.
-
insurance_type
string
- Client: their coverage.
-
languages
array of string
- Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion.
-
last_name
string
- Last name.
-
medicaid_id
string
- Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion.
-
next_follow_up_date
string
- When to follow up next.
-
phone
string
- Phone number.
-
physical_restrictions
string
- Employee: physical restrictions.
-
referral_source
string
- Client: who referred them.
-
service_needs
string
- Client: what services they need.
-
source
string
- How they found the agency.
-
status
string
- Where they are in the pipeline. Not converted: only POST /api/v1/prospects/{id}/convert converts a prospect, with the client or caregiver it makes.
-
working_area
string
- Employee: where they can work.
| Field |
Type |
Required |
Description |
| address |
string |
no |
Their address on one line, "street, city, ST 12345". Carried to the client or caregiver on conversion. |
| availability |
string |
no |
Employee: when they can work. |
| contact_name |
string |
no |
Client: the person to reach about them (family, a case manager). Becomes the client's emergency contact on conversion. |
| contact_notes |
string |
no |
Notes from contacting them. |
| contact_phone |
string |
no |
Client: the contact person's 10-digit phone. |
| email |
string |
no |
Email address. |
| employee_comments |
string |
no |
Employee: comments. |
| first_name |
string |
no |
First name. |
| has_experience |
boolean |
no |
Employee: whether they have care experience. |
| has_vehicle |
boolean |
no |
Employee: whether they have a vehicle. |
| insurance_type |
string |
no |
Client: their coverage. |
| languages |
array of string |
no |
Languages spoken, for either kind of lead (at most 5). A potential client's become the client's language preference on conversion. |
| last_name |
string |
no |
Last name. |
| medicaid_id |
string |
no |
Client: their Colorado Medicaid ID, one letter and six digits. Carried to the client on conversion. |
| next_follow_up_date |
string |
no |
When to follow up next. |
| phone |
string |
no |
Phone number. |
| physical_restrictions |
string |
no |
Employee: physical restrictions. |
| referral_source |
string |
no |
Client: who referred them. |
| service_needs |
string |
no |
Client: what services they need. |
| source |
string |
no |
How they found the agency. |
| status |
string |
no |
Where they are in the pipeline. Not converted: only POST /api/v1/prospects/{id}/convert converts a prospect, with the client or caregiver it makes. |
| working_area |
string |
no |
Employee: where they can work. |
ProspectPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Prospect, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Prospect |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Provider revalidationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ProviderRevalidation, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ProviderRevalidation |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ProviderCarePlan
-
authorizations_reconciled_at
string
- When its authorisations were last fully reconciled.
-
certification_end_date
string
- The certification period's end.
-
certification_start_date
string
- The certification period's start.
-
client_id
string, required
- The client.
-
created_at
string
- When it was created.
-
current_revision_id
string
- Its current revision.
-
id
string, required
- The record's id.
-
source_document_id
string
- The PCSP it was imported from.
-
status
string, required
- Whether it is the client's current plan.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| authorizations_reconciled_at |
string |
no |
When its authorisations were last fully reconciled. |
| certification_end_date |
string |
no |
The certification period's end. |
| certification_start_date |
string |
no |
The certification period's start. |
| client_id |
string |
yes |
The client. |
| created_at |
string |
no |
When it was created. |
| current_revision_id |
string |
no |
Its current revision. |
| id |
string |
yes |
The record's id. |
| source_document_id |
string |
no |
The PCSP it was imported from. |
| status |
string |
yes |
Whether it is the client's current plan. |
| updated_at |
string |
no |
When it last changed. |
ProviderCarePlanDetail
-
authorizations_reconciled_at
string
- When its authorisations were last fully reconciled.
-
certification_end_date
string
- The certification period's end.
-
certification_start_date
string
- The certification period's start.
-
client_id
string, required
- The client.
-
content
object, required
- The current revision's fields, by key.
-
created_at
string
- When it was created.
-
current_revision_id
string
- Its current revision.
-
id
string, required
- The record's id.
-
reconciliation_outcome
object
- The last reconciliation's rows.
-
source_document_id
string
- The PCSP it was imported from.
-
status
string, required
- Whether it is the client's current plan.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| authorizations_reconciled_at |
string |
no |
When its authorisations were last fully reconciled. |
| certification_end_date |
string |
no |
The certification period's end. |
| certification_start_date |
string |
no |
The certification period's start. |
| client_id |
string |
yes |
The client. |
| content |
object |
yes |
The current revision's fields, by key. |
| created_at |
string |
no |
When it was created. |
| current_revision_id |
string |
no |
Its current revision. |
| id |
string |
yes |
The record's id. |
| reconciliation_outcome |
object |
no |
The last reconciliation's rows. |
| source_document_id |
string |
no |
The PCSP it was imported from. |
| status |
string |
yes |
Whether it is the client's current plan. |
| updated_at |
string |
no |
When it last changed. |
ProviderCarePlanPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].authorizations_reconciled_at
string
- When its authorisations were last fully reconciled.
-
data[].certification_end_date
string
- The certification period's end.
-
data[].certification_start_date
string
- The certification period's start.
-
data[].client_id
string, required
- The client.
-
data[].created_at
string
- When it was created.
-
data[].current_revision_id
string
- Its current revision.
-
data[].id
string, required
- The record's id.
-
data[].source_document_id
string
- The PCSP it was imported from.
-
data[].status
string, required
- Whether it is the client's current plan.
-
data[].updated_at
string
- When it last changed.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].authorizations_reconciled_at |
string |
no |
When its authorisations were last fully reconciled. |
| data[].certification_end_date |
string |
no |
The certification period's end. |
| data[].certification_start_date |
string |
no |
The certification period's start. |
| data[].client_id |
string |
yes |
The client. |
| data[].created_at |
string |
no |
When it was created. |
| data[].current_revision_id |
string |
no |
Its current revision. |
| data[].id |
string |
yes |
The record's id. |
| data[].source_document_id |
string |
no |
The PCSP it was imported from. |
| data[].status |
string |
yes |
Whether it is the client's current plan. |
| data[].updated_at |
string |
no |
When it last changed. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ProviderCarePlanReconciliation
-
complete
boolean
- Whether nothing is left outstanding.
-
rows
array of object
- One per service row.
| Field |
Type |
Required |
Description |
| complete |
boolean |
no |
Whether nothing is left outstanding. |
| rows |
array of object |
no |
One per service row. |
ProviderCarePlanSave
-
certification_choice
string
- Which period wins when the PCSP's and the client's certification disagree.
-
certification_end_date
string
- The PCSP's certification end, YYYY-MM-DD.
-
certification_start_date
string
- The PCSP's certification start, YYYY-MM-DD.
-
change_note
string
- Why this revision.
-
client_id
string
- For a new plan: the client.
-
content
object
- The plan's fields, by key, as get_provider_care_plan shows them.
-
source_document_id
string
- The PCSP stored for the client, with store_pcsp; a new plan only, where null means none.
| Field |
Type |
Required |
Description |
| certification_choice |
string |
no |
Which period wins when the PCSP's and the client's certification disagree. |
| certification_end_date |
string |
no |
The PCSP's certification end, YYYY-MM-DD. |
| certification_start_date |
string |
no |
The PCSP's certification start, YYYY-MM-DD. |
| change_note |
string |
no |
Why this revision. |
| client_id |
string |
no |
For a new plan: the client. |
| content |
object |
no |
The plan's fields, by key, as get_provider_care_plan shows them. |
| source_document_id |
string |
no |
The PCSP stored for the client, with store_pcsp; a new plan only, where null means none. |
ProviderRevalidation
A Medicaid revalidation due date for one NPI. The bell reminds every member holding compliance.view at 90, 60 and 30 days.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the date was entered.
-
last_alerted_threshold
integer
- The notice last sent, 90, 60 or 30 days; null when none has been. A changed date clears it.
-
location_name
string
- Which location the NPI is enrolled for, when it has several.
-
notes
string
- Anything the agency wants to remember about it.
-
npi
string, required
- The NPI, exactly 10 digits.
-
revalidation_due_on
string, required
- The revalidation due date the Provider Web Portal shows (YYYY-MM-DD).
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the date was entered. |
| last_alerted_threshold |
integer |
no |
The notice last sent, 90, 60 or 30 days; null when none has been. A changed date clears it. |
| location_name |
string |
no |
Which location the NPI is enrolled for, when it has several. |
| notes |
string |
no |
Anything the agency wants to remember about it. |
| npi |
string |
yes |
The NPI, exactly 10 digits. |
| revalidation_due_on |
string |
yes |
The revalidation due date the Provider Web Portal shows (YYYY-MM-DD). |
| updated_at |
string |
no |
When it last changed. |
ProviderRevalidationInput
A revalidation date's fields. A POST needs npi and revalidation_due_on; a PATCH sets only the fields sent, and a changed date is reminded again at 90, 60 and 30 days.
-
location_name
string
- Which location the NPI is enrolled for, when it has several.
-
notes
string
- Anything the agency wants to remember about it.
-
npi
string
- The NPI, exactly 10 digits.
-
revalidation_due_on
string
- The revalidation due date the Provider Web Portal shows (YYYY-MM-DD).
| Field |
Type |
Required |
Description |
| location_name |
string |
no |
Which location the NPI is enrolled for, when it has several. |
| notes |
string |
no |
Anything the agency wants to remember about it. |
| npi |
string |
no |
The NPI, exactly 10 digits. |
| revalidation_due_on |
string |
no |
The revalidation due date the Provider Web Portal shows (YYYY-MM-DD). |
ProviderTypeCertification
-
certification_text
string
-
certification_translations
object
-
certification_version
string
-
code
string
-
id
string
- The record's id.
| Field |
Type |
Required |
Description |
| certification_text |
string |
no |
|
| certification_translations |
object |
no |
|
| certification_version |
string |
no |
|
| code |
string |
no |
|
| id |
string |
no |
The record's id. |
ProviderTypeCertificationUpdate
-
certification_text
string
- English; empty for the standard wording.
-
certification_version
string, required
- As GET /api/v1/provider-type-modifiers (find_provider_type_modifiers) returned it.
-
translation
string
- Optional: into the agency's card language.
| Field |
Type |
Required |
Description |
| certification_text |
string |
no |
English; empty for the standard wording. |
| certification_version |
string |
yes |
As GET /api/v1/provider-type-modifiers (find_provider_type_modifiers) returned it. |
| translation |
string |
no |
Optional: into the agency's card language. |
ProviderTypeModifierWarning
-
message
string, required
- What the admin is warned of.
-
rule_id
string, required
- The rule that raised it.
| Field |
Type |
Required |
Description |
| message |
string |
yes |
What the admin is warned of. |
| rule_id |
string |
yes |
The rule that raised it. |
ProviderTypeModifiers
-
agency_owned
boolean
- Whether the agency has its own copy of the template. Its first certification save on a system template makes that copy; modifier changes write the agency's offering and make no copy.
-
billing_code
string
- The HCPCS code it bills.
-
certification_text
string
- The certification its cards print, in English.
-
certification_translations
object
- Its translations, by language code.
-
certification_version
string
- What a certification save sends back, to refuse one saved since.
-
code
string, required
- The provider type's code, as the path takes it.
-
id
string
- The record's id.
-
modifiers
array of string, required
- The modifiers it bills, and the batch validation expects.
-
name
string
- The provider type's name.
| Field |
Type |
Required |
Description |
| agency_owned |
boolean |
no |
Whether the agency has its own copy of the template. Its first certification save on a system template makes that copy; modifier changes write the agency's offering and make no copy. |
| billing_code |
string |
no |
The HCPCS code it bills. |
| certification_text |
string |
no |
The certification its cards print, in English. |
| certification_translations |
object |
no |
Its translations, by language code. |
| certification_version |
string |
no |
What a certification save sends back, to refuse one saved since. |
| code |
string |
yes |
The provider type's code, as the path takes it. |
| id |
string |
no |
The record's id. |
| modifiers |
array of string |
yes |
The modifiers it bills, and the batch validation expects. |
| name |
string |
no |
The provider type's name. |
QuestionAnswer
A question the agency asks, keyed by its question key, with its wording, type, the options a choice offers, and the answer on record. Send an answer back under the same key.
-
answer
string | array of string
- The answer on record: text, a code, or a list of choices.
-
comment
string
- A visit answer's comment; a monthly report keeps none.
-
key
string, required
- The question's key; answers are sent under it.
-
options
array of string
- The answers a yes/no or choice takes; none for free text.
-
question
string
- The question's wording.
-
type
string, required
- yes_no, text, choice, multi_choice, date and the like.
| Field |
Type |
Required |
Description |
| answer |
string | array of string |
no |
The answer on record: text, a code, or a list of choices. |
| comment |
string |
no |
A visit answer's comment; a monthly report keeps none. |
| key |
string |
yes |
The question's key; answers are sent under it. |
| options |
array of string |
no |
The answers a yes/no or choice takes; none for free text. |
| question |
string |
no |
The question's wording. |
| type |
string |
yes |
yes_no, text, choice, multi_choice, date and the like. |
Recertification
The renewal of a service authorization (PAR).
-
authorization_id
string, required
- The authorization being renewed.
-
case_manager
string
- The case manager handling the renewal.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the recertification was started.
-
notes
string
- Free text on the renewal.
-
renewed_authorization_id
string
- The authorization that renewed it, once renewed.
-
renewed_on
string
-
requested_on
string
-
state
string, required
-
target_date
string
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| authorization_id |
string |
yes |
The authorization being renewed. |
| case_manager |
string |
no |
The case manager handling the renewal. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the recertification was started. |
| notes |
string |
no |
Free text on the renewal. |
| renewed_authorization_id |
string |
no |
The authorization that renewed it, once renewed. |
| renewed_on |
string |
no |
|
| requested_on |
string |
no |
|
| state |
string |
yes |
|
| target_date |
string |
no |
|
| updated_at |
string |
no |
When it last changed. |
RecertificationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Recertification, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Recertification |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Reconciliation
The payment against its claims: bpr_total should equal claims_total minus plb_net, and balanced is false when it does not. In the remittances list these are the figures stored when the 835 was recorded: null for one recorded before they were stored, and an amount they do not hold readably is null, and then so is balanced. On a single remittance they are computed from its parse, and null only when it has none.
-
balanced
boolean
-
bpr_total
string
- What HCPF paid, the BPR amount.
-
claims_total
string
- The claims' paid amounts added up.
-
plb_net
string
- Provider-level adjustments (PLB), net.
| Field |
Type |
Required |
Description |
| balanced |
boolean |
no |
|
| bpr_total |
string |
no |
What HCPF paid, the BPR amount. |
| claims_total |
string |
no |
The claims' paid amounts added up. |
| plb_net |
string |
no |
Provider-level adjustments (PLB), net. |
RecordAddendum
Text added to a signed record after signing, signed by its author. The record it amends is never changed.
-
author_user_id
string
- The member who wrote and signed it.
-
body
string, required
- What was added.
-
id
string, required
- The addendum.
-
reason
string, required
- Why it was added.
-
record_id
string, required
- The record it amends.
-
record_state
string, required
- signed once its author's signature is recorded.
-
record_type
string, required
- The type of the record it amends: supervisor_visit, plan_of_care, monthly_client_report, complaint, critical_incident, client_consent_form, client_emergency_info or care_log.
-
signed_at
string
- When it was signed.
-
signer_name
string
- The name it is signed under.
-
true_copy_document_id
string
- Its true copy (PDF): the record's print as it stood when the addendum was signed; null until stored.
| Field |
Type |
Required |
Description |
| author_user_id |
string |
no |
The member who wrote and signed it. |
| body |
string |
yes |
What was added. |
| id |
string |
yes |
The addendum. |
| reason |
string |
yes |
Why it was added. |
| record_id |
string |
yes |
The record it amends. |
| record_state |
string |
yes |
signed once its author's signature is recorded. |
| record_type |
string |
yes |
The type of the record it amends: supervisor_visit, plan_of_care, monthly_client_report, complaint, critical_incident, client_consent_form, client_emergency_info or care_log. |
| signed_at |
string |
no |
When it was signed. |
| signer_name |
string |
no |
The name it is signed under. |
| true_copy_document_id |
string |
no |
Its true copy (PDF): the record's print as it stood when the addendum was signed; null until stored. |
RecordAddendumInput
-
body
string, required
- What to add, up to 5000 characters. The signed record itself never changes.
-
reason
string, required
- Why it is added, 3 to 1000 characters.
-
signer_name
string
- The name the addendum is signed under, a typed signature by the credential's user; the user's own name when left out.
| Field |
Type |
Required |
Description |
| body |
string |
yes |
What to add, up to 5000 characters. The signed record itself never changes. |
| reason |
string |
yes |
Why it is added, 3 to 1000 characters. |
| signer_name |
string |
no |
The name the addendum is signed under, a typed signature by the credential's user; the user's own name when left out. |
RecordImportResult
-
dry_run
boolean, required
- true: nothing was written; the counts are what the import would do.
-
failed
array of object, required
- Rows refused, by row number (the first row after the header is 1), with the errors by field.
-
failed[].errors
object, required
- Field name to its error messages.
-
failed[].row
integer, required
-
format
string, required
- How the file was read: HCB's own columns, or an InMyTeam export recognised by its headers.
-
imported
integer, required
- Rows written as new records.
-
pay_withheld
object
- Caregivers only: the rows whose pay rates, W-4 and ADP fields were left out because the key's member lacks payroll.manage, and the words for it; null when none were.
-
pay_withheld.message
string
-
pay_withheld.rows
integer
-
reasons
object, required
- Rows imported, updated or skipped in a way to check, by code (already_on_file, pay_rates_skipped, office_staff...): each {row, detail}, the detail naming no person.
-
skipped
integer, required
- Rows not written; reasons says why (already_on_file, empty_row, office_staff...).
-
updated
integer, required
- Rows matching a record on file that filled in what that record left blank.
| Field |
Type |
Required |
Description |
| dry_run |
boolean |
yes |
true: nothing was written; the counts are what the import would do. |
| failed |
array of object |
yes |
Rows refused, by row number (the first row after the header is 1), with the errors by field. |
| failed[].errors |
object |
yes |
Field name to its error messages. |
| failed[].row |
integer |
yes |
|
| format |
string |
yes |
How the file was read: HCB's own columns, or an InMyTeam export recognised by its headers. |
| imported |
integer |
yes |
Rows written as new records. |
| pay_withheld |
object |
no |
Caregivers only: the rows whose pay rates, W-4 and ADP fields were left out because the key's member lacks payroll.manage, and the words for it; null when none were. |
| pay_withheld.message |
string |
no |
|
| pay_withheld.rows |
integer |
no |
|
| reasons |
object |
yes |
Rows imported, updated or skipped in a way to check, by code (already_on_file, pay_rates_skipped, office_staff...): each {row, detail}, the detail naming no person. |
| skipped |
integer |
yes |
Rows not written; reasons says why (already_on_file, empty_row, office_staff...). |
| updated |
integer |
yes |
Rows matching a record on file that filled in what that record left blank. |
RecordSignatureSummary
-
method
string, required
- How it was signed.
-
role
string, required
- The line signed.
-
signed_at
string, required
- When.
-
signer_name
string, required
- Who signed.
| Field |
Type |
Required |
Description |
| method |
string |
yes |
How it was signed. |
| role |
string |
yes |
The line signed. |
| signed_at |
string |
yes |
When. |
| signer_name |
string |
yes |
Who signed. |
RecurringLineCreate
-
charge_amount
string, required
- Amount billed each period.
-
diagnosis_code_1
string
- A diagnosis code.
-
diagnosis_code_2
string
- A diagnosis code.
-
diagnosis_code_3
string
- A diagnosis code.
-
diagnosis_code_4
string
- A diagnosis code.
-
member_id
string, required
- The Medicaid member id.
-
modifier_1
string
- A modifier.
-
modifier_2
string
- A modifier.
-
modifier_3
string
- A modifier.
-
modifier_4
string
- A modifier.
-
par_number
string
- The prior authorization request number.
-
patient_dob
string
- The member's date of birth, YYYY-MM-DD. Written only; never answered.
-
patient_first_name
string
- The member's first name.
-
patient_last_name
string
- The member's last name.
-
place_of_service
string
- The place of service code, e.g. 99.
-
procedure_code
string, required
- The procedure code, e.g. T1019.
-
rendering_npi
string
- The rendering provider's NPI.
-
units
string, required
- Units billed each period.
| Field |
Type |
Required |
Description |
| charge_amount |
string |
yes |
Amount billed each period. |
| diagnosis_code_1 |
string |
no |
A diagnosis code. |
| diagnosis_code_2 |
string |
no |
A diagnosis code. |
| diagnosis_code_3 |
string |
no |
A diagnosis code. |
| diagnosis_code_4 |
string |
no |
A diagnosis code. |
| member_id |
string |
yes |
The Medicaid member id. |
| modifier_1 |
string |
no |
A modifier. |
| modifier_2 |
string |
no |
A modifier. |
| modifier_3 |
string |
no |
A modifier. |
| modifier_4 |
string |
no |
A modifier. |
| par_number |
string |
no |
The prior authorization request number. |
| patient_dob |
string |
no |
The member's date of birth, YYYY-MM-DD. Written only; never answered. |
| patient_first_name |
string |
no |
The member's first name. |
| patient_last_name |
string |
no |
The member's last name. |
| place_of_service |
string |
no |
The place of service code, e.g. 99. |
| procedure_code |
string |
yes |
The procedure code, e.g. T1019. |
| rendering_npi |
string |
no |
The rendering provider's NPI. |
| units |
string |
yes |
Units billed each period. |
RecurringLineUpdate
-
charge_amount
string
- Amount billed each period.
-
diagnosis_code_1
string
- A diagnosis code. Null clears it.
-
diagnosis_code_2
string
- A diagnosis code. Null clears it.
-
diagnosis_code_3
string
- A diagnosis code. Null clears it.
-
diagnosis_code_4
string
- A diagnosis code. Null clears it.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
- A modifier. Null clears it.
-
modifier_2
string
- A modifier. Null clears it.
-
modifier_3
string
- A modifier. Null clears it.
-
modifier_4
string
- A modifier. Null clears it.
-
par_number
string
- The prior authorization request number. Null clears it.
-
patient_dob
string
- The member's date of birth, YYYY-MM-DD. Written only; never answered. Null clears it.
-
patient_first_name
string
- The member's first name. Null clears it.
-
patient_last_name
string
- The member's last name. Null clears it.
-
place_of_service
string
- The place of service code, e.g. 99.
-
procedure_code
string
- The procedure code, e.g. T1019.
-
rendering_npi
string
- The rendering provider's NPI. Null clears it.
-
status
string
- paused leaves the line out of runs until it is set active again, whatever paused it.
-
units
string
- Units billed each period.
| Field |
Type |
Required |
Description |
| charge_amount |
string |
no |
Amount billed each period. |
| diagnosis_code_1 |
string |
no |
A diagnosis code. Null clears it. |
| diagnosis_code_2 |
string |
no |
A diagnosis code. Null clears it. |
| diagnosis_code_3 |
string |
no |
A diagnosis code. Null clears it. |
| diagnosis_code_4 |
string |
no |
A diagnosis code. Null clears it. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
A modifier. Null clears it. |
| modifier_2 |
string |
no |
A modifier. Null clears it. |
| modifier_3 |
string |
no |
A modifier. Null clears it. |
| modifier_4 |
string |
no |
A modifier. Null clears it. |
| par_number |
string |
no |
The prior authorization request number. Null clears it. |
| patient_dob |
string |
no |
The member's date of birth, YYYY-MM-DD. Written only; never answered. Null clears it. |
| patient_first_name |
string |
no |
The member's first name. Null clears it. |
| patient_last_name |
string |
no |
The member's last name. Null clears it. |
| place_of_service |
string |
no |
The place of service code, e.g. 99. |
| procedure_code |
string |
no |
The procedure code, e.g. T1019. |
| rendering_npi |
string |
no |
The rendering provider's NPI. Null clears it. |
| status |
string |
no |
paused leaves the line out of runs until it is set active again, whatever paused it. |
| units |
string |
no |
Units billed each period. |
RecurringLineWarning
-
authorization_id
string
- The PAR an over_weekly_allowance warning was judged against; null for every other code.
-
code
string, required
- What to check.
-
line_id
string
- The line it is about.
-
message
string, required
- The words the schedule page shows.
| Field |
Type |
Required |
Description |
| authorization_id |
string |
no |
The PAR an over_weekly_allowance warning was judged against; null for every other code. |
| code |
string |
yes |
What to check. |
| line_id |
string |
no |
The line it is about. |
| message |
string |
yes |
The words the schedule page shows. |
RecurringPeriod
The period the schedule bills next, the one Skip acts on; null once it has none.
-
period_end
string, required
- The last day billed.
-
period_start
string, required
- The first day billed.
| Field |
Type |
Required |
Description |
| period_end |
string |
yes |
The last day billed. |
| period_start |
string |
yes |
The first day billed. |
RecurringProposal
-
anchor_date
string
- Period 0's first day.
-
batch_id
string
- The batch.
-
cadence
string
-
limit
integer
-
lines
array of object
-
lines_total
integer
-
name
string
-
offset
integer
-
period
object
-
period.period_end
string, required
- The last day billed.
-
period.period_start
string, required
- The first day billed.
-
submit_mode
string
-
submit_time
string
-
submit_weekday
integer
| Field |
Type |
Required |
Description |
| anchor_date |
string |
no |
Period 0's first day. |
| batch_id |
string |
no |
The batch. |
| cadence |
string |
no |
|
| limit |
integer |
no |
|
| lines |
array of object |
no |
|
| lines_total |
integer |
no |
|
| name |
string |
no |
|
| offset |
integer |
no |
|
| period |
object |
no |
|
| period.period_end |
string |
yes |
The last day billed. |
| period.period_start |
string |
yes |
The first day billed. |
| submit_mode |
string |
no |
|
| submit_time |
string |
no |
|
| submit_weekday |
integer |
no |
|
RecurringRun
One billed period of a recurring schedule. status records the scheduling decision only: submitted means handed to delivery, and whether HCPF got the file is the batch's own status.
-
batch_id
string
- The batch it made; null for a period skipped before a batch was made.
-
fail_reason
string
- Why it was not sent.
-
held_at
string
- When it was held.
-
hold_reason
string
- Why it is held.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
notice_sent_at
string
- When the notice announcing it was queued.
-
period_end
string, required
- The last day billed.
-
period_start
string, required
- The first day billed.
-
schedule_id
string, required
- The schedule it belongs to.
-
scheduled_submit_at
string
- When it goes out unless held; null under approval or once left.
-
skip_reason
string
- Why it was skipped.
-
skipped_lines
array of object
- Each line left out of the run: its line_id, the reason, and the claim and batch it would have duplicated.
-
skipped_lines[].conflicting_batch_id
string
- That claim's batch.
-
skipped_lines[].conflicting_claim_id
string
- The claim it overlapped.
-
skipped_lines[].line_id
string
- The schedule line.
-
skipped_lines[].reason
string
- Why it was left out.
-
status
string, required
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| batch_id |
string |
no |
The batch it made; null for a period skipped before a batch was made. |
| fail_reason |
string |
no |
Why it was not sent. |
| held_at |
string |
no |
When it was held. |
| hold_reason |
string |
no |
Why it is held. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| notice_sent_at |
string |
no |
When the notice announcing it was queued. |
| period_end |
string |
yes |
The last day billed. |
| period_start |
string |
yes |
The first day billed. |
| schedule_id |
string |
yes |
The schedule it belongs to. |
| scheduled_submit_at |
string |
no |
When it goes out unless held; null under approval or once left. |
| skip_reason |
string |
no |
Why it was skipped. |
| skipped_lines |
array of object |
no |
Each line left out of the run: its line_id, the reason, and the claim and batch it would have duplicated. |
| skipped_lines[].conflicting_batch_id |
string |
no |
That claim's batch. |
| skipped_lines[].conflicting_claim_id |
string |
no |
The claim it overlapped. |
| skipped_lines[].line_id |
string |
no |
The schedule line. |
| skipped_lines[].reason |
string |
no |
Why it was left out. |
| status |
string |
yes |
|
| updated_at |
string |
no |
When the record last changed. |
RecurringSchedule
A standing instruction to bill an uploaded batch's lines again every week, two weeks or month. Each period's run makes a batch of the schedule's active lines with that period's dates.
-
anchor_date
string
- The first day of the source batch's period, period 0.
-
cadence
string, required
- How often it bills: weekly, biweekly (every two weeks) or monthly.
-
end_date
string
- No run is made for a period starting after it.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
name
string
- The schedule's name, as the schedule page shows it.
-
paused_at
string
- When it was last paused.
-
resumed_at
string
- When it was last resumed.
-
source_batch_id
string
- The uploaded batch it was made from.
-
status
string, required
- active, paused (no runs until resumed) or ended (final).
-
submit_mode
string, required
- auto sends each run at its send time unless held; approval waits for a Submit.
-
submit_time
string
- The time a run is sent, HH:MM:SS, Mountain time.
-
submit_weekday
integer
- The day a run is sent, Monday 1 to Sunday 7, in Mountain time.
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| anchor_date |
string |
no |
The first day of the source batch's period, period 0. |
| cadence |
string |
yes |
How often it bills: weekly, biweekly (every two weeks) or monthly. |
| end_date |
string |
no |
No run is made for a period starting after it. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| name |
string |
no |
The schedule's name, as the schedule page shows it. |
| paused_at |
string |
no |
When it was last paused. |
| resumed_at |
string |
no |
When it was last resumed. |
| source_batch_id |
string |
no |
The uploaded batch it was made from. |
| status |
string |
yes |
active, paused (no runs until resumed) or ended (final). |
| submit_mode |
string |
yes |
auto sends each run at its send time unless held; approval waits for a Submit. |
| submit_time |
string |
no |
The time a run is sent, HH:MM:SS, Mountain time. |
| submit_weekday |
integer |
no |
The day a run is sent, Monday 1 to Sunday 7, in Mountain time. |
| updated_at |
string |
no |
When the record last changed. |
RecurringScheduleCreate
-
batch_id
string, required
- The uploaded batch to make recurring.
-
end_date
string
- No run is made for a period starting after it, YYYY-MM-DD.
-
name
string
- The schedule's name.
-
submit_mode
string
- auto sends each run at its send time unless held; approval waits for a Submit.
-
submit_time
string
- The time a run is sent, HH:MM or HH:MM:SS, Mountain time.
-
submit_weekday
integer
- The day a run is sent, Monday 1 to Sunday 7, in Mountain time.
| Field |
Type |
Required |
Description |
| batch_id |
string |
yes |
The uploaded batch to make recurring. |
| end_date |
string |
no |
No run is made for a period starting after it, YYYY-MM-DD. |
| name |
string |
no |
The schedule's name. |
| submit_mode |
string |
no |
auto sends each run at its send time unless held; approval waits for a Submit. |
| submit_time |
string |
no |
The time a run is sent, HH:MM or HH:MM:SS, Mountain time. |
| submit_weekday |
integer |
no |
The day a run is sent, Monday 1 to Sunday 7, in Mountain time. |
RecurringScheduleLine
One claim line a recurring schedule bills every period, copied from a claim of the source batch or added by hand.
-
charge_amount
string
- Amount billed each period.
-
diagnosis_code_1
string
-
diagnosis_code_2
string
-
diagnosis_code_3
string
-
diagnosis_code_4
string
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
member_id
string
- The Medicaid member id.
-
modifier_1
string
-
modifier_2
string
-
modifier_3
string
-
modifier_4
string
-
ordering_npi
string
-
par_number
string
- The prior authorization request number.
-
patient_first_name
string
-
patient_last_name
string
-
pause_reason
string
- tenant when paused by hand; denied when HCPF denied its claim (paused_by_claim_id).
-
paused_by_claim_id
string
- The denied claim that paused it, when one did.
-
place_of_service
string
- The place of service code.
-
position
integer
- Its order on the schedule.
-
procedure_code
string
- The procedure code, e.g. T1019.
-
rendering_npi
string
-
schedule_id
string, required
- The schedule it belongs to.
-
source_claim_id
string
- The claim it was copied from; null when added by hand.
-
status
string, required
- active, or paused: left out of runs until resumed.
-
unit_type
string
- The unit type, UN unless the source claim said otherwise.
-
units
string
- Units billed each period.
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| charge_amount |
string |
no |
Amount billed each period. |
| diagnosis_code_1 |
string |
no |
|
| diagnosis_code_2 |
string |
no |
|
| diagnosis_code_3 |
string |
no |
|
| diagnosis_code_4 |
string |
no |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| member_id |
string |
no |
The Medicaid member id. |
| modifier_1 |
string |
no |
|
| modifier_2 |
string |
no |
|
| modifier_3 |
string |
no |
|
| modifier_4 |
string |
no |
|
| ordering_npi |
string |
no |
|
| par_number |
string |
no |
The prior authorization request number. |
| patient_first_name |
string |
no |
|
| patient_last_name |
string |
no |
|
| pause_reason |
string |
no |
tenant when paused by hand; denied when HCPF denied its claim (paused_by_claim_id). |
| paused_by_claim_id |
string |
no |
The denied claim that paused it, when one did. |
| place_of_service |
string |
no |
The place of service code. |
| position |
integer |
no |
Its order on the schedule. |
| procedure_code |
string |
no |
The procedure code, e.g. T1019. |
| rendering_npi |
string |
no |
|
| schedule_id |
string |
yes |
The schedule it belongs to. |
| source_claim_id |
string |
no |
The claim it was copied from; null when added by hand. |
| status |
string |
yes |
active, or paused: left out of runs until resumed. |
| unit_type |
string |
no |
The unit type, UN unless the source claim said otherwise. |
| units |
string |
no |
Units billed each period. |
| updated_at |
string |
no |
When the record last changed. |
RecurringSchedulePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of RecurringSchedule | object, required
-
data[].next_period
object
- The period the schedule bills next, the one Skip acts on; null once it has none.
-
data[].next_period.period_end
string, required
- The last day billed.
-
data[].next_period.period_start
string, required
- The first day billed.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of RecurringSchedule | object |
yes |
|
| data[].next_period |
object |
no |
The period the schedule bills next, the one Skip acts on; null once it has none. |
| data[].next_period.period_end |
string |
yes |
The last day billed. |
| data[].next_period.period_start |
string |
yes |
The first day billed. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
RecurringScheduleUpdate
-
end_date
string
- YYYY-MM-DD; null clears it.
-
lock_version
integer
- The lock_version the schedule was read with; required when a setting (name, submit_mode, submit_weekday, submit_time, end_date) is sent. A schedule changed since answers 409 stale_record.
-
name
string
- The schedule's name.
-
status
string
- Pause (paused), resume (active) or end (ended, final) the schedule.
-
submit_mode
string
- auto sends each run at its send time unless held; approval waits for a Submit.
-
submit_time
string
- The time a run is sent, HH:MM or HH:MM:SS, Mountain time.
-
submit_weekday
integer
- The day a run is sent, Monday 1 to Sunday 7, in Mountain time.
| Field |
Type |
Required |
Description |
| end_date |
string |
no |
YYYY-MM-DD; null clears it. |
| lock_version |
integer |
no |
The lock_version the schedule was read with; required when a setting (name, submit_mode, submit_weekday, submit_time, end_date) is sent. A schedule changed since answers 409 stale_record. |
| name |
string |
no |
The schedule's name. |
| status |
string |
no |
Pause (paused), resume (active) or end (ended, final) the schedule. |
| submit_mode |
string |
no |
auto sends each run at its send time unless held; approval waits for a Submit. |
| submit_time |
string |
no |
The time a run is sent, HH:MM or HH:MM:SS, Mountain time. |
| submit_weekday |
integer |
no |
The day a run is sent, Monday 1 to Sunday 7, in Mountain time. |
RecurringSkip
-
period_start
string, required
- The next_period.period_start this schedule was read with. Any other answers 409 period_moved, so a repeated skip never skips a second period.
| Field |
Type |
Required |
Description |
| period_start |
string |
yes |
The next_period.period_start this schedule was read with. Any other answers 409 period_moved, so a repeated skip never skips a second period. |
RefusedClock
-
assignment
string, required
- A clock-in or a clock-out.
-
captured_at
string, required
- When the caregiver clocked (UTC), the device's time when it sent one.
-
caregiver_id
string, required
- The record's id.
-
device_id
string
- The device that sent the clock.
-
gps_accuracy_meters
number
- How accurate the location was, in meters.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the server kept it (UTC).
-
latitude
string
- Where the device was.
-
longitude
string
- Where the device was.
-
reviewed_at
string
- When the office marked it reviewed (UTC); null while open.
-
visit_id
string, required
- The record's id.
-
visit_status
string, required
- The visit's status when it refused the clock.
| Field |
Type |
Required |
Description |
| assignment |
string |
yes |
A clock-in or a clock-out. |
| captured_at |
string |
yes |
When the caregiver clocked (UTC), the device's time when it sent one. |
| caregiver_id |
string |
yes |
The record's id. |
| device_id |
string |
no |
The device that sent the clock. |
| gps_accuracy_meters |
number |
no |
How accurate the location was, in meters. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the server kept it (UTC). |
| latitude |
string |
no |
Where the device was. |
| longitude |
string |
no |
Where the device was. |
| reviewed_at |
string |
no |
When the office marked it reviewed (UTC); null while open. |
| visit_id |
string |
yes |
The record's id. |
| visit_status |
string |
yes |
The visit's status when it refused the clock. |
RefusedClockPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of RefusedClock, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of RefusedClock |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Reminder
A reminder on the Today page: a supervisory visit, a recertification, a follow-up or one the agency wrote. Agency-wide reminders name no client.
-
client_first_name
string
- The client's first name.
-
client_id
string
- The client it is about.
-
client_last_name
string
- The client's last name.
-
due_date
string, required
- The day it is due.
-
due_time
string
- The time of day it is due, HH:MM:SS (Mountain time), when it has one.
-
event_type
string, required
-
id
string, required
- The record's id.
-
status
string, required
- upcoming or overdue on the agenda.
-
title
string, required
- What is due.
| Field |
Type |
Required |
Description |
| client_first_name |
string |
no |
The client's first name. |
| client_id |
string |
no |
The client it is about. |
| client_last_name |
string |
no |
The client's last name. |
| due_date |
string |
yes |
The day it is due. |
| due_time |
string |
no |
The time of day it is due, HH:MM:SS (Mountain time), when it has one. |
| event_type |
string |
yes |
|
| id |
string |
yes |
The record's id. |
| status |
string |
yes |
upcoming or overdue on the agenda. |
| title |
string |
yes |
What is due. |
ReminderClosed
The reminder's status after the call. changed is false when it was already where it was asked to go (a retry): nothing was changed, and any next occurrence the first call scheduled is not repeated here.
-
already
boolean, required
- It was already completed or dismissed, as asked, before this call.
-
changed
boolean, required
- Whether this call changed it.
-
id
string, required
- The record's id.
-
next
object
- The next occurrence completing a recurring reminder scheduled.
-
next.due_date
string
- The day it is due.
-
next.id
string
- The record's id.
-
recurrence_stopped
boolean, required
- A recurring reminder has no next one: dismissing ends the series, and completing one whose next date is past or too far out schedules none.
-
status
string, required
- completed or dismissed.
| Field |
Type |
Required |
Description |
| already |
boolean |
yes |
It was already completed or dismissed, as asked, before this call. |
| changed |
boolean |
yes |
Whether this call changed it. |
| id |
string |
yes |
The record's id. |
| next |
object |
no |
The next occurrence completing a recurring reminder scheduled. |
| next.due_date |
string |
no |
The day it is due. |
| next.id |
string |
no |
The record's id. |
| recurrence_stopped |
boolean |
yes |
A recurring reminder has no next one: dismissing ends the series, and completing one whose next date is past or too far out schedules none. |
| status |
string |
yes |
completed or dismissed. |
ReminderPreferences
-
birthday_lead_days
integer, required
- Days of notice before a birthday, 0 to 30.
-
default_reminder_time
string, required
- The time of day reminders are due, as HH:MM:SS in the agency's timezone.
-
email_digest_enabled
boolean, required
- Whether reminders are emailed as a digest.
-
paused_until
string, required
- Reminder email paused until then, an ISO 8601 time in the future; null resumes it.
-
recert_lead_days
integer, required
- Days of notice before a recert, 0 to 180.
-
supervisor_visit_cadence_mode
string, required
- How the next supervisory visit is counted.
-
supervisor_visit_cadence_value
integer, required
- Days or months between supervisory visits, 0 to 365.
| Field |
Type |
Required |
Description |
| birthday_lead_days |
integer |
yes |
Days of notice before a birthday, 0 to 30. |
| default_reminder_time |
string |
yes |
The time of day reminders are due, as HH:MM:SS in the agency's timezone. |
| email_digest_enabled |
boolean |
yes |
Whether reminders are emailed as a digest. |
| paused_until |
string |
yes |
Reminder email paused until then, an ISO 8601 time in the future; null resumes it. |
| recert_lead_days |
integer |
yes |
Days of notice before a recert, 0 to 180. |
| supervisor_visit_cadence_mode |
string |
yes |
How the next supervisory visit is counted. |
| supervisor_visit_cadence_value |
integer |
yes |
Days or months between supervisory visits, 0 to 365. |
ReminderPreferencesUpdate
-
birthday_lead_days
integer
- Days of notice before a birthday, 0 to 30.
-
default_reminder_time
string
- The time of day reminders are due, as HH:MM:SS in the agency's timezone.
-
email_digest_enabled
boolean
- Whether reminders are emailed as a digest.
-
paused_until
string
- Reminder email paused until then, an ISO 8601 time in the future; null resumes it.
-
recert_lead_days
integer
- Days of notice before a recert, 0 to 180.
-
supervisor_visit_cadence_mode
string
- How the next supervisory visit is counted.
-
supervisor_visit_cadence_value
integer
- Days or months between supervisory visits, 0 to 365.
| Field |
Type |
Required |
Description |
| birthday_lead_days |
integer |
no |
Days of notice before a birthday, 0 to 30. |
| default_reminder_time |
string |
no |
The time of day reminders are due, as HH:MM:SS in the agency's timezone. |
| email_digest_enabled |
boolean |
no |
Whether reminders are emailed as a digest. |
| paused_until |
string |
no |
Reminder email paused until then, an ISO 8601 time in the future; null resumes it. |
| recert_lead_days |
integer |
no |
Days of notice before a recert, 0 to 180. |
| supervisor_visit_cadence_mode |
string |
no |
How the next supervisory visit is counted. |
| supervisor_visit_cadence_value |
integer |
no |
Days or months between supervisory visits, 0 to 365. |
Remittance
An 835 remittance, with its totals. GET its id for the claim lines.
-
file_name
string
- The file's name as HCPF named it.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
parsed_at
string
-
received_at
string
- When it was downloaded.
-
reconciliation
Reconciliation
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| file_name |
string |
no |
The file's name as HCPF named it. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| parsed_at |
string |
no |
|
| received_at |
string |
no |
When it was downloaded. |
| reconciliation |
Reconciliation |
no |
|
| updated_at |
string |
no |
When the record last changed. |
RemittanceDetail
What HCPF paid, denied and reversed, and why. A carc is GROUP-REASON (e.g. CO-45); each code has its plain-English description beside it. The id is the 835 Response's. The MCP remittance tools return one record per batch a remittance touched, each carrying this id as response_id. reconciliation is null for a remittance with no parse.
-
batch_ids
array of string
- The agency's batches whose claims it pays or denies.
-
complete
boolean
- False only when the remittance has no parse, and then reconciliation is null and lines is empty. Otherwise true: every line was matched against all of the agency's claims, so a null claim_id means the line matched none of them.
-
denial_groups
array of object, required
- Denied claims grouped by their reason.
-
denial_groups[].billed_total
string
- Billed on those claims.
-
denial_groups[].carc
string
- GROUP-REASON.
-
denial_groups[].carc_description
string
-
denial_groups[].claim_count
integer
-
denial_groups[].rarc
string
- Remark code.
-
denial_groups[].rarc_description
string
-
id
string, required
- The record's id.
-
limit
integer, required
- Lines per page.
-
lines
array of object, required
- One per claim (CLP) on the remittance, a page at a time: lines_total counts them all, and limit and offset say which page this is.
-
lines[].billed_amount
string
- Billed.
-
lines[].carc
string
- Claim adjustment reason, GROUP-REASON.
-
lines[].carc_description
string
-
lines[].claim_id
string
- The agency's claim it matched. Null when it matched none: a claim the agency did not submit through HCB.
-
lines[].icn
string
- HCPF's internal control number.
-
lines[].paid_amount
string
- Paid; negative on a reversal.
-
lines[].rarc
string
- Remark code.
-
lines[].rarc_description
string
-
lines[].status_code
string
- CLP02: 1 paid, 4 denied, 22 reversed, ...
-
lines_total
integer, required
- Every line on the remittance.
-
offset
integer, required
- Lines skipped.
-
outcomes
object, required
- Counts and amounts by outcome: claims_count, paid_count/paid_amount, denied_count/denied_amount, reversed_count/reversed_amount, other_count/other_amount, billed_total. Amounts are decimal strings.
-
received_at
string
- When it was downloaded.
-
reconciliation
Reconciliation, required
| Field |
Type |
Required |
Description |
| batch_ids |
array of string |
no |
The agency's batches whose claims it pays or denies. |
| complete |
boolean |
no |
False only when the remittance has no parse, and then reconciliation is null and lines is empty. Otherwise true: every line was matched against all of the agency's claims, so a null claim_id means the line matched none of them. |
| denial_groups |
array of object |
yes |
Denied claims grouped by their reason. |
| denial_groups[].billed_total |
string |
no |
Billed on those claims. |
| denial_groups[].carc |
string |
no |
GROUP-REASON. |
| denial_groups[].carc_description |
string |
no |
|
| denial_groups[].claim_count |
integer |
no |
|
| denial_groups[].rarc |
string |
no |
Remark code. |
| denial_groups[].rarc_description |
string |
no |
|
| id |
string |
yes |
The record's id. |
| limit |
integer |
yes |
Lines per page. |
| lines |
array of object |
yes |
One per claim (CLP) on the remittance, a page at a time: lines_total counts them all, and limit and offset say which page this is. |
| lines[].billed_amount |
string |
no |
Billed. |
| lines[].carc |
string |
no |
Claim adjustment reason, GROUP-REASON. |
| lines[].carc_description |
string |
no |
|
| lines[].claim_id |
string |
no |
The agency's claim it matched. Null when it matched none: a claim the agency did not submit through HCB. |
| lines[].icn |
string |
no |
HCPF's internal control number. |
| lines[].paid_amount |
string |
no |
Paid; negative on a reversal. |
| lines[].rarc |
string |
no |
Remark code. |
| lines[].rarc_description |
string |
no |
|
| lines[].status_code |
string |
no |
CLP02: 1 paid, 4 denied, 22 reversed, ... |
| lines_total |
integer |
yes |
Every line on the remittance. |
| offset |
integer |
yes |
Lines skipped. |
| outcomes |
object |
yes |
Counts and amounts by outcome: claims_count, paid_count/paid_amount, denied_count/denied_amount, reversed_count/reversed_amount, other_count/other_amount, billed_total. Amounts are decimal strings. |
| received_at |
string |
no |
When it was downloaded. |
| reconciliation |
Reconciliation |
yes |
|
RemittancePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Remittance, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Remittance |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ReportPresetApply
-
confirm
boolean
- Confirm a change the page would ask about first.
-
preset
string, required
- The preset's name.
| Field |
Type |
Required |
Description |
| confirm |
boolean |
no |
Confirm a change the page would ask about first. |
| preset |
string |
yes |
The preset's name. |
ReportQuestion
-
active
boolean
- Whether new reports ask it.
-
advisory
boolean
- Whether a statute or the agency's paper asks for it.
-
config
object
- Its type's settings.
-
id
string, required
- The record's id.
-
item_type
string
- What kind of question it is.
-
labels
object, required
- Its text by language code (en, and the print language).
-
position
integer
- Its place on the form.
-
printed
boolean
- Whether it prints.
-
question_key
string, required
- Its frozen key; answers are kept under it.
-
report_type
string, required
- Its report type.
-
required_to_sign
boolean
- Whether it must be answered before signing.
-
seeded
boolean
- Whether it ships with the form.
-
translated
boolean
- Whether it prints in the second language.
| Field |
Type |
Required |
Description |
| active |
boolean |
no |
Whether new reports ask it. |
| advisory |
boolean |
no |
Whether a statute or the agency's paper asks for it. |
| config |
object |
no |
Its type's settings. |
| id |
string |
yes |
The record's id. |
| item_type |
string |
no |
What kind of question it is. |
| labels |
object |
yes |
Its text by language code (en, and the print language). |
| position |
integer |
no |
Its place on the form. |
| printed |
boolean |
no |
Whether it prints. |
| question_key |
string |
yes |
Its frozen key; answers are kept under it. |
| report_type |
string |
yes |
Its report type. |
| required_to_sign |
boolean |
no |
Whether it must be answered before signing. |
| seeded |
boolean |
no |
Whether it ships with the form. |
| translated |
boolean |
no |
Whether it prints in the second language. |
ReportQuestionCreate
-
describes
string
- text: the key of the question it explains; null or an empty string clears it.
-
heading
string
- consent_text: its heading.
-
item_type
string
- What kind of question it is; the report type's first kind when omitted.
-
label_en
string, required
- The English text.
-
label_secondary
string
- The text in the agency's print language; null or an empty string removes it.
-
multiline
boolean
- text: whether the answer is a paragraph.
-
option_labels
object
- choice and multi_choice: a caption for each code, keyed by code. It replaces the stored captions. A code it names must be in the options, or be one this same write removes from them, whose caption is dropped with it. Sent without it, an options change keeps the captions of the codes still listed.
-
options
array of string
- choice and multi_choice: the option codes, in print order.
-
print_region
string
- yes_no on the supervisory sheet: where it prints. A new one prints in the table unless told otherwise. The sheet's own band questions print below both tables and take none.
| Field |
Type |
Required |
Description |
| describes |
string |
no |
text: the key of the question it explains; null or an empty string clears it. |
| heading |
string |
no |
consent_text: its heading. |
| item_type |
string |
no |
What kind of question it is; the report type's first kind when omitted. |
| label_en |
string |
yes |
The English text. |
| label_secondary |
string |
no |
The text in the agency's print language; null or an empty string removes it. |
| multiline |
boolean |
no |
text: whether the answer is a paragraph. |
| option_labels |
object |
no |
choice and multi_choice: a caption for each code, keyed by code. It replaces the stored captions. A code it names must be in the options, or be one this same write removes from them, whose caption is dropped with it. Sent without it, an options change keeps the captions of the codes still listed. |
| options |
array of string |
no |
choice and multi_choice: the option codes, in print order. |
| print_region |
string |
no |
yes_no on the supervisory sheet: where it prints. A new one prints in the table unless told otherwise. The sheet's own band questions print below both tables and take none. |
ReportQuestionFlag
-
flag
string, required
- The flag to set.
-
value
boolean, required
- What to set it to.
| Field |
Type |
Required |
Description |
| flag |
string |
yes |
The flag to set. |
| value |
boolean |
yes |
What to set it to. |
ReportQuestionHide
-
confirm
boolean
- Confirm a change the page would ask about first.
| Field |
Type |
Required |
Description |
| confirm |
boolean |
no |
Confirm a change the page would ask about first. |
ReportQuestionMove
-
direction
string, required
- Which way.
| Field |
Type |
Required |
Description |
| direction |
string |
yes |
Which way. |
ReportQuestionUpdate
-
confirm
boolean
- Confirm a change the page would ask about.
-
describes
string
- text: the key of the question it explains; null or an empty string clears it.
-
heading
string
- consent_text: its heading.
-
item_type
string
- Its kind, which never changes: the type it has is accepted, any other is refused.
-
label_en
string, required
- The English text.
-
label_secondary
string
- The text in the agency's print language; null or an empty string removes it.
-
multiline
boolean
- text: whether the answer is a paragraph.
-
option_labels
object
- choice and multi_choice: a caption for each code, keyed by code. It replaces the stored captions. A code it names must be in the options, or be one this same write removes from them, whose caption is dropped with it. Sent without it, an options change keeps the captions of the codes still listed.
-
options
array of string
- choice and multi_choice: the option codes, in print order.
-
print_region
string
- yes_no on the supervisory sheet: where it prints. A new one prints in the table unless told otherwise. The sheet's own band questions print below both tables and take none.
| Field |
Type |
Required |
Description |
| confirm |
boolean |
no |
Confirm a change the page would ask about. |
| describes |
string |
no |
text: the key of the question it explains; null or an empty string clears it. |
| heading |
string |
no |
consent_text: its heading. |
| item_type |
string |
no |
Its kind, which never changes: the type it has is accepted, any other is refused. |
| label_en |
string |
yes |
The English text. |
| label_secondary |
string |
no |
The text in the agency's print language; null or an empty string removes it. |
| multiline |
boolean |
no |
text: whether the answer is a paragraph. |
| option_labels |
object |
no |
choice and multi_choice: a caption for each code, keyed by code. It replaces the stored captions. A code it names must be in the options, or be one this same write removes from them, whose caption is dropped with it. Sent without it, an options change keeps the captions of the codes still listed. |
| options |
array of string |
no |
choice and multi_choice: the option codes, in print order. |
| print_region |
string |
no |
yes_no on the supervisory sheet: where it prints. A new one prints in the table unless told otherwise. The sheet's own band questions print below both tables and take none. |
ReportQuestionsMoved
ReportQuestionsPreset
ReportTemplate
-
form
object, required
-
form.orientation
string, required
- How it prints.
-
form.report_type
string, required
- The report type.
-
form.title
string
- The printed title; null prints the default.
-
form.version
integer
- How many times it has been saved.
-
questions
array of object, required
-
questions[].active
boolean
- Whether new reports ask it.
-
questions[].advisory
boolean
- Whether a statute or the agency's paper asks for it.
-
questions[].config
object
- Its type's settings.
-
questions[].id
string, required
- The record's id.
-
questions[].item_type
string
- What kind of question it is.
-
questions[].labels
object, required
- Its text by language code (en, and the print language).
-
questions[].position
integer
- Its place on the form.
-
questions[].printed
boolean
- Whether it prints.
-
questions[].question_key
string, required
- Its frozen key; answers are kept under it.
-
questions[].report_type
string, required
- Its report type.
-
questions[].required_to_sign
boolean
- Whether it must be answered before signing.
-
questions[].seeded
boolean
- Whether it ships with the form.
-
questions[].translated
boolean
- Whether it prints in the second language.
| Field |
Type |
Required |
Description |
| form |
object |
yes |
|
| form.orientation |
string |
yes |
How it prints. |
| form.report_type |
string |
yes |
The report type. |
| form.title |
string |
no |
The printed title; null prints the default. |
| form.version |
integer |
no |
How many times it has been saved. |
| questions |
array of object |
yes |
|
| questions[].active |
boolean |
no |
Whether new reports ask it. |
| questions[].advisory |
boolean |
no |
Whether a statute or the agency's paper asks for it. |
| questions[].config |
object |
no |
Its type's settings. |
| questions[].id |
string |
yes |
The record's id. |
| questions[].item_type |
string |
no |
What kind of question it is. |
| questions[].labels |
object |
yes |
Its text by language code (en, and the print language). |
| questions[].position |
integer |
no |
Its place on the form. |
| questions[].printed |
boolean |
no |
Whether it prints. |
| questions[].question_key |
string |
yes |
Its frozen key; answers are kept under it. |
| questions[].report_type |
string |
yes |
Its report type. |
| questions[].required_to_sign |
boolean |
no |
Whether it must be answered before signing. |
| questions[].seeded |
boolean |
no |
Whether it ships with the form. |
| questions[].translated |
boolean |
no |
Whether it prints in the second language. |
ReportTemplateForm
-
orientation
string, required
- How it prints.
-
report_type
string, required
- The report type.
-
title
string
- The printed title; null prints the default.
-
version
integer
- How many times it has been saved.
| Field |
Type |
Required |
Description |
| orientation |
string |
yes |
How it prints. |
| report_type |
string |
yes |
The report type. |
| title |
string |
no |
The printed title; null prints the default. |
| version |
integer |
no |
How many times it has been saved. |
ReportTemplateFormUpdate
-
orientation
string, required
- How it prints.
-
title
string
- The printed title; null, blank or left out prints the default.
| Field |
Type |
Required |
Description |
| orientation |
string |
yes |
How it prints. |
| title |
string |
no |
The printed title; null, blank or left out prints the default. |
Response
A file HCPF sent back: an acknowledgment of a submission (response_type says which kind), or era835, a remittance, whose amounts are at /api/v1/remittances/{id}.
-
acknowledged
boolean
- For an acknowledgment: whether HCPF accepted the submission.
-
batch_id
string
- The batch whose submission it answers; null for a remittance, which can pay several (see its batch_ids).
-
error_code
string
- For a refusal, HCPF's code.
-
error_message
string
- For a refusal, what HCPF said.
-
file_name
string
- The file's name as HCPF named it.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
parsed_at
string
-
processed_at
string
- When claims were updated from it.
-
received_at
string
- When it was downloaded.
-
response_type
string, required
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| acknowledged |
boolean |
no |
For an acknowledgment: whether HCPF accepted the submission. |
| batch_id |
string |
no |
The batch whose submission it answers; null for a remittance, which can pay several (see its batch_ids). |
| error_code |
string |
no |
For a refusal, HCPF's code. |
| error_message |
string |
no |
For a refusal, what HCPF said. |
| file_name |
string |
no |
The file's name as HCPF named it. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| parsed_at |
string |
no |
|
| processed_at |
string |
no |
When claims were updated from it. |
| received_at |
string |
no |
When it was downloaded. |
| response_type |
string |
yes |
|
| updated_at |
string |
no |
When the record last changed. |
ResponsePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Response, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Response |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
RestoreBody
-
lock_version
integer, required
- The lock_version the deleted record has: the one its DELETE answered, or read it by listing with include_deleted=true.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
The lock_version the deleted record has: the one its DELETE answered, or read it by listing with include_deleted=true. |
ResubmissionDeadline
A denied or unpaid claim and the last day Colorado Medicaid accepts it: 365 days from its first date of service, or 60 days from the answer to its latest ICN when that is later. Dismiss one with POST /api/v1/revenue-warnings/dismissals, sending kind resubmission_deadline, its claim_id as subject_id and its fingerprint; a newer ICN that moves the date lists it again. It blocks nothing.
-
basis
string, required
- What the date counts from: 365 days from the date of service, or 60 days from the latest ICN's answer.
-
batch_id
string
- The claim file the claim is in.
-
claim_id
string, required
- The record's id.
-
client_id
string
- The client the claim bills for.
-
days_left
integer, required
- Days from today to resubmit_by; negative once it has passed.
-
dismissed
boolean, required
- Whether a member dismissed this line at this date.
-
fingerprint
string, required
- The resubmit_by date, which a dismissal names.
-
icn
string
- The newest claim's ICN, when HCPF gave it one.
-
id
string, required
- The claim's id, as claim_id.
-
kind
string, required
- The dismissal kind: resubmission_deadline.
-
procedure_code
string, required
- The HCPCS procedure code.
-
resubmit_by
string, required
- The last day the line can be resubmitted.
-
service_date_from
string, required
- The claim's first date of service.
-
service_date_to
string, required
- The claim's last date of service.
-
status
string, required
- The newest claim's status.
| Field |
Type |
Required |
Description |
| basis |
string |
yes |
What the date counts from: 365 days from the date of service, or 60 days from the latest ICN's answer. |
| batch_id |
string |
no |
The claim file the claim is in. |
| claim_id |
string |
yes |
The record's id. |
| client_id |
string |
no |
The client the claim bills for. |
| days_left |
integer |
yes |
Days from today to resubmit_by; negative once it has passed. |
| dismissed |
boolean |
yes |
Whether a member dismissed this line at this date. |
| fingerprint |
string |
yes |
The resubmit_by date, which a dismissal names. |
| icn |
string |
no |
The newest claim's ICN, when HCPF gave it one. |
| id |
string |
yes |
The claim's id, as claim_id. |
| kind |
string |
yes |
The dismissal kind: resubmission_deadline. |
| procedure_code |
string |
yes |
The HCPCS procedure code. |
| resubmit_by |
string |
yes |
The last day the line can be resubmitted. |
| service_date_from |
string |
yes |
The claim's first date of service. |
| service_date_to |
string |
yes |
The claim's last date of service. |
| status |
string |
yes |
The newest claim's status. |
ResubmissionDeadlinePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ResubmissionDeadline, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ResubmissionDeadline |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
RevenueAtRisk
A PAR ending inside the window with authorized care unused and no renewal on file (source unused_authorization: bill the care or renew the PAR), or a scheduled visit inside the window that no active or pending PAR of its client and code covers (source uncovered_visit: enter the renewal PAR or move the visit). Nothing here blocks a claim.
-
client_id
string, required
- The record's id.
-
client_name
string, required
- The client, last name first.
-
date
string, required
- The PAR's end date, or the visit's date of service.
-
service_code
string, required
- The HCPCS code.
-
source
string, required
- What is at risk.
-
subject_id
string, required
- The service authorization (unused_authorization) or the visit (uncovered_visit).
-
units
string, required
- 15-minute units for an hourly code, visits for a per-visit code: the PAR's unused units, or the visit's scheduled time. Null when the code's unit cannot be told.
-
value
string, required
- Whole dollars at HCPF's published rate. Null when no published rate prices it; such a row adds nothing to the total.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The record's id. |
| client_name |
string |
yes |
The client, last name first. |
| date |
string |
yes |
The PAR's end date, or the visit's date of service. |
| service_code |
string |
yes |
The HCPCS code. |
| source |
string |
yes |
What is at risk. |
| subject_id |
string |
yes |
The service authorization (unused_authorization) or the visit (uncovered_visit). |
| units |
string |
yes |
15-minute units for an hourly code, visits for a per-visit code: the PAR's unused units, or the visit's scheduled time. Null when the code's unit cannot be told. |
| value |
string |
yes |
Whole dollars at HCPF's published rate. Null when no published rate prices it; such a row adds nothing to the total. |
RevenueAtRiskPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of RevenueAtRisk, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
summary
object, required
-
summary.total
string, required
- unused.value plus uncovered.value, in whole dollars.
-
summary.truncated
boolean, required
- True when the window held more PARs or visits than one read values; the total is then a floor.
-
summary.uncovered
object, required
- Scheduled care with no PAR.
-
summary.uncovered.count
integer, required
- Rows, priced or not.
-
summary.uncovered.value
string, required
- Whole dollars, the priced rows only.
-
summary.unpriced_count
integer, required
- Rows with no published rate, left out of the total.
-
summary.unused
object, required
- Authorized care ending unused.
-
summary.unused.count
integer, required
- Rows, priced or not.
-
summary.unused.value
string, required
- Whole dollars, the priced rows only.
-
summary.within_days
integer, required
- The window read.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of RevenueAtRisk |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| summary |
object |
yes |
|
| summary.total |
string |
yes |
unused.value plus uncovered.value, in whole dollars. |
| summary.truncated |
boolean |
yes |
True when the window held more PARs or visits than one read values; the total is then a floor. |
| summary.uncovered |
object |
yes |
Scheduled care with no PAR. |
| summary.uncovered.count |
integer |
yes |
Rows, priced or not. |
| summary.uncovered.value |
string |
yes |
Whole dollars, the priced rows only. |
| summary.unpriced_count |
integer |
yes |
Rows with no published rate, left out of the total. |
| summary.unused |
object |
yes |
Authorized care ending unused. |
| summary.unused.count |
integer |
yes |
Rows, priced or not. |
| summary.unused.value |
string |
yes |
Whole dollars, the priced rows only. |
| summary.within_days |
integer |
yes |
The window read. |
| total |
integer |
yes |
Every matching row. |
RevenueAtRiskPart
Scheduled care with no PAR.
-
count
integer, required
- Rows, priced or not.
-
value
string, required
- Whole dollars, the priced rows only.
| Field |
Type |
Required |
Description |
| count |
integer |
yes |
Rows, priced or not. |
| value |
string |
yes |
Whole dollars, the priced rows only. |
RevenueAtRiskSummary
-
total
string, required
- unused.value plus uncovered.value, in whole dollars.
-
truncated
boolean, required
- True when the window held more PARs or visits than one read values; the total is then a floor.
-
uncovered
object, required
- Scheduled care with no PAR.
-
uncovered.count
integer, required
- Rows, priced or not.
-
uncovered.value
string, required
- Whole dollars, the priced rows only.
-
unpriced_count
integer, required
- Rows with no published rate, left out of the total.
-
unused
object, required
- Authorized care ending unused.
-
unused.count
integer, required
- Rows, priced or not.
-
unused.value
string, required
- Whole dollars, the priced rows only.
-
within_days
integer, required
- The window read.
| Field |
Type |
Required |
Description |
| total |
string |
yes |
unused.value plus uncovered.value, in whole dollars. |
| truncated |
boolean |
yes |
True when the window held more PARs or visits than one read values; the total is then a floor. |
| uncovered |
object |
yes |
Scheduled care with no PAR. |
| uncovered.count |
integer |
yes |
Rows, priced or not. |
| uncovered.value |
string |
yes |
Whole dollars, the priced rows only. |
| unpriced_count |
integer |
yes |
Rows with no published rate, left out of the total. |
| unused |
object |
yes |
Authorized care ending unused. |
| unused.count |
integer |
yes |
Rows, priced or not. |
| unused.value |
string |
yes |
Whole dollars, the priced rows only. |
| within_days |
integer |
yes |
The window read. |
RevenueWarning
A warning about money a claim may lose. It blocks nothing. Dismiss it with POST /api/v1/revenue-warnings/dismissals, sending its kind, its claim_id as subject_id, and its fingerprint; a dismissed warning whose figures change gets a new fingerprint and warns again.
-
claim_id
string, required
- The record's id.
-
dismissed
boolean, required
- Whether a member dismissed this warning at these figures.
-
fingerprint
string, required
- The figures the warning states, joined with a colon.
-
kind
string, required
- What the warning is about.
-
link
string
- The web app path where the agency checks the warning (a care log changed after the claim was sent opens the client's evidence grid); null when the warning has none.
-
message
string, required
- The warning, in plain English.
-
row_number
integer, required
- The claim's row in the uploaded file.
| Field |
Type |
Required |
Description |
| claim_id |
string |
yes |
The record's id. |
| dismissed |
boolean |
yes |
Whether a member dismissed this warning at these figures. |
| fingerprint |
string |
yes |
The figures the warning states, joined with a colon. |
| kind |
string |
yes |
What the warning is about. |
| link |
string |
no |
The web app path where the agency checks the warning (a care log changed after the claim was sent opens the client's evidence grid); null when the warning has none. |
| message |
string |
yes |
The warning, in plain English. |
| row_number |
integer |
yes |
The claim's row in the uploaded file. |
RevenueWarningDismissal
-
dismissed_at
string, required
- When it was dismissed.
-
dismissed_by_id
string
- The member who dismissed it.
-
fingerprint
string, required
- The figures dismissed.
-
id
string, required
- The record's id.
-
kind
string, required
- The warning's kind.
-
subject_id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| dismissed_at |
string |
yes |
When it was dismissed. |
| dismissed_by_id |
string |
no |
The member who dismissed it. |
| fingerprint |
string |
yes |
The figures dismissed. |
| id |
string |
yes |
The record's id. |
| kind |
string |
yes |
The warning's kind. |
| subject_id |
string |
yes |
The record's id. |
RevenueWarningPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of RevenueWarning, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of RevenueWarning |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
SampleRecordCounts
-
clients
integer, required
- Sample clients.
-
employees
integer, required
- Sample employees.
-
visits
integer, required
- Sample visits.
| Field |
Type |
Required |
Description |
| clients |
integer |
yes |
Sample clients. |
| employees |
integer |
yes |
Sample employees. |
| visits |
integer |
yes |
Sample visits. |
SampleRecordsQueued
-
cases
array of object
- Each case's result.
-
cases[].case
string, required
- The case's id.
-
cases[].dry_run
boolean, required
- True: written to the server log, nothing sent to Sandata and nothing changed.
-
cases[].records
integer, required
- How many records the case holds.
-
cases[].refused
object
- POST /settings/sandata/certification/send only: present when this case was refused while the other went; it changed nothing.
-
cases[].refused.code
string, required
- The refusal's code, as an error carries it.
-
cases[].refused.message
string, required
- Why the case was not sent.
-
cases[].sending
integer, required
- Live: how many of them were queued, those Sandata does not hold as they are now, a record it refused included until it is parked. Dry run: how many were written to the server log.
-
dry_run
boolean
- Whether this was a dry run.
-
queued
boolean, required
- True when they were queued for Sandata; false in a dry run.
| Field |
Type |
Required |
Description |
| cases |
array of object |
no |
Each case's result. |
| cases[].case |
string |
yes |
The case's id. |
| cases[].dry_run |
boolean |
yes |
True: written to the server log, nothing sent to Sandata and nothing changed. |
| cases[].records |
integer |
yes |
How many records the case holds. |
| cases[].refused |
object |
no |
POST /settings/sandata/certification/send only: present when this case was refused while the other went; it changed nothing. |
| cases[].refused.code |
string |
yes |
The refusal's code, as an error carries it. |
| cases[].refused.message |
string |
yes |
Why the case was not sent. |
| cases[].sending |
integer |
yes |
Live: how many of them were queued, those Sandata does not hold as they are now, a record it refused included until it is parked. Dry run: how many were written to the server log. |
| dry_run |
boolean |
no |
Whether this was a dry run. |
| queued |
boolean |
yes |
True when they were queued for Sandata; false in a dry run. |
SampleVisitsQueued
-
case
string
- The test case sent.
-
queued_visits
integer, required
- Sample visits queued.
| Field |
Type |
Required |
Description |
| case |
string |
no |
The test case sent. |
| queued_visits |
integer |
yes |
Sample visits queued. |
SandataCertification
-
cases
array of object
- Sandata's certification test cases, in order, each sent on its own.
-
cases[].applied
boolean
- Round 2: whether the case's change was made. Null in round 1.
-
cases[].blocked
string
- Why a send is refused now; null when it is not.
-
cases[].id
string, required
- The case's id, as POST /settings/sandata/certification/cases/{id} takes it.
-
cases[].records
integer, required
- How many records it sends.
-
cases[].round
integer, required
- 1: the sample records as created. 2: changes to records Sandata accepted.
-
cases[].scenario
string, required
- The Sandata scenario it covers.
-
cases[].state
object
- Of those records, how many Sandata holds as they are now (accepted), are waiting for Sandata's answer (waiting), were refused as they are now and go again on a send (refused), were refused too often to go again until they change (parked), cannot be sent as they are (held_back), and are left to send (to_send); each record is in exactly one. Null while Sandata is paused or not set up.
-
cases[].title
string, required
- What the page calls it.
-
cleanup_refusal
string
- Why sample records cannot be removed; null when they can.
-
completed_count
integer, required
- Steps done.
-
dry_run
boolean
- Whether sends are a dry run: written to the server log, nothing sent to Sandata. Only the certification tenant has one.
-
environment
string
- The Sandata environment the sends reach.
-
generate_refusal
string
- Why sample records cannot be created; null when they can.
-
globally_enabled
boolean
- The platform switch: whether Sandata is turned on for agencies. It never pauses the certification tenant; see sandata_open.
-
parties
array of object, required
- Each sample client and employee, and where it stands with Sandata.
-
parties[].batch
string
- Its latest batch's status; null when never sent.
-
parties[].id
string, required
- The record's id.
-
parties[].kind
string, required
- Client or employee.
-
parties[].name
string, required
- Its name.
-
parties[].state
string, required
- Where it stands with Sandata.
-
percentage
number, required
- Steps done, in percent.
-
sandata_open
boolean
- False while Sandata is paused for this agency: the platform switch is off and this is not the certification tenant.
-
send_refusal
string
- Why sample records cannot be sent; null when they can.
-
steps
array of object, required
- The checklist, in order.
-
steps[].category
string, required
- Its section on the page.
-
steps[].completed
boolean, required
- Whether it is done.
-
steps[].date
string
- The day it was marked done; null when not done.
-
steps[].key
string, required
- The step's key.
-
steps[].notes
string
- Its notes; null when none.
-
steps[].text
string, required
- What the page calls it.
-
test_data_exists
boolean
- Whether sample records exist.
-
total_count
integer, required
- Steps in all.
| Field |
Type |
Required |
Description |
| cases |
array of object |
no |
Sandata's certification test cases, in order, each sent on its own. |
| cases[].applied |
boolean |
no |
Round 2: whether the case's change was made. Null in round 1. |
| cases[].blocked |
string |
no |
Why a send is refused now; null when it is not. |
| cases[].id |
string |
yes |
The case's id, as POST /settings/sandata/certification/cases/{id} takes it. |
| cases[].records |
integer |
yes |
How many records it sends. |
| cases[].round |
integer |
yes |
1: the sample records as created. 2: changes to records Sandata accepted. |
| cases[].scenario |
string |
yes |
The Sandata scenario it covers. |
| cases[].state |
object |
no |
Of those records, how many Sandata holds as they are now (accepted), are waiting for Sandata's answer (waiting), were refused as they are now and go again on a send (refused), were refused too often to go again until they change (parked), cannot be sent as they are (held_back), and are left to send (to_send); each record is in exactly one. Null while Sandata is paused or not set up. |
| cases[].title |
string |
yes |
What the page calls it. |
| cleanup_refusal |
string |
no |
Why sample records cannot be removed; null when they can. |
| completed_count |
integer |
yes |
Steps done. |
| dry_run |
boolean |
no |
Whether sends are a dry run: written to the server log, nothing sent to Sandata. Only the certification tenant has one. |
| environment |
string |
no |
The Sandata environment the sends reach. |
| generate_refusal |
string |
no |
Why sample records cannot be created; null when they can. |
| globally_enabled |
boolean |
no |
The platform switch: whether Sandata is turned on for agencies. It never pauses the certification tenant; see sandata_open. |
| parties |
array of object |
yes |
Each sample client and employee, and where it stands with Sandata. |
| parties[].batch |
string |
no |
Its latest batch's status; null when never sent. |
| parties[].id |
string |
yes |
The record's id. |
| parties[].kind |
string |
yes |
Client or employee. |
| parties[].name |
string |
yes |
Its name. |
| parties[].state |
string |
yes |
Where it stands with Sandata. |
| percentage |
number |
yes |
Steps done, in percent. |
| sandata_open |
boolean |
no |
False while Sandata is paused for this agency: the platform switch is off and this is not the certification tenant. |
| send_refusal |
string |
no |
Why sample records cannot be sent; null when they can. |
| steps |
array of object |
yes |
The checklist, in order. |
| steps[].category |
string |
yes |
Its section on the page. |
| steps[].completed |
boolean |
yes |
Whether it is done. |
| steps[].date |
string |
no |
The day it was marked done; null when not done. |
| steps[].key |
string |
yes |
The step's key. |
| steps[].notes |
string |
no |
Its notes; null when none. |
| steps[].text |
string |
yes |
What the page calls it. |
| test_data_exists |
boolean |
no |
Whether sample records exist. |
| total_count |
integer |
yes |
Steps in all. |
SandataConnected
-
connected
boolean, required
- Always true.
| Field |
Type |
Required |
Description |
| connected |
boolean |
yes |
Always true. |
SandataConnectionTest
-
sandata_agency_id
string
- The Sandata Account.
-
sandata_api_url
string
- The Sandata API URL (https).
-
sandata_entity_guid
string
- The EntityGuid header, sent when set.
-
sandata_password
string
- The password; null or blank tests the saved one.
-
sandata_username
string
- The username; null or blank tests the saved one.
| Field |
Type |
Required |
Description |
| sandata_agency_id |
string |
no |
The Sandata Account. |
| sandata_api_url |
string |
no |
The Sandata API URL (https). |
| sandata_entity_guid |
string |
no |
The EntityGuid header, sent when set. |
| sandata_password |
string |
no |
The password; null or blank tests the saved one. |
| sandata_username |
string |
no |
The username; null or blank tests the saved one. |
SandataSettings
-
sandata_agency_id
string
- The Sandata Account.
-
sandata_api_url
string
- The Sandata API URL (https).
-
sandata_batch_size
integer
- Visits per send, 1 to 5000.
-
sandata_custom_cron
string
- A five-field cron expression, for a custom schedule.
-
sandata_default_timezone
string
- The timezone visits are sent in.
-
sandata_enabled
string
- Whether visits are sent to Sandata.
-
sandata_entity_guid
string
- The EntityGuid header, sent when set.
-
sandata_password
object, required
-
sandata_password.set
boolean, required
- Whether a value is saved; read it with the secrets operation.
-
sandata_provider_id
string
- The agency's Medicaid provider id (8 to 10 digits).
-
sandata_send_visit_memo
string
- Whether the visit memo is sent.
-
sandata_submission_schedule
string
- When visits are sent: a preset or custom.
-
sandata_username
object, required
-
sandata_username.set
boolean, required
- Whether a value is saved; read it with the secrets operation.
| Field |
Type |
Required |
Description |
| sandata_agency_id |
string |
no |
The Sandata Account. |
| sandata_api_url |
string |
no |
The Sandata API URL (https). |
| sandata_batch_size |
integer |
no |
Visits per send, 1 to 5000. |
| sandata_custom_cron |
string |
no |
A five-field cron expression, for a custom schedule. |
| sandata_default_timezone |
string |
no |
The timezone visits are sent in. |
| sandata_enabled |
string |
no |
Whether visits are sent to Sandata. |
| sandata_entity_guid |
string |
no |
The EntityGuid header, sent when set. |
| sandata_password |
object |
yes |
|
| sandata_password.set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
| sandata_provider_id |
string |
no |
The agency's Medicaid provider id (8 to 10 digits). |
| sandata_send_visit_memo |
string |
no |
Whether the visit memo is sent. |
| sandata_submission_schedule |
string |
no |
When visits are sent: a preset or custom. |
| sandata_username |
object |
yes |
|
| sandata_username.set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
SandataSettingsUpdate
-
sandata_agency_id
string
- The Sandata Account.
-
sandata_api_url
string
- The Sandata API URL (https).
-
sandata_batch_size
integer
- Visits per send, 1 to 5000.
-
sandata_custom_cron
string
- A five-field cron expression, for a custom schedule.
-
sandata_default_timezone
string
- The timezone visits are sent in.
-
sandata_enabled
string
- Whether visits are sent to Sandata.
-
sandata_entity_guid
string
- The EntityGuid header, sent when set.
-
sandata_password
string
- The password; null or blank keeps the saved one.
-
sandata_provider_id
string
- The agency's Medicaid provider id (8 to 10 digits).
-
sandata_send_visit_memo
string
- Whether the visit memo is sent.
-
sandata_submission_schedule
string
- When visits are sent: a preset or custom.
-
sandata_username
string
- The username; null or blank keeps the saved one.
| Field |
Type |
Required |
Description |
| sandata_agency_id |
string |
no |
The Sandata Account. |
| sandata_api_url |
string |
no |
The Sandata API URL (https). |
| sandata_batch_size |
integer |
no |
Visits per send, 1 to 5000. |
| sandata_custom_cron |
string |
no |
A five-field cron expression, for a custom schedule. |
| sandata_default_timezone |
string |
no |
The timezone visits are sent in. |
| sandata_enabled |
string |
no |
Whether visits are sent to Sandata. |
| sandata_entity_guid |
string |
no |
The EntityGuid header, sent when set. |
| sandata_password |
string |
no |
The password; null or blank keeps the saved one. |
| sandata_provider_id |
string |
no |
The agency's Medicaid provider id (8 to 10 digits). |
| sandata_send_visit_memo |
string |
no |
Whether the visit memo is sent. |
| sandata_submission_schedule |
string |
no |
When visits are sent: a preset or custom. |
| sandata_username |
string |
no |
The username; null or blank keeps the saved one. |
SatisfactionSurvey
One satisfaction survey of a client: a draft until it is completed.
-
client_id
string, required
- The client surveyed.
-
comments
string
- Comments.
-
conducted_by_id
string
- Who conducted it.
-
conducted_via
string
- How it was conducted.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was recorded.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
responses
object
- The answers, by question key.
-
status
string, required
- A draft, or completed.
-
survey_date
string, required
- The day of the survey.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client surveyed. |
| comments |
string |
no |
Comments. |
| conducted_by_id |
string |
no |
Who conducted it. |
| conducted_via |
string |
no |
How it was conducted. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was recorded. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| responses |
object |
no |
The answers, by question key. |
| status |
string |
yes |
A draft, or completed. |
| survey_date |
string |
yes |
The day of the survey. |
| updated_at |
string |
no |
When it last changed. |
SatisfactionSurveyInput
Send only the fields to change, with the lock_version read.
-
comments
string
- Comments.
-
conducted_via
string
- How it was conducted.
-
responses
object
- The answers, by question key; the answers sent replace those stored. A yes/no question takes yes, no or na, a rating poor, fair, good or excellent.
-
responses.q1
string
- Were you given a copy of the Consumer/Employee Handbook?
-
responses.q10
string
- Is the employee courteous and respectful?
-
responses.q11
string
- Does the employee report changes in your condition to the supervisor?
-
responses.q12
string
- Does the employee maintain confidentiality?
-
responses.q13
string
- Does the employee follow infection control/universal precaution practices?
-
responses.q14
string
- If applicable, does the employee properly handle your medications?
-
responses.q15
string
- Has the agency sent a substitute when the regular employee is absent?
-
responses.q16a
string
- Bathing
-
responses.q16b
string
- Dressing
-
responses.q16c
string
- Grooming
-
responses.q16d
string
- Toileting
-
responses.q16e
string
- Eating/Feeding
-
responses.q16f
string
- Transferring/Mobility
-
responses.q16g
string
- Meal Preparation
-
responses.q16h
string
- Housekeeping
-
responses.q16i
string
- Laundry
-
responses.q16j
string
- Shopping/Errands
-
responses.q17
string
- Has the employee ever asked you to sign a blank timesheet?
-
responses.q18
string
- Has the employee ever asked you to sign a timesheet without reviewing it?
-
responses.q19
string
- Has the employee ever asked you for money or gifts?
-
responses.q2
string
- Were you informed about the complaint/grievance procedures?
-
responses.q20
string
- Has anyone from the agency asked you to pay for services?
-
responses.q21
string
- Has the agency supervisor visited you at least once every 6 months?
-
responses.q22
string
- What do you like best about the services you receive?
-
responses.q23
string
- What changes would you suggest to improve services?
-
responses.q24
string
- Would you recommend this agency to others?
-
responses.q25
string
- Do you feel safe with the employee in your home?
-
responses.q26
string
- How would you rate the overall quality of services?
-
responses.q27
string
- Additional comments:
-
responses.q3a
string
- Name of the agency
-
responses.q3b
string
- Name of the supervisor
-
responses.q3c
string
- How to contact the agency
-
responses.q3d
string
- What to do in case of an emergency
-
responses.q3e
string
- How to report complaints
-
responses.q3f
string
- Services to be provided
-
responses.q4
string
- Were you asked to sign a document verifying the above information?
-
responses.q5
string
- Are you receiving the services as outlined in the service plan?
-
responses.q6
string
- Were you involved in the development of the service plan?
-
responses.q7
string
- Has the service plan been reviewed at least annually?
-
responses.q8
string
- Does the employee arrive and leave on time?
-
responses.q9
string
- Does the employee perform the tasks listed in the service plan?
-
survey_date
string
- The day of the survey, YYYY-MM-DD.
| Field |
Type |
Required |
Description |
| comments |
string |
no |
Comments. |
| conducted_via |
string |
no |
How it was conducted. |
| responses |
object |
no |
The answers, by question key; the answers sent replace those stored. A yes/no question takes yes, no or na, a rating poor, fair, good or excellent. |
| responses.q1 |
string |
no |
Were you given a copy of the Consumer/Employee Handbook? |
| responses.q10 |
string |
no |
Is the employee courteous and respectful? |
| responses.q11 |
string |
no |
Does the employee report changes in your condition to the supervisor? |
| responses.q12 |
string |
no |
Does the employee maintain confidentiality? |
| responses.q13 |
string |
no |
Does the employee follow infection control/universal precaution practices? |
| responses.q14 |
string |
no |
If applicable, does the employee properly handle your medications? |
| responses.q15 |
string |
no |
Has the agency sent a substitute when the regular employee is absent? |
| responses.q16a |
string |
no |
Bathing |
| responses.q16b |
string |
no |
Dressing |
| responses.q16c |
string |
no |
Grooming |
| responses.q16d |
string |
no |
Toileting |
| responses.q16e |
string |
no |
Eating/Feeding |
| responses.q16f |
string |
no |
Transferring/Mobility |
| responses.q16g |
string |
no |
Meal Preparation |
| responses.q16h |
string |
no |
Housekeeping |
| responses.q16i |
string |
no |
Laundry |
| responses.q16j |
string |
no |
Shopping/Errands |
| responses.q17 |
string |
no |
Has the employee ever asked you to sign a blank timesheet? |
| responses.q18 |
string |
no |
Has the employee ever asked you to sign a timesheet without reviewing it? |
| responses.q19 |
string |
no |
Has the employee ever asked you for money or gifts? |
| responses.q2 |
string |
no |
Were you informed about the complaint/grievance procedures? |
| responses.q20 |
string |
no |
Has anyone from the agency asked you to pay for services? |
| responses.q21 |
string |
no |
Has the agency supervisor visited you at least once every 6 months? |
| responses.q22 |
string |
no |
What do you like best about the services you receive? |
| responses.q23 |
string |
no |
What changes would you suggest to improve services? |
| responses.q24 |
string |
no |
Would you recommend this agency to others? |
| responses.q25 |
string |
no |
Do you feel safe with the employee in your home? |
| responses.q26 |
string |
no |
How would you rate the overall quality of services? |
| responses.q27 |
string |
no |
Additional comments: |
| responses.q3a |
string |
no |
Name of the agency |
| responses.q3b |
string |
no |
Name of the supervisor |
| responses.q3c |
string |
no |
How to contact the agency |
| responses.q3d |
string |
no |
What to do in case of an emergency |
| responses.q3e |
string |
no |
How to report complaints |
| responses.q3f |
string |
no |
Services to be provided |
| responses.q4 |
string |
no |
Were you asked to sign a document verifying the above information? |
| responses.q5 |
string |
no |
Are you receiving the services as outlined in the service plan? |
| responses.q6 |
string |
no |
Were you involved in the development of the service plan? |
| responses.q7 |
string |
no |
Has the service plan been reviewed at least annually? |
| responses.q8 |
string |
no |
Does the employee arrive and leave on time? |
| responses.q9 |
string |
no |
Does the employee perform the tasks listed in the service plan? |
| survey_date |
string |
no |
The day of the survey, YYYY-MM-DD. |
SatisfactionSurveyPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of SatisfactionSurvey, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SatisfactionSurvey |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
SavedProviderTypeModifiers
-
agency_owned
boolean
- Whether the agency has its own copy of the template. Its first certification save on a system template makes that copy; modifier changes write the agency's offering and make no copy.
-
billing_code
string
- The HCPCS code it bills.
-
certification_text
string
- The certification its cards print, in English.
-
certification_translations
object
- Its translations, by language code.
-
certification_version
string
- What a certification save sends back, to refuse one saved since.
-
code
string, required
- The provider type's code, as the path takes it.
-
id
string
- The record's id.
-
modifiers
array of string, required
- The modifiers it bills, and the batch validation expects.
-
name
string
- The provider type's name.
-
warnings
array of object, required
- What the saved set warns of; usually empty. Never a refusal: the set is saved. Each names its rule (catalog.unpriced_modifier: a modifier no fee schedule in force today or later prices on the billing code; it bills as entered) and the message.
-
warnings[].message
string, required
- What the admin is warned of.
-
warnings[].rule_id
string, required
- The rule that raised it.
| Field |
Type |
Required |
Description |
| agency_owned |
boolean |
no |
Whether the agency has its own copy of the template. Its first certification save on a system template makes that copy; modifier changes write the agency's offering and make no copy. |
| billing_code |
string |
no |
The HCPCS code it bills. |
| certification_text |
string |
no |
The certification its cards print, in English. |
| certification_translations |
object |
no |
Its translations, by language code. |
| certification_version |
string |
no |
What a certification save sends back, to refuse one saved since. |
| code |
string |
yes |
The provider type's code, as the path takes it. |
| id |
string |
no |
The record's id. |
| modifiers |
array of string |
yes |
The modifiers it bills, and the batch validation expects. |
| name |
string |
no |
The provider type's name. |
| warnings |
array of object |
yes |
What the saved set warns of; usually empty. Never a refusal: the set is saved. Each names its rule (catalog.unpriced_modifier: a modifier no fee schedule in force today or later prices on the billing code; it bills as entered) and the message. |
| warnings[].message |
string |
yes |
What the admin is warned of. |
| warnings[].rule_id |
string |
yes |
The rule that raised it. |
ScheduleImportResult
-
dry_run
boolean, required
- true: nothing was written; items are what the import would do.
-
failed
array of object
- Real run only: items refused, by row, with the errors by field.
-
failed[].errors
object, required
-
failed[].row
integer, required
-
imported
integer
- Real run only: new assignments written.
-
items
array of object, required
-
items[].assignment_id
string
-
items[].caregiver
string, required
- "Last, First" from the agency's records, or the PDF's name when none matched.
-
items[].caregiver_id
string
- Null when not matched.
-
items[].client
string, required
- "Last, First" from the agency's records, or the PDF's name when none matched.
-
items[].client_id
string
- Null when not matched.
-
items[].days_after
array of object, required
- The days the file gives.
-
items[].days_after[].day_of_week
string, required
-
items[].days_after[].end_time
string, required
- HH:MM:SS
-
items[].days_after[].ends_next_day
boolean, required
- true: the visit ends after midnight, on the next day.
-
items[].days_after[].shift_number
integer, required
- 1 to 4: the visit's place on its day.
-
items[].days_after[].start_time
string, required
- HH:MM:SS
-
items[].days_before
array of object, required
- The days HCB holds now.
-
items[].days_before[].day_of_week
string, required
-
items[].days_before[].end_time
string, required
- HH:MM:SS
-
items[].days_before[].ends_next_day
boolean, required
- true: the visit ends after midnight, on the next day.
-
items[].days_before[].shift_number
integer, required
- 1 to 4: the visit's place on its day.
-
items[].days_before[].start_time
string, required
- HH:MM:SS
-
items[].outcome
string, required
- new: a pair HCB has no active or open temporary assignment for; changed: its days differ; unchanged: they match; not_imported: a name or service that did not resolve (reason says which); not_on_schedule: an active assignment, or a temporary one with no end date, that the file does not name, left as it is.
-
items[].reason
string, required
-
items[].row
integer, required
- The item's number, which failed, reasons and warnings name.
-
items[].service
string, required
- InMyTeam's service label (PCA, HMKRrel...), or for not_on_schedule the assignment's provider type.
-
items[].warnings
array of string, required
-
reasons
object
- Real run only: rows by code, each {row, detail}.
-
skipped
integer
- Real run only: items not written; reasons says why (unchanged, not_imported, not_on_schedule, already_on_file, changed_since_preview).
-
updated
integer
- Real run only: assignments whose days were replaced.
-
warnings
array of object
- Real run only: rows written with something to check (no PAR or billing code...), each {row, detail}.
-
warnings[].detail
string
-
warnings[].row
integer
-
week_start
string, required
- The Sunday the schedule's week starts on.
| Field |
Type |
Required |
Description |
| dry_run |
boolean |
yes |
true: nothing was written; items are what the import would do. |
| failed |
array of object |
no |
Real run only: items refused, by row, with the errors by field. |
| failed[].errors |
object |
yes |
|
| failed[].row |
integer |
yes |
|
| imported |
integer |
no |
Real run only: new assignments written. |
| items |
array of object |
yes |
|
| items[].assignment_id |
string |
no |
|
| items[].caregiver |
string |
yes |
"Last, First" from the agency's records, or the PDF's name when none matched. |
| items[].caregiver_id |
string |
no |
Null when not matched. |
| items[].client |
string |
yes |
"Last, First" from the agency's records, or the PDF's name when none matched. |
| items[].client_id |
string |
no |
Null when not matched. |
| items[].days_after |
array of object |
yes |
The days the file gives. |
| items[].days_after[].day_of_week |
string |
yes |
|
| items[].days_after[].end_time |
string |
yes |
HH:MM:SS |
| items[].days_after[].ends_next_day |
boolean |
yes |
true: the visit ends after midnight, on the next day. |
| items[].days_after[].shift_number |
integer |
yes |
1 to 4: the visit's place on its day. |
| items[].days_after[].start_time |
string |
yes |
HH:MM:SS |
| items[].days_before |
array of object |
yes |
The days HCB holds now. |
| items[].days_before[].day_of_week |
string |
yes |
|
| items[].days_before[].end_time |
string |
yes |
HH:MM:SS |
| items[].days_before[].ends_next_day |
boolean |
yes |
true: the visit ends after midnight, on the next day. |
| items[].days_before[].shift_number |
integer |
yes |
1 to 4: the visit's place on its day. |
| items[].days_before[].start_time |
string |
yes |
HH:MM:SS |
| items[].outcome |
string |
yes |
new: a pair HCB has no active or open temporary assignment for; changed: its days differ; unchanged: they match; not_imported: a name or service that did not resolve (reason says which); not_on_schedule: an active assignment, or a temporary one with no end date, that the file does not name, left as it is. |
| items[].reason |
string |
yes |
|
| items[].row |
integer |
yes |
The item's number, which failed, reasons and warnings name. |
| items[].service |
string |
yes |
InMyTeam's service label (PCA, HMKRrel...), or for not_on_schedule the assignment's provider type. |
| items[].warnings |
array of string |
yes |
|
| reasons |
object |
no |
Real run only: rows by code, each {row, detail}. |
| skipped |
integer |
no |
Real run only: items not written; reasons says why (unchanged, not_imported, not_on_schedule, already_on_file, changed_since_preview). |
| updated |
integer |
no |
Real run only: assignments whose days were replaced. |
| warnings |
array of object |
no |
Real run only: rows written with something to check (no PAR or billing code...), each {row, detail}. |
| warnings[].detail |
string |
no |
|
| warnings[].row |
integer |
no |
|
| week_start |
string |
yes |
The Sunday the schedule's week starts on. |
SecretSet
-
set
boolean, required
- Whether a value is saved; read it with the secrets operation.
| Field |
Type |
Required |
Description |
| set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
SecuritySettings
-
require_two_factor
boolean, required
- Whether every member must sign in with two-factor.
-
session_timeout_minutes
integer, required
- Minutes idle before sign-out.
| Field |
Type |
Required |
Description |
| require_two_factor |
boolean |
yes |
Whether every member must sign in with two-factor. |
| session_timeout_minutes |
integer |
yes |
Minutes idle before sign-out. |
SecuritySettingsUpdate
-
code
string
- Deprecated: send otp_code. Read when otp_code is absent, until April 30, 2027.
-
otp_code
string
- A current 6-digit code from your authenticator app; needed to turn the requirement off.
-
require_two_factor
boolean
- Require two-factor sign-in of every member (true), or stop (false). Requiring it needs your own two-factor on first.
-
session_timeout_minutes
integer
- Minutes idle before sign-out: 5, 15, 30 or 60.
| Field |
Type |
Required |
Description |
| code |
string |
no |
Deprecated: send otp_code. Read when otp_code is absent, until April 30, 2027. |
| otp_code |
string |
no |
A current 6-digit code from your authenticator app; needed to turn the requirement off. |
| require_two_factor |
boolean |
no |
Require two-factor sign-in of every member (true), or stop (false). Requiring it needs your own two-factor on first. |
| session_timeout_minutes |
integer |
no |
Minutes idle before sign-out: 5, 15, 30 or 60. |
Service authorizationPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ServiceAuthorization, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ServiceAuthorization |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Service ratePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of ServiceRate, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of ServiceRate |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ServiceArea
-
archived
boolean, required
- Archived: kept for the shifts that name it, offered for none.
-
county
string
- A Colorado county.
-
id
string, required
- The record's id.
-
latitude
string, required
- The latitude of the area's centre.
-
longitude
string, required
- The longitude of the area's centre.
-
name
string, required
- The area's name.
-
position
integer, required
- Its place in the agency's list, 1 first; an archived area keeps its last.
| Field |
Type |
Required |
Description |
| archived |
boolean |
yes |
Archived: kept for the shifts that name it, offered for none. |
| county |
string |
no |
A Colorado county. |
| id |
string |
yes |
The record's id. |
| latitude |
string |
yes |
The latitude of the area's centre. |
| longitude |
string |
yes |
The longitude of the area's centre. |
| name |
string |
yes |
The area's name. |
| position |
integer |
yes |
Its place in the agency's list, 1 first; an archived area keeps its last. |
ServiceAreaCreate
-
county
string
- A Colorado county (Douglas), or null for none.
-
latitude
number, required
- The latitude of the area's centre.
-
longitude
number, required
- The longitude of the area's centre.
-
name
string, required
- The area's name, as the agency writes it (Denver — Downtown, Parker).
-
position
integer
- Optional; last when left out. Its place in the agency's list, 1 first; the other areas move to make room, and a place past the end puts it last.
| Field |
Type |
Required |
Description |
| county |
string |
no |
A Colorado county (Douglas), or null for none. |
| latitude |
number |
yes |
The latitude of the area's centre. |
| longitude |
number |
yes |
The longitude of the area's centre. |
| name |
string |
yes |
The area's name, as the agency writes it (Denver — Downtown, Parker). |
| position |
integer |
no |
Optional; last when left out. Its place in the agency's list, 1 first; the other areas move to make room, and a place past the end puts it last. |
ServiceAreaPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].archived
boolean, required
- Archived: kept for the shifts that name it, offered for none.
-
data[].county
string
- A Colorado county.
-
data[].id
string, required
- The record's id.
-
data[].latitude
string, required
- The latitude of the area's centre.
-
data[].longitude
string, required
- The longitude of the area's centre.
-
data[].name
string, required
- The area's name.
-
data[].position
integer, required
- Its place in the agency's list, 1 first; an archived area keeps its last.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].archived |
boolean |
yes |
Archived: kept for the shifts that name it, offered for none. |
| data[].county |
string |
no |
A Colorado county. |
| data[].id |
string |
yes |
The record's id. |
| data[].latitude |
string |
yes |
The latitude of the area's centre. |
| data[].longitude |
string |
yes |
The longitude of the area's centre. |
| data[].name |
string |
yes |
The area's name. |
| data[].position |
integer |
yes |
Its place in the agency's list, 1 first; an archived area keeps its last. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
ServiceAreaUpdate
-
archived
boolean
- true archives the area: it keeps its id and stays on what names it, and is offered for nothing new; false restores it, last in the list unless a position is sent.
-
county
string
- A Colorado county (Douglas), or null for none.
-
latitude
number
- The latitude of the area's centre.
-
longitude
number
- The longitude of the area's centre.
-
name
string
- The area's name, as the agency writes it (Denver — Downtown, Parker).
-
position
integer
- Its place in the agency's list, 1 first; the other areas move to make room, and a place past the end puts it last.
| Field |
Type |
Required |
Description |
| archived |
boolean |
no |
true archives the area: it keeps its id and stays on what names it, and is offered for nothing new; false restores it, last in the list unless a position is sent. |
| county |
string |
no |
A Colorado county (Douglas), or null for none. |
| latitude |
number |
no |
The latitude of the area's centre. |
| longitude |
number |
no |
The longitude of the area's centre. |
| name |
string |
no |
The area's name, as the agency writes it (Denver — Downtown, Parker). |
| position |
integer |
no |
Its place in the agency's list, 1 first; the other areas move to make room, and a place past the end puts it last. |
ServiceAuthorization
A service authorization (a PAR): the units of a service HCPF authorized for a client, and what is left of them. Not an HTTP authorization. The four usage figures are live: they move as time is billed WITHOUT changing updated_at or lock_version, so a sync that skips records it already holds must re-read an authorization (GET) for current figures.
-
authorized_units
string
- Units authorized.
-
client_id
string, required
- The client the service is authorized for.
-
cm_authorization_reference
string
- The case manager's approval reference.
-
cm_authorized_on
string
- The day the case manager approved (YYYY-MM-DD).
-
committed_units
string
- Units scheduled or entered but not yet billed. Null unless the authorization is active.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
effective_date
string
- Effective date (YYYY-MM-DD).
-
end_date
string
- End date (YYYY-MM-DD).
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers, like U1.
-
par_number
string
- The prior authorization request (PAR) number.
-
payer
string
- Who pays for the service.
-
remaining_units
string
- Authorized minus used, never below zero. Null unless the authorization is active.
-
service_code
string
- The HCPCS code authorized, five letters and digits like T1019.
-
shown_status
string
- The status the agency's screens show, and the one the status filter matches: expired once the end date has passed, even before the nightly job stores it in status.
-
status
string, required
-
unit_type
string
- What one authorized unit is.
-
unused_value
string
- Roughly what the authorized units not yet billed on claims are worth, in whole US dollars, at HCPF's published rate on the end date ("2496"). Null unless the authorization is active, or when no published rate prices its code and modifiers.
-
updated_at
string
- When the record last changed.
-
used_units
string
- Units used by this authorization's own billed time. Null unless the authorization is active.
-
utilization_percentage
string
- Used as a percentage of authorized, to one decimal place. Null unless the authorization is active.
-
weekly_hours
string
- Hours a week the authorization allows: its total spread evenly over its dates (inclusive days / 7), to two places. Null for a visits authorization, or when the units or dates are missing.
-
weekly_units
string
- Billing units a week the authorization allows (15-minute units for an hours authorization, visits for a visits one), to two places. Null when the units, unit type or dates are missing.
| Field |
Type |
Required |
Description |
| authorized_units |
string |
no |
Units authorized. |
| client_id |
string |
yes |
The client the service is authorized for. |
| cm_authorization_reference |
string |
no |
The case manager's approval reference. |
| cm_authorized_on |
string |
no |
The day the case manager approved (YYYY-MM-DD). |
| committed_units |
string |
no |
Units scheduled or entered but not yet billed. Null unless the authorization is active. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| effective_date |
string |
no |
Effective date (YYYY-MM-DD). |
| end_date |
string |
no |
End date (YYYY-MM-DD). |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers, like U1. |
| par_number |
string |
no |
The prior authorization request (PAR) number. |
| payer |
string |
no |
Who pays for the service. |
| remaining_units |
string |
no |
Authorized minus used, never below zero. Null unless the authorization is active. |
| service_code |
string |
no |
The HCPCS code authorized, five letters and digits like T1019. |
| shown_status |
string |
no |
The status the agency's screens show, and the one the status filter matches: expired once the end date has passed, even before the nightly job stores it in status. |
| status |
string |
yes |
|
| unit_type |
string |
no |
What one authorized unit is. |
| unused_value |
string |
no |
Roughly what the authorized units not yet billed on claims are worth, in whole US dollars, at HCPF's published rate on the end date ("2496"). Null unless the authorization is active, or when no published rate prices its code and modifiers. |
| updated_at |
string |
no |
When the record last changed. |
| used_units |
string |
no |
Units used by this authorization's own billed time. Null unless the authorization is active. |
| utilization_percentage |
string |
no |
Used as a percentage of authorized, to one decimal place. Null unless the authorization is active. |
| weekly_hours |
string |
no |
Hours a week the authorization allows: its total spread evenly over its dates (inclusive days / 7), to two places. Null for a visits authorization, or when the units or dates are missing. |
| weekly_units |
string |
no |
Billing units a week the authorization allows (15-minute units for an hours authorization, visits for a visits one), to two places. Null when the units, unit type or dates are missing. |
ServiceAuthorizationCreate
A new service authorization for one of the agency's clients. A client_id that is not the agency's answers 422 client_not_found. It is created pending: billing and utilization alerts ignore it until it is activated, in the app or with POST /api/v1/authorizations/{id}/transition.
-
authorized_units
string, required
- Units authorized.
-
client_id
string, required
- The client the service is authorized for.
-
cm_authorization_reference
string
- The case manager's approval reference.
-
cm_authorized_on
string
- The day the case manager approved (YYYY-MM-DD).
-
effective_date
string, required
- Effective date (YYYY-MM-DD).
-
end_date
string, required
- End date (YYYY-MM-DD).
-
modifiers
array of string
- Billing code modifiers, like U1.
-
notes
string
- Free text; written, never returned.
-
par_number
string
- The prior authorization request (PAR) number.
-
payer
string, required
- Who pays for the service.
-
service_code
string, required
- The HCPCS code authorized, five letters and digits like T1019.
-
unit_type
string, required
- What one authorized unit is.
| Field |
Type |
Required |
Description |
| authorized_units |
string |
yes |
Units authorized. |
| client_id |
string |
yes |
The client the service is authorized for. |
| cm_authorization_reference |
string |
no |
The case manager's approval reference. |
| cm_authorized_on |
string |
no |
The day the case manager approved (YYYY-MM-DD). |
| effective_date |
string |
yes |
Effective date (YYYY-MM-DD). |
| end_date |
string |
yes |
End date (YYYY-MM-DD). |
| modifiers |
array of string |
no |
Billing code modifiers, like U1. |
| notes |
string |
no |
Free text; written, never returned. |
| par_number |
string |
no |
The prior authorization request (PAR) number. |
| payer |
string |
yes |
Who pays for the service. |
| service_code |
string |
yes |
The HCPCS code authorized, five letters and digits like T1019. |
| unit_type |
string |
yes |
What one authorized unit is. |
ServiceAuthorizationRenewal
The new PAR's fields; its client is the renewed PAR's.
-
authorized_units
string, required
- Units authorized.
-
cm_authorization_reference
string
- The case manager's approval reference.
-
cm_authorized_on
string
- The day the case manager approved (YYYY-MM-DD).
-
effective_date
string, required
- Effective date (YYYY-MM-DD).
-
end_date
string, required
- End date (YYYY-MM-DD).
-
modifiers
array of string
- Billing code modifiers, like U1.
-
notes
string
- Free text; written, never returned.
-
par_number
string
- The prior authorization request (PAR) number.
-
payer
string, required
- Who pays for the service.
-
service_code
string, required
- The HCPCS code authorized, five letters and digits like T1019.
-
unit_type
string, required
- What one authorized unit is.
| Field |
Type |
Required |
Description |
| authorized_units |
string |
yes |
Units authorized. |
| cm_authorization_reference |
string |
no |
The case manager's approval reference. |
| cm_authorized_on |
string |
no |
The day the case manager approved (YYYY-MM-DD). |
| effective_date |
string |
yes |
Effective date (YYYY-MM-DD). |
| end_date |
string |
yes |
End date (YYYY-MM-DD). |
| modifiers |
array of string |
no |
Billing code modifiers, like U1. |
| notes |
string |
no |
Free text; written, never returned. |
| par_number |
string |
no |
The prior authorization request (PAR) number. |
| payer |
string |
yes |
Who pays for the service. |
| service_code |
string |
yes |
The HCPCS code authorized, five letters and digits like T1019. |
| unit_type |
string |
yes |
What one authorized unit is. |
ServiceAuthorizationUpdate
Fields to change, plus the lock_version you read (required). Raising authorized_units needs the case manager's approval, sent with it: cm_authorization_reference and cm_authorized_on. Those two are recorded only with an increase: a changed value sent without one answers 422 validation_failed, and the stored value sent back unchanged is accepted.
-
authorized_units
string
- Units authorized. Raising it needs the case manager's approval, sent with it: cm_authorization_reference and cm_authorized_on.
-
cm_authorization_reference
string
- The case manager's approval reference; recorded only with a units increase, so a changed value (null included) is accepted only with one.
-
cm_authorized_on
string
- The day the case manager approved (YYYY-MM-DD); recorded only with a units increase, so a changed value (null included) is accepted only with one.
-
effective_date
string
- Effective date (YYYY-MM-DD).
-
end_date
string
- End date (YYYY-MM-DD).
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers, like U1.
-
notes
string
- Free text; written, never returned.
-
par_number
string
- The prior authorization request (PAR) number.
-
payer
string
- Who pays for the service.
-
service_code
string
- The HCPCS code authorized, five letters and digits like T1019.
-
unit_type
string
- What one authorized unit is.
| Field |
Type |
Required |
Description |
| authorized_units |
string |
no |
Units authorized. Raising it needs the case manager's approval, sent with it: cm_authorization_reference and cm_authorized_on. |
| cm_authorization_reference |
string |
no |
The case manager's approval reference; recorded only with a units increase, so a changed value (null included) is accepted only with one. |
| cm_authorized_on |
string |
no |
The day the case manager approved (YYYY-MM-DD); recorded only with a units increase, so a changed value (null included) is accepted only with one. |
| effective_date |
string |
no |
Effective date (YYYY-MM-DD). |
| end_date |
string |
no |
End date (YYYY-MM-DD). |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers, like U1. |
| notes |
string |
no |
Free text; written, never returned. |
| par_number |
string |
no |
The prior authorization request (PAR) number. |
| payer |
string |
no |
Who pays for the service. |
| service_code |
string |
no |
The HCPCS code authorized, five letters and digits like T1019. |
| unit_type |
string |
no |
What one authorized unit is. |
ServiceRate
What a billing code and modifiers pay per 15-minute unit, from effective_date to end_date. A rate the agency deletes is removed outright, and no list or sync reports it: a client keeping rates re-reads the whole list, which is short. The status filter reads end_date against today's date in Colorado: active is no end_date or one today or later, which includes a rate whose effective_date is still ahead; expired is an end_date before today. A rate expiring does not move its updated_at: sync without status and judge end_date yourself.
-
description
string
-
effective_date
string
-
end_date
string
- The last day it applies; none while it is current.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
modifiers
array of string
- Billing code modifiers.
-
procedure_code
string, required
- The HCPCS code.
-
rate_per_unit
string, required
- Dollars per 15-minute unit.
-
updated_at
string
- When the record last changed.
| Field |
Type |
Required |
Description |
| description |
string |
no |
|
| effective_date |
string |
no |
|
| end_date |
string |
no |
The last day it applies; none while it is current. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| modifiers |
array of string |
no |
Billing code modifiers. |
| procedure_code |
string |
yes |
The HCPCS code. |
| rate_per_unit |
string |
yes |
Dollars per 15-minute unit. |
| updated_at |
string |
no |
When the record last changed. |
ServiceRateCreate
A new rate for one of the agency's billing codes and its modifiers, from effective_date. A rate with the same code, modifiers and effective_date as one the agency already has is refused, as is a rate_per_unit not greater than 0.
-
description
string
-
effective_date
string, required
-
modifiers
array of string, required
- Billing code modifiers.
-
procedure_code
string, required
- The HCPCS code.
-
rate_per_unit
string, required
- Dollars per 15-minute unit.
| Field |
Type |
Required |
Description |
| description |
string |
no |
|
| effective_date |
string |
yes |
|
| modifiers |
array of string |
yes |
Billing code modifiers. |
| procedure_code |
string |
yes |
The HCPCS code. |
| rate_per_unit |
string |
yes |
Dollars per 15-minute unit. |
ServiceRateUpdate
The rate fields to change. A service rate carries no lock_version: the change is applied to the rate as it is when the request arrives.
-
description
string
-
effective_date
string
-
rate_per_unit
string
- Dollars per 15-minute unit.
| Field |
Type |
Required |
Description |
| description |
string |
no |
|
| effective_date |
string |
no |
|
| rate_per_unit |
string |
no |
Dollars per 15-minute unit. |
SettingSecret
-
key
string, required
- The credential's key.
-
value
string, required
- Its value; null when none is saved.
| Field |
Type |
Required |
Description |
| key |
string |
yes |
The credential's key. |
| value |
string |
yes |
Its value; null when none is saved. |
ShiftPlan
-
addable
object
- Per service, the state form's tasks the table does not hold: what Add task offers.
-
addable.hm
array of string
-
addable.pc
array of string
-
cards
array of object
-
cards[].after
string
- The shift: PC1 ... PC4, HM1 ...
-
cards[].care_instructions
string
- The shift's Care Instructions.
-
cards[].caregiver_id
string
- Its Work Order's caregiver.
-
cards[].caregiver_week
object
- The shift's caregiver's week across the agency's clients: this client's shifts as the screen times them, the others from their Work Orders.
-
cards[].caregiver_week.by_client
array of object
-
cards[].caregiver_week.by_client[].client
string
-
cards[].caregiver_week.by_client[].minutes
integer
- A week.
-
cards[].caregiver_week.caregiver
string
- Last, First.
-
cards[].caregiver_week.caregiver_id
string
- The caregiver.
-
cards[].caregiver_week.minutes
integer
- Her minutes a week.
-
cards[].caregiver_week.visits
array of object
-
cards[].caregiver_week.visits[].client
string
- Last, First.
-
cards[].caregiver_week.visits[].day
integer
- The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday.
-
cards[].caregiver_week.visits[].end
integer
- Minutes after midnight.
-
cards[].caregiver_week.visits[].here
boolean
- A shift of this client's plan.
-
cards[].caregiver_week.visits[].minutes
integer
- The visit's minutes.
-
cards[].caregiver_week.visits[].service
string
-
cards[].caregiver_week.visits[].start
integer
- Minutes after midnight.
-
cards[].days
array of object
- Its columns in the agency's week order.
-
cards[].days[].by_day
boolean
- It starts at a time of its own that day (shift_settings by_day).
-
cards[].days[].day
integer
- The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday.
-
cards[].days[].end
integer
- Minutes after midnight it ends; past 1440 runs past midnight.
-
cards[].days[].label
string
-
cards[].days[].minutes
integer
- The minutes it holds that day.
-
cards[].days[].overlap
boolean
- It overlaps another shift that day.
-
cards[].days[].start
integer
- Minutes after midnight the shift starts, null when off.
-
cards[].days[].working
boolean
- A day the service works.
-
cards[].effective_date
string
- Its Work Order's Effective Date.
-
cards[].empty
boolean
- No visits fall on this shift.
-
cards[].label
string
-
cards[].lock_version
integer
- Its Work Order's lock_version, null before Generate.
-
cards[].rows
array of object
-
cards[].rows[].cells
array of object
-
cards[].rows[].cells[].count
integer
- The marks that day.
-
cards[].rows[].cells[].day
integer
- The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday.
-
cards[].rows[].cells[].edited
boolean
- Differs from the layout; Undo puts it back.
-
cards[].rows[].cells[].minutes
integer
- The minutes they hold.
-
cards[].rows[].in_plan
boolean
- One of the plan's tasks, so its cells can be changed.
-
cards[].rows[].min_task
string
- Min / Task on this shift, as the printed Work Order writes it: the row's week over its visits, at most 2 places (40 + 35 is 37.5). Null with no marks.
-
cards[].rows[].minutes
integer
- One visit's minutes.
-
cards[].rows[].name
string
- What a cell change names as row.
-
cards[].rows[].slug
string
-
cards[].rows[].times
integer
- Times / Week: the row's marks on this shift. Null with no marks.
-
cards[].rows[].week
integer
- Week: the row's day minutes added on this shift. Null with no marks.
-
cards[].service
string
-
cards[].shift_id
string
- The shift: PC1 ... PC4, HM1 ...
-
cards[].shift_number
integer
- k of the service's shifts.
-
cards[].work_order_id
string
- Its generated Work Order, null before Generate.
-
caregivers
object
- Shift id => the caregiver picked for it, which Generate reads. A shift left out has none yet: it is planned and printable, and Generate makes it no Work Order.
-
client_id
string
- The record's id.
-
edited
boolean
- Some cell differs from the layout.
-
hma
object
- The client's HMA calculator week, which the Shift Plan does not lay out: HMA stays on its Plan of Care. Null when the client has no current HMA plan with tasks.
-
hma.plan_id
string
- The HMA Plan of Care's id.
-
hma.weekly_minutes
integer
- Its tasks' minutes a week.
-
id
string
- The record's id.
-
other_work_orders
array of object
- The client's live Work Orders made outside the Shift Plan, in force this month or later, by Effective Date (at most 50): the screen names them so the month is not made twice.
-
other_work_orders[].caregiver
object, required
- The Work Order's caregiver; null when it has none.
-
other_work_orders[].caregiver.first_name
string
-
other_work_orders[].caregiver.id
string
- The record's id.
-
other_work_orders[].caregiver.last_name
string
-
other_work_orders[].closing_date
string, required
- Its Closing Date; null while it stays open.
-
other_work_orders[].effective_date
string, required
- Its Effective Date.
-
other_work_orders[].id
string, required
- The record's id.
-
other_work_orders[].number
integer, required
- The Work Order's WO #.
-
other_work_orders[].service
string, required
- The Work Order's service.
-
other_work_orders[].shift_id
string
- The Shift Plan's shift that made it; only on a Work Order the plan made.
-
overlaps
array of object
-
overlaps[].a
string
- The shift: PC1 ... PC4, HM1 ...
-
overlaps[].b
string
- The shift: PC1 ... PC4, HM1 ...
-
overlaps[].day
integer
- The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday.
-
print_problems
array of string
- What the screen asks to check before a print or Download Excel.
-
services
object
-
services.hm
object
- The service's week against its calculator.
-
services.hm.authorized
integer
- The calculator's minutes a week.
-
services.hm.cfc_hours
string
- The tasks' CFC hours a week.
-
services.hm.off_tasks
array of object
- When the week is off: each row whose placed minutes differ from its tasks' Min / week.
-
services.hm.off_tasks[].calculator
integer
- The tasks' Min / week.
-
services.hm.off_tasks[].name
string
-
services.hm.off_tasks[].placed
integer
- The minutes the shifts place.
-
services.hm.pill
string
- As the screen shows it.
-
services.hm.placed
integer
- The minutes the shifts place in the week.
-
services.hm.status
string
-
services.hm.total
string
- The calculator's TOTAL hours, null without a Plan of Care.
-
services.pc
object
- The service's week against its calculator.
-
services.pc.authorized
integer
- The calculator's minutes a week.
-
services.pc.cfc_hours
string
- The tasks' CFC hours a week.
-
services.pc.off_tasks
array of object
- When the week is off: each row whose placed minutes differ from its tasks' Min / week.
-
services.pc.off_tasks[].calculator
integer
- The tasks' Min / week.
-
services.pc.off_tasks[].name
string
-
services.pc.off_tasks[].placed
integer
- The minutes the shifts place.
-
services.pc.pill
string
- As the screen shows it.
-
services.pc.placed
integer
- The minutes the shifts place in the week.
-
services.pc.status
string
-
services.pc.total
string
- The calculator's TOTAL hours, null without a Plan of Care.
-
settings
object
- days, shifts_per_day, shift_settings, gap_minutes, split_long_tasks, marks_mode, as PATCH takes them, task_overrides, the task table's edits, and care_instructions, shift id => text.
-
task_table
array of object
-
task_table[].edited
boolean
- A figure differs from the Plan of Care's.
-
task_table[].fractional
boolean
- Min / task is not whole.
-
task_table[].max
integer
- The state's weekly maximum, in minutes; null for a task it does not list.
-
task_table[].min_task
string
- Min / task.
-
task_table[].min_week
string
- Min / week.
-
task_table[].name
string
- What a task change names as task.
-
task_table[].norm
string
- The state's norm and weekly maximum, as the screen shows it under the task.
-
task_table[].over_max
boolean
- Min / week is above the state's weekly maximum: needs justification and supervisor approval. Never a refusal.
-
task_table[].service
string
-
task_table[].split
object
- A split task: its visits and the minutes of each.
-
task_table[].split.minutes
integer
- Each.
-
task_table[].split.visits
integer
- Visits.
-
task_table[].times
integer
- Times / week.
-
task_table[].uneven
boolean
- Times / week was rounded.
-
task_totals
object
-
task_totals.hm
object
- The service's task table summed, as its Total row reads.
-
task_totals.hm.hours
string
- Their CFC hours, to 2 places.
-
task_totals.hm.minutes
string
- The sum of the rows' Min / week.
-
task_totals.pc
object
- The service's task table summed, as its Total row reads.
-
task_totals.pc.hours
string
- Their CFC hours, to 2 places.
-
task_totals.pc.minutes
string
- The sum of the rows' Min / week.
-
warnings
array of string
- What the screen warns of; never a refusal.
| Field |
Type |
Required |
Description |
| addable |
object |
no |
Per service, the state form's tasks the table does not hold: what Add task offers. |
| addable.hm |
array of string |
no |
|
| addable.pc |
array of string |
no |
|
| cards |
array of object |
no |
|
| cards[].after |
string |
no |
The shift: PC1 ... PC4, HM1 ... |
| cards[].care_instructions |
string |
no |
The shift's Care Instructions. |
| cards[].caregiver_id |
string |
no |
Its Work Order's caregiver. |
| cards[].caregiver_week |
object |
no |
The shift's caregiver's week across the agency's clients: this client's shifts as the screen times them, the others from their Work Orders. |
| cards[].caregiver_week.by_client |
array of object |
no |
|
| cards[].caregiver_week.by_client[].client |
string |
no |
|
| cards[].caregiver_week.by_client[].minutes |
integer |
no |
A week. |
| cards[].caregiver_week.caregiver |
string |
no |
Last, First. |
| cards[].caregiver_week.caregiver_id |
string |
no |
The caregiver. |
| cards[].caregiver_week.minutes |
integer |
no |
Her minutes a week. |
| cards[].caregiver_week.visits |
array of object |
no |
|
| cards[].caregiver_week.visits[].client |
string |
no |
Last, First. |
| cards[].caregiver_week.visits[].day |
integer |
no |
The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday. |
| cards[].caregiver_week.visits[].end |
integer |
no |
Minutes after midnight. |
| cards[].caregiver_week.visits[].here |
boolean |
no |
A shift of this client's plan. |
| cards[].caregiver_week.visits[].minutes |
integer |
no |
The visit's minutes. |
| cards[].caregiver_week.visits[].service |
string |
no |
|
| cards[].caregiver_week.visits[].start |
integer |
no |
Minutes after midnight. |
| cards[].days |
array of object |
no |
Its columns in the agency's week order. |
| cards[].days[].by_day |
boolean |
no |
It starts at a time of its own that day (shift_settings by_day). |
| cards[].days[].day |
integer |
no |
The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday. |
| cards[].days[].end |
integer |
no |
Minutes after midnight it ends; past 1440 runs past midnight. |
| cards[].days[].label |
string |
no |
|
| cards[].days[].minutes |
integer |
no |
The minutes it holds that day. |
| cards[].days[].overlap |
boolean |
no |
It overlaps another shift that day. |
| cards[].days[].start |
integer |
no |
Minutes after midnight the shift starts, null when off. |
| cards[].days[].working |
boolean |
no |
A day the service works. |
| cards[].effective_date |
string |
no |
Its Work Order's Effective Date. |
| cards[].empty |
boolean |
no |
No visits fall on this shift. |
| cards[].label |
string |
no |
|
| cards[].lock_version |
integer |
no |
Its Work Order's lock_version, null before Generate. |
| cards[].rows |
array of object |
no |
|
| cards[].rows[].cells |
array of object |
no |
|
| cards[].rows[].cells[].count |
integer |
no |
The marks that day. |
| cards[].rows[].cells[].day |
integer |
no |
The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday. |
| cards[].rows[].cells[].edited |
boolean |
no |
Differs from the layout; Undo puts it back. |
| cards[].rows[].cells[].minutes |
integer |
no |
The minutes they hold. |
| cards[].rows[].in_plan |
boolean |
no |
One of the plan's tasks, so its cells can be changed. |
| cards[].rows[].min_task |
string |
no |
Min / Task on this shift, as the printed Work Order writes it: the row's week over its visits, at most 2 places (40 + 35 is 37.5). Null with no marks. |
| cards[].rows[].minutes |
integer |
no |
One visit's minutes. |
| cards[].rows[].name |
string |
no |
What a cell change names as row. |
| cards[].rows[].slug |
string |
no |
|
| cards[].rows[].times |
integer |
no |
Times / Week: the row's marks on this shift. Null with no marks. |
| cards[].rows[].week |
integer |
no |
Week: the row's day minutes added on this shift. Null with no marks. |
| cards[].service |
string |
no |
|
| cards[].shift_id |
string |
no |
The shift: PC1 ... PC4, HM1 ... |
| cards[].shift_number |
integer |
no |
k of the service's shifts. |
| cards[].work_order_id |
string |
no |
Its generated Work Order, null before Generate. |
| caregivers |
object |
no |
Shift id => the caregiver picked for it, which Generate reads. A shift left out has none yet: it is planned and printable, and Generate makes it no Work Order. |
| client_id |
string |
no |
The record's id. |
| edited |
boolean |
no |
Some cell differs from the layout. |
| hma |
object |
no |
The client's HMA calculator week, which the Shift Plan does not lay out: HMA stays on its Plan of Care. Null when the client has no current HMA plan with tasks. |
| hma.plan_id |
string |
no |
The HMA Plan of Care's id. |
| hma.weekly_minutes |
integer |
no |
Its tasks' minutes a week. |
| id |
string |
no |
The record's id. |
| other_work_orders |
array of object |
no |
The client's live Work Orders made outside the Shift Plan, in force this month or later, by Effective Date (at most 50): the screen names them so the month is not made twice. |
| other_work_orders[].caregiver |
object |
yes |
The Work Order's caregiver; null when it has none. |
| other_work_orders[].caregiver.first_name |
string |
no |
|
| other_work_orders[].caregiver.id |
string |
no |
The record's id. |
| other_work_orders[].caregiver.last_name |
string |
no |
|
| other_work_orders[].closing_date |
string |
yes |
Its Closing Date; null while it stays open. |
| other_work_orders[].effective_date |
string |
yes |
Its Effective Date. |
| other_work_orders[].id |
string |
yes |
The record's id. |
| other_work_orders[].number |
integer |
yes |
The Work Order's WO #. |
| other_work_orders[].service |
string |
yes |
The Work Order's service. |
| other_work_orders[].shift_id |
string |
no |
The Shift Plan's shift that made it; only on a Work Order the plan made. |
| overlaps |
array of object |
no |
|
| overlaps[].a |
string |
no |
The shift: PC1 ... PC4, HM1 ... |
| overlaps[].b |
string |
no |
The shift: PC1 ... PC4, HM1 ... |
| overlaps[].day |
integer |
no |
The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday. |
| print_problems |
array of string |
no |
What the screen asks to check before a print or Download Excel. |
| services |
object |
no |
|
| services.hm |
object |
no |
The service's week against its calculator. |
| services.hm.authorized |
integer |
no |
The calculator's minutes a week. |
| services.hm.cfc_hours |
string |
no |
The tasks' CFC hours a week. |
| services.hm.off_tasks |
array of object |
no |
When the week is off: each row whose placed minutes differ from its tasks' Min / week. |
| services.hm.off_tasks[].calculator |
integer |
no |
The tasks' Min / week. |
| services.hm.off_tasks[].name |
string |
no |
|
| services.hm.off_tasks[].placed |
integer |
no |
The minutes the shifts place. |
| services.hm.pill |
string |
no |
As the screen shows it. |
| services.hm.placed |
integer |
no |
The minutes the shifts place in the week. |
| services.hm.status |
string |
no |
|
| services.hm.total |
string |
no |
The calculator's TOTAL hours, null without a Plan of Care. |
| services.pc |
object |
no |
The service's week against its calculator. |
| services.pc.authorized |
integer |
no |
The calculator's minutes a week. |
| services.pc.cfc_hours |
string |
no |
The tasks' CFC hours a week. |
| services.pc.off_tasks |
array of object |
no |
When the week is off: each row whose placed minutes differ from its tasks' Min / week. |
| services.pc.off_tasks[].calculator |
integer |
no |
The tasks' Min / week. |
| services.pc.off_tasks[].name |
string |
no |
|
| services.pc.off_tasks[].placed |
integer |
no |
The minutes the shifts place. |
| services.pc.pill |
string |
no |
As the screen shows it. |
| services.pc.placed |
integer |
no |
The minutes the shifts place in the week. |
| services.pc.status |
string |
no |
|
| services.pc.total |
string |
no |
The calculator's TOTAL hours, null without a Plan of Care. |
| settings |
object |
no |
days, shifts_per_day, shift_settings, gap_minutes, split_long_tasks, marks_mode, as PATCH takes them, task_overrides, the task table's edits, and care_instructions, shift id => text. |
| task_table |
array of object |
no |
|
| task_table[].edited |
boolean |
no |
A figure differs from the Plan of Care's. |
| task_table[].fractional |
boolean |
no |
Min / task is not whole. |
| task_table[].max |
integer |
no |
The state's weekly maximum, in minutes; null for a task it does not list. |
| task_table[].min_task |
string |
no |
Min / task. |
| task_table[].min_week |
string |
no |
Min / week. |
| task_table[].name |
string |
no |
What a task change names as task. |
| task_table[].norm |
string |
no |
The state's norm and weekly maximum, as the screen shows it under the task. |
| task_table[].over_max |
boolean |
no |
Min / week is above the state's weekly maximum: needs justification and supervisor approval. Never a refusal. |
| task_table[].service |
string |
no |
|
| task_table[].split |
object |
no |
A split task: its visits and the minutes of each. |
| task_table[].split.minutes |
integer |
no |
Each. |
| task_table[].split.visits |
integer |
no |
Visits. |
| task_table[].times |
integer |
no |
Times / week. |
| task_table[].uneven |
boolean |
no |
Times / week was rounded. |
| task_totals |
object |
no |
|
| task_totals.hm |
object |
no |
The service's task table summed, as its Total row reads. |
| task_totals.hm.hours |
string |
no |
Their CFC hours, to 2 places. |
| task_totals.hm.minutes |
string |
no |
The sum of the rows' Min / week. |
| task_totals.pc |
object |
no |
The service's task table summed, as its Total row reads. |
| task_totals.pc.hours |
string |
no |
Their CFC hours, to 2 places. |
| task_totals.pc.minutes |
string |
no |
The sum of the rows' Min / week. |
| warnings |
array of string |
no |
What the screen warns of; never a refusal. |
ShiftPlanCareInstructions
-
text
string, required
- The shift's Care Instructions, as the card's box takes them; blank or null removes them. At most the characters a Work Order's notes hold, else 422 too_long.
| Field |
Type |
Required |
Description |
| text |
string |
yes |
The shift's Care Instructions, as the card's box takes them; blank or null removes them. At most the characters a Work Order's notes hold, else 422 too_long. |
ShiftPlanCaregiverSet
-
caregiver_id
string, required
- The caregiver picked for the shift, any of the agency's on file, or null to let go of the pick.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver picked for the shift, any of the agency's on file, or null to let go of the pick. |
ShiftPlanCellSet
-
count
integer, required
- The marks that day; the screen offers 0 to 8. The count the automatic layout gives that cell lets go of the change.
-
day
integer, required
- The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday.
-
row
string, required
- The row's name, as the card's rows name it (Bathing, Toileting).
-
shift_id
string, required
- The shift: PC1 ... PC4, HM1 ...
| Field |
Type |
Required |
Description |
| count |
integer |
yes |
The marks that day; the screen offers 0 to 8. The count the automatic layout gives that cell lets go of the change. |
| day |
integer |
yes |
The Shift Plan's day: 0 Saturday, 1 Sunday, 2 Monday ... 6 Friday. |
| row |
string |
yes |
The row's name, as the card's rows name it (Bathing, Toileting). |
| shift_id |
string |
yes |
The shift: PC1 ... PC4, HM1 ... |
ShiftPlanGenerate
-
caregivers
object
- Optional: shift id => the caregiver for its Work Order, or null for none, each saved as the shift's pick as PUT /clients/{id}/shift-plan/caregivers/{shift_id} saves it. A shift left out takes its saved pick (the plan's caregivers); a shift with no caregiver gets no Work Order and keeps the one it has.
| Field |
Type |
Required |
Description |
| caregivers |
object |
no |
Optional: shift id => the caregiver for its Work Order, or null for none, each saved as the shift's pick as PUT /clients/{id}/shift-plan/caregivers/{shift_id} saves it. A shift left out takes its saved pick (the plan's caregivers); a shift with no caregiver gets no Work Order and keeps the one it has. |
ShiftPlanSettingsUpdate
-
days
object
- Optional: pc and/or hm => the service's working days; a service left out keeps its days.
-
days.hm
array of integer
- The service's working days.
-
days.pc
array of integer
- The service's working days.
-
gap_minutes
integer
- Optional: minutes between a shift and the one it starts after.
-
marks_mode
string
- Optional: the day cells as marks (x) or minutes.
-
shift_settings
object
- Optional: shift id => the keys that change: time (HH:MM, its start), after (the shift it starts after, null for none), by_day (day => HH:MM, a start of its own that day). A key left out is kept.
-
shifts_per_day
object
- Optional: pc and/or hm => shifts a day; a service left out keeps its count.
-
shifts_per_day.hm
integer
- Shifts a day, 0 to 4.
-
shifts_per_day.pc
integer
- Shifts a day, 0 to 4.
-
split_long_tasks
boolean
- Optional: whether a long, rare task is split.
| Field |
Type |
Required |
Description |
| days |
object |
no |
Optional: pc and/or hm => the service's working days; a service left out keeps its days. |
| days.hm |
array of integer |
no |
The service's working days. |
| days.pc |
array of integer |
no |
The service's working days. |
| gap_minutes |
integer |
no |
Optional: minutes between a shift and the one it starts after. |
| marks_mode |
string |
no |
Optional: the day cells as marks (x) or minutes. |
| shift_settings |
object |
no |
Optional: shift id => the keys that change: time (HH:MM, its start), after (the shift it starts after, null for none), by_day (day => HH:MM, a start of its own that day). A key left out is kept. |
| shifts_per_day |
object |
no |
Optional: pc and/or hm => shifts a day; a service left out keeps its count. |
| shifts_per_day.hm |
integer |
no |
Shifts a day, 0 to 4. |
| shifts_per_day.pc |
integer |
no |
Shifts a day, 0 to 4. |
| split_long_tasks |
boolean |
no |
Optional: whether a long, rare task is split. |
ShiftPlanTaskAdd
-
service
string, required
- The task's service.
-
task
string, required
- A task on the state form for that service, by its name (Dusting, Meal Prep/Menu Planning); the screen's Add task lists the ones the table does not hold.
| Field |
Type |
Required |
Description |
| service |
string |
yes |
The task's service. |
| task |
string |
yes |
A task on the state form for that service, by its name (Dusting, Meal Prep/Menu Planning); the screen's Add task lists the ones the table does not hold. |
ShiftPlanTaskUpdate
-
field
string, required
- The figure: times (Times / week), min_task (Min / task) or min_week (Min / week).
-
service
string, required
- The task's service.
-
task
string, required
- The task, as the task table names it (Bathing).
-
value
number, required
- Above 0; a whole number for times. Past a week answers 422 too_large.
| Field |
Type |
Required |
Description |
| field |
string |
yes |
The figure: times (Times / week), min_task (Min / task) or min_week (Min / week). |
| service |
string |
yes |
The task's service. |
| task |
string |
yes |
The task, as the task table names it (Bathing). |
| value |
number |
yes |
Above 0; a whole number for times. Past a week answers 422 too_large. |
ShiftPlanWorkOrderLine
-
caregiver
object, required
- The Work Order's caregiver; null when it has none.
-
caregiver.first_name
string
-
caregiver.id
string
- The record's id.
-
caregiver.last_name
string
-
closing_date
string, required
- Its Closing Date; null while it stays open.
-
effective_date
string, required
- Its Effective Date.
-
id
string, required
- The record's id.
-
number
integer, required
- The Work Order's WO #.
-
service
string, required
- The Work Order's service.
-
shift_id
string
- The Shift Plan's shift that made it; only on a Work Order the plan made.
| Field |
Type |
Required |
Description |
| caregiver |
object |
yes |
The Work Order's caregiver; null when it has none. |
| caregiver.first_name |
string |
no |
|
| caregiver.id |
string |
no |
The record's id. |
| caregiver.last_name |
string |
no |
|
| closing_date |
string |
yes |
Its Closing Date; null while it stays open. |
| effective_date |
string |
yes |
Its Effective Date. |
| id |
string |
yes |
The record's id. |
| number |
integer |
yes |
The Work Order's WO #. |
| service |
string |
yes |
The Work Order's service. |
| shift_id |
string |
no |
The Shift Plan's shift that made it; only on a Work Order the plan made. |
SignWarning
-
id
string, required
- The warning's stable id.
-
question_key
string
- The record's question that fixes it, when one does.
-
text
string, required
- What the signer is warned of.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The warning's stable id. |
| question_key |
string |
no |
The record's question that fixes it, when one does. |
| text |
string |
yes |
What the signer is warned of. |
SignedRecordEvent
One event of a signed record's history, oldest first: a signature, a signature voided, the true copy stored, an addendum, the record voided, or the record it replaces or that replaced it.
-
actor_name
string
- Who: the signer's name, the addendum's author, or the member who voided; null for a true copy or a replacement.
-
at
string, required
- When it happened.
-
body
string
- An addendum's text, in full.
-
kind
string, required
- What happened.
-
link
string
- The path that opens what the event names: a true copy's PDF, an addendum's true copy, or the other record's page.
-
method
string
- How a signature was made, for signed: drawn, typed, pin and so on.
-
reason
string
- The reason given, for an addendum, a voided signature or a voided record.
-
record_id
string
- For replaces and replaced_by: the other record.
-
role
string
- The signature's role, for signed and signature_voided: client, supervisor and so on.
-
signed_at
string
- When an addendum was signed.
| Field |
Type |
Required |
Description |
| actor_name |
string |
no |
Who: the signer's name, the addendum's author, or the member who voided; null for a true copy or a replacement. |
| at |
string |
yes |
When it happened. |
| body |
string |
no |
An addendum's text, in full. |
| kind |
string |
yes |
What happened. |
| link |
string |
no |
The path that opens what the event names: a true copy's PDF, an addendum's true copy, or the other record's page. |
| method |
string |
no |
How a signature was made, for signed: drawn, typed, pin and so on. |
| reason |
string |
no |
The reason given, for an addendum, a voided signature or a voided record. |
| record_id |
string |
no |
For replaces and replaced_by: the other record. |
| role |
string |
no |
The signature's role, for signed and signature_voided: client, supervisor and so on. |
| signed_at |
string |
no |
When an addendum was signed. |
SignedRecordEventPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of SignedRecordEvent, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SignedRecordEvent |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
SignedRecordState
Where a signed record stands: signed, amended (it has an addendum) or voided.
-
id
string, required
- The record.
-
record_state
string, required
- The record's state.
-
record_type
string, required
- supervisor_visit, plan_of_care, monthly_client_report, complaint, critical_incident, client_consent_form, client_emergency_info, care_log or half_month_summary.
-
signed_at
string
- When its first signature was made.
-
void_reason
string
- Why it was voided; null unless voided.
-
voided_at
string
- When it was voided; null unless voided.
-
voided_by_user_id
string
- Who voided it; null unless voided.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record. |
| record_state |
string |
yes |
The record's state. |
| record_type |
string |
yes |
supervisor_visit, plan_of_care, monthly_client_report, complaint, critical_incident, client_consent_form, client_emergency_info, care_log or half_month_summary. |
| signed_at |
string |
no |
When its first signature was made. |
| void_reason |
string |
no |
Why it was voided; null unless voided. |
| voided_at |
string |
no |
When it was voided; null unless voided. |
| voided_by_user_id |
string |
no |
Who voided it; null unless voided. |
SignedRecordVoid
-
reason
string, required
- Why the record is voided, 3 to 1000 characters. It is kept with the voided record.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why the record is voided, 3 to 1000 characters. It is kept with the voided record. |
Supervisory visitPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of SupervisoryVisit, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SupervisoryVisit |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
SupervisoryVisit
A supervisor's visit to a client's home to check on the caregiver's work. Recorded and edited here as a draft only; completing, signing and reopening happen on the visit page, where signatures are captured in person.
-
caregiver_id
string
- The caregiver observed.
-
caregiver_name
string
- The caregiver's name.
-
client_id
string, required
- The client visited.
-
client_name
string
- The client's name.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the visit was recorded.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
missing_signers
array of object
- Each required line no live signature fills yet, in order; empty when complete or voided.
-
missing_signers[].label
string, required
- The line as the page names it, e.g. "client or authorized representative".
-
missing_signers[].roles
array of string, required
- The roles that would fill the line: any one of them.
-
questions
array of QuestionAnswer
- The checklist.
-
record_state
string
- The signed record's state: draft until the first signature, then signed (locked), amended (an addendum was signed) or voided (replaced by a new draft). signing_complete says whether every required line is signed: the supervisor, the client, and the caregiver or PCP; a telehealth visit needs the supervisor alone.
-
signatures
array of object
- The live signatures, oldest first, without their images.
-
signatures[].method
string, required
- How it was signed: typed, drawn, initials, pin and so on.
-
signatures[].role
string, required
- The line signed.
-
signatures[].signed_at
string, required
- When the line was signed.
-
signatures[].signer_name
string
- The name the line is signed under.
-
signed_at
string
- When the first signature locked it; null on a draft.
-
signed_on_paper
boolean
- Whether the signed paper sheet is on file. A yes is recorded as a paper-on-file signature in each role the visit still needs, so it can sign the visit; read-only.
-
signing_complete
boolean
- True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete.
-
status
string, required
- draft, completed or signed.
-
supervisor_name
string
- Who conducted the visit; null or blank clears it.
-
updated_at
string
- When the visit last changed.
-
visit_date
string
- The day of the visit; null or blank clears it.
-
visit_type
string
- In person (the default), or telehealth.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
no |
The caregiver observed. |
| caregiver_name |
string |
no |
The caregiver's name. |
| client_id |
string |
yes |
The client visited. |
| client_name |
string |
no |
The client's name. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the visit was recorded. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| missing_signers |
array of object |
no |
Each required line no live signature fills yet, in order; empty when complete or voided. |
| missing_signers[].label |
string |
yes |
The line as the page names it, e.g. "client or authorized representative". |
| missing_signers[].roles |
array of string |
yes |
The roles that would fill the line: any one of them. |
| questions |
array of QuestionAnswer |
no |
The checklist. |
| record_state |
string |
no |
The signed record's state: draft until the first signature, then signed (locked), amended (an addendum was signed) or voided (replaced by a new draft). signing_complete says whether every required line is signed: the supervisor, the client, and the caregiver or PCP; a telehealth visit needs the supervisor alone. |
| signatures |
array of object |
no |
The live signatures, oldest first, without their images. |
| signatures[].method |
string |
yes |
How it was signed: typed, drawn, initials, pin and so on. |
| signatures[].role |
string |
yes |
The line signed. |
| signatures[].signed_at |
string |
yes |
When the line was signed. |
| signatures[].signer_name |
string |
no |
The name the line is signed under. |
| signed_at |
string |
no |
When the first signature locked it; null on a draft. |
| signed_on_paper |
boolean |
no |
Whether the signed paper sheet is on file. A yes is recorded as a paper-on-file signature in each role the visit still needs, so it can sign the visit; read-only. |
| signing_complete |
boolean |
no |
True once the record is signed or amended and every required line holds a signature. A signed record can be false: signed by one line, with another still open. A voided record is always false, whatever it holds, and its missing_signers is empty: nothing can sign it, and its replacement is the record to complete. |
| status |
string |
yes |
draft, completed or signed. |
| supervisor_name |
string |
no |
Who conducted the visit; null or blank clears it. |
| updated_at |
string |
no |
When the visit last changed. |
| visit_date |
string |
no |
The day of the visit; null or blank clears it. |
| visit_type |
string |
no |
In person (the default), or telehealth. |
SupervisoryVisitCreate
Records a draft visit, conducted by the API key's user. client_id and caregiver_id are required. A telehealth visit needs agency_settings.manage and the agency's telehealth acknowledgment.
-
answers
object
- Checklist answers by question key, as the visit's own read lists its questions: a text or code (yes, no, na for a yes/no), a list of choices, or {value, comment}.
-
caregiver_id
string, required
- The caregiver observed (their id).
-
client_id
string, required
- The client visited (their id).
-
supervisor_name
string
- Who conducted the visit; null or blank clears it.
-
visit_date
string
- The day of the visit; null or blank clears it.
-
visit_type
string
- In person (the default), or telehealth.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
Checklist answers by question key, as the visit's own read lists its questions: a text or code (yes, no, na for a yes/no), a list of choices, or {value, comment}. |
| caregiver_id |
string |
yes |
The caregiver observed (their id). |
| client_id |
string |
yes |
The client visited (their id). |
| supervisor_name |
string |
no |
Who conducted the visit; null or blank clears it. |
| visit_date |
string |
no |
The day of the visit; null or blank clears it. |
| visit_type |
string |
no |
In person (the default), or telehealth. |
SupervisoryVisitDate
-
date
string
- The visit's date, YYYY-MM-DD, or null to clear it; empty clears it too.
| Field |
Type |
Required |
Description |
| date |
string |
no |
The visit's date, YYYY-MM-DD, or null to clear it; empty clears it too. |
SupervisoryVisitDue
A client and when their last supervisory visit was, most urgent first.
-
client_id
string, required
- The client.
-
client_name
string
- The client's name.
-
due_status
string, required
- How urgent the next visit is.
-
last_visit_date
string
- The last visit; none if never visited.
-
planned_day
integer
- The client's planned day of the month for the visit, null when none is planned; with planned_for, capped to that month's last day.
| Field |
Type |
Required |
Description |
| client_id |
string |
yes |
The client. |
| client_name |
string |
no |
The client's name. |
| due_status |
string |
yes |
How urgent the next visit is. |
| last_visit_date |
string |
no |
The last visit; none if never visited. |
| planned_day |
integer |
no |
The client's planned day of the month for the visit, null when none is planned; with planned_for, capped to that month's last day. |
SupervisoryVisitDuePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of SupervisoryVisitDue, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SupervisoryVisitDue |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
SupervisoryVisitInput
Fields to change on a draft visit, plus the lock_version read (required). answers maps a question key to a text or code (yes, no, na for a yes/no), a list of choices, or {value, comment}; a half not sent is kept, a half sent blank is cleared.
-
answers
object
- Checklist answers by question key, as the visit's own read lists its questions: a text or code (yes, no, na for a yes/no), a list of choices, or {value, comment}.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
supervisor_name
string
- Who conducted the visit; null or blank clears it.
-
visit_date
string
- The day of the visit; null or blank clears it.
-
visit_type
string
- In person (the default), or telehealth.
| Field |
Type |
Required |
Description |
| answers |
object |
no |
Checklist answers by question key, as the visit's own read lists its questions: a text or code (yes, no, na for a yes/no), a list of choices, or {value, comment}. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| supervisor_name |
string |
no |
Who conducted the visit; null or blank clears it. |
| visit_date |
string |
no |
The day of the visit; null or blank clears it. |
| visit_type |
string |
no |
In person (the default), or telehealth. |
SupervisoryVisitReopen
-
reason
string
- Why the visit is being corrected, 3 to 1000 characters; required once any line is signed, when the visit is voided and copied into a new draft.
| Field |
Type |
Required |
Description |
| reason |
string |
no |
Why the visit is being corrected, 3 to 1000 characters; required once any line is signed, when the visit is voided and copied into a new draft. |
SupervisoryVisitSignature
-
method
string, required
- How it was signed: typed, drawn, initials, pin and so on.
-
role
string, required
- The line signed.
-
signed_at
string, required
- When the line was signed.
-
signer_name
string
- The name the line is signed under.
| Field |
Type |
Required |
Description |
| method |
string |
yes |
How it was signed: typed, drawn, initials, pin and so on. |
| role |
string |
yes |
The line signed. |
| signed_at |
string |
yes |
When the line was signed. |
| signer_name |
string |
no |
The name the line is signed under. |
SupportTicket
A request to the HomeCareBilling support team that the API key's user raised, and where it has got to. Support replies by email, quoting the reference.
-
category
string, required
-
id
string, required
- The record's id.
-
inserted_at
string
- When the ticket was filed.
-
priority
string, required
-
reference
string, required
- The ticket's reference, e.g. #HCB-a1b2c3d4, as support's emails quote it.
-
resolution_notes
string
- What support did, once resolved.
-
resolved_at
string
- When the ticket was resolved.
-
sla_status
string
- Whether support is answering within its target.
-
status
string, required
- Where the ticket has got to.
-
subject
string, required
- The request's short summary.
-
updated_at
string
- When the ticket last changed.
| Field |
Type |
Required |
Description |
| category |
string |
yes |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the ticket was filed. |
| priority |
string |
yes |
|
| reference |
string |
yes |
The ticket's reference, e.g. #HCB-a1b2c3d4, as support's emails quote it. |
| resolution_notes |
string |
no |
What support did, once resolved. |
| resolved_at |
string |
no |
When the ticket was resolved. |
| sla_status |
string |
no |
Whether support is answering within its target. |
| status |
string |
yes |
Where the ticket has got to. |
| subject |
string |
yes |
The request's short summary. |
| updated_at |
string |
no |
When the ticket last changed. |
SupportTicketInput
The request. subject, description, category and priority are required. For a bug report, fill screen, record_ids, steps_to_reproduce, expected and actual from what the user told you; a bug report missing what the server cannot work out from the user's recent activity is answered 422 needs_more_info, with the questions to ask and a follow_up_id to send back with the answers. A screenshot or any other field is not accepted and is ignored.
-
actual
string
- Bug reports: what happened instead, the error message shown or "nothing". "don't know" when they do not know.
-
category
string, required
- bug_report for something broken, feature_request for an idea, question for how to do something, general for anything else.
-
description
string, required
- What happened, where in the app, and what was expected. Leave out client names and Medicaid IDs; support will ask if they need them.
-
expected
string
- Bug reports: what the user expected to happen.
-
follow_up_id
string
- Only when answering a needs_more_info reply: the follow_up_id it gave. That call files the request whatever is still missing, and repeating it files no second one.
-
priority
string, required
- urgent only when it stops claims from being sent or paid, high when it gets in the way of daily work, normal for questions, low for ideas.
-
record_ids
array of string
- Bug reports: the ids of the records it happens on (from the page address), or ["any"] when it happens on any record, or ["don't know"]; a single string is read as a one-item list. Ids only, never names.
-
screen
string
- Bug reports: the screen or feature the problem is on, e.g. Today, Needs attention, a client's page. "don't know" when the user does not know.
-
steps_to_reproduce
string
- Bug reports: what the user clicked or tried, step by step. "don't know" when they do not know.
-
subject
string, required
- A short summary of the request.
| Field |
Type |
Required |
Description |
| actual |
string |
no |
Bug reports: what happened instead, the error message shown or "nothing". "don't know" when they do not know. |
| category |
string |
yes |
bug_report for something broken, feature_request for an idea, question for how to do something, general for anything else. |
| description |
string |
yes |
What happened, where in the app, and what was expected. Leave out client names and Medicaid IDs; support will ask if they need them. |
| expected |
string |
no |
Bug reports: what the user expected to happen. |
| follow_up_id |
string |
no |
Only when answering a needs_more_info reply: the follow_up_id it gave. That call files the request whatever is still missing, and repeating it files no second one. |
| priority |
string |
yes |
urgent only when it stops claims from being sent or paid, high when it gets in the way of daily work, normal for questions, low for ideas. |
| record_ids |
array of string |
no |
Bug reports: the ids of the records it happens on (from the page address), or ["any"] when it happens on any record, or ["don't know"]; a single string is read as a one-item list. Ids only, never names. |
| screen |
string |
no |
Bug reports: the screen or feature the problem is on, e.g. Today, Needs attention, a client's page. "don't know" when the user does not know. |
| steps_to_reproduce |
string |
no |
Bug reports: what the user clicked or tried, step by step. "don't know" when they do not know. |
| subject |
string |
yes |
A short summary of the request. |
SupportTicketPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of SupportTicket, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of SupportTicket |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Task set templatePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of TaskSetTemplate, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of TaskSetTemplate |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
TaskSetTemplate
A reusable set of tasks with default minutes and visits a week. Editing one never changes a Work Order made from it.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the template was created.
-
is_default
boolean
- Whether it is the agency's default template.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
name
string, required
- The template's name, unique in the agency.
-
service_type
string, required
- The service it is for.
-
tasks
array of object, required
- The tasks, each name once.
-
tasks[].minutes_per_task
integer, required
- Minutes each time.
-
tasks[].task_category
string, required
- The service the task belongs to.
-
tasks[].task_name
string, required
- The task, as the Work Order names it.
-
tasks[].times_per_week
integer, required
- Visits a week.
-
updated_at
string
- When it last changed.
| Field |
Type |
Required |
Description |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the template was created. |
| is_default |
boolean |
no |
Whether it is the agency's default template. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| name |
string |
yes |
The template's name, unique in the agency. |
| service_type |
string |
yes |
The service it is for. |
| tasks |
array of object |
yes |
The tasks, each name once. |
| tasks[].minutes_per_task |
integer |
yes |
Minutes each time. |
| tasks[].task_category |
string |
yes |
The service the task belongs to. |
| tasks[].task_name |
string |
yes |
The task, as the Work Order names it. |
| tasks[].times_per_week |
integer |
yes |
Visits a week. |
| updated_at |
string |
no |
When it last changed. |
TaskSetTemplateInput
A task set template's fields. A tasks list sent replaces the template's tasks. A PATCH carries lock_version.
-
is_default
boolean
- Whether it is the agency's default template.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
name
string
- The template's name, unique in the agency.
-
service_type
string
- The service it is for.
-
tasks
array of object
- The tasks, each name once.
-
tasks[].minutes_per_task
integer, required
- Minutes each time.
-
tasks[].task_category
string, required
- The service the task belongs to.
-
tasks[].task_name
string, required
- The task, as the Work Order names it.
-
tasks[].times_per_week
integer, required
- Visits a week.
| Field |
Type |
Required |
Description |
| is_default |
boolean |
no |
Whether it is the agency's default template. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| name |
string |
no |
The template's name, unique in the agency. |
| service_type |
string |
no |
The service it is for. |
| tasks |
array of object |
no |
The tasks, each name once. |
| tasks[].minutes_per_task |
integer |
yes |
Minutes each time. |
| tasks[].task_category |
string |
yes |
The service the task belongs to. |
| tasks[].task_name |
string |
yes |
The task, as the Work Order names it. |
| tasks[].times_per_week |
integer |
yes |
Visits a week. |
TelephonyCleared
-
settings
object, required
-
settings.telephony_match_window_minutes
string
- Minutes a call may be from its visit, 1 to 480.
-
settings.telephony_send_sms_confirmation
string
- SMS confirmation; unavailable for now.
-
settings.twilio_account_sid
object, required
-
settings.twilio_account_sid.masked
string, required
- Its last four characters, as ****1234; empty when none.
-
settings.twilio_account_sid.set
boolean, required
- Whether an Account SID is saved.
-
settings.twilio_auth_token
object, required
-
settings.twilio_auth_token.set
boolean, required
- Whether a value is saved; read it with the secrets operation.
-
settings.twilio_phone_number
string
- The agency's own Twilio number, 10 digits.
-
settings.twilio_record_calls
string
- Whether calls are recorded.
-
warnings
array of string, required
- Set when the old number's webhook could not be reset.
| Field |
Type |
Required |
Description |
| settings |
object |
yes |
|
| settings.telephony_match_window_minutes |
string |
no |
Minutes a call may be from its visit, 1 to 480. |
| settings.telephony_send_sms_confirmation |
string |
no |
SMS confirmation; unavailable for now. |
| settings.twilio_account_sid |
object |
yes |
|
| settings.twilio_account_sid.masked |
string |
yes |
Its last four characters, as ****1234; empty when none. |
| settings.twilio_account_sid.set |
boolean |
yes |
Whether an Account SID is saved. |
| settings.twilio_auth_token |
object |
yes |
|
| settings.twilio_auth_token.set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
| settings.twilio_phone_number |
string |
no |
The agency's own Twilio number, 10 digits. |
| settings.twilio_record_calls |
string |
no |
Whether calls are recorded. |
| warnings |
array of string |
yes |
Set when the old number's webhook could not be reset. |
TelephonyPinsAssigned
-
assigned
integer, required
- Caregivers given a PIN.
-
incomplete
boolean
- Whether it stopped part way.
-
reason
string
- Why it stopped: no free PIN left (exhausted), a refused audit row rolled back the next assignment (audit_log_failed; the ones before it were kept), or a caregiver changed during the run (stale).
| Field |
Type |
Required |
Description |
| assigned |
integer |
yes |
Caregivers given a PIN. |
| incomplete |
boolean |
no |
Whether it stopped part way. |
| reason |
string |
no |
Why it stopped: no free PIN left (exhausted), a refused audit row rolled back the next assignment (audit_log_failed; the ones before it were kept), or a caregiver changed during the run (stale). |
TelephonySave
-
cleared
boolean
- True when every credential was blank, so it was cleared.
-
settings
object, required
-
settings.telephony_match_window_minutes
string
- Minutes a call may be from its visit, 1 to 480.
-
settings.telephony_send_sms_confirmation
string
- SMS confirmation; unavailable for now.
-
settings.twilio_account_sid
object, required
-
settings.twilio_account_sid.masked
string, required
- Its last four characters, as ****1234; empty when none.
-
settings.twilio_account_sid.set
boolean, required
- Whether an Account SID is saved.
-
settings.twilio_auth_token
object, required
-
settings.twilio_auth_token.set
boolean, required
- Whether a value is saved; read it with the secrets operation.
-
settings.twilio_phone_number
string
- The agency's own Twilio number, 10 digits.
-
settings.twilio_record_calls
string
- Whether calls are recorded.
-
warnings
array of string, required
- What went through but needs attention.
| Field |
Type |
Required |
Description |
| cleared |
boolean |
no |
True when every credential was blank, so it was cleared. |
| settings |
object |
yes |
|
| settings.telephony_match_window_minutes |
string |
no |
Minutes a call may be from its visit, 1 to 480. |
| settings.telephony_send_sms_confirmation |
string |
no |
SMS confirmation; unavailable for now. |
| settings.twilio_account_sid |
object |
yes |
|
| settings.twilio_account_sid.masked |
string |
yes |
Its last four characters, as ****1234; empty when none. |
| settings.twilio_account_sid.set |
boolean |
yes |
Whether an Account SID is saved. |
| settings.twilio_auth_token |
object |
yes |
|
| settings.twilio_auth_token.set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
| settings.twilio_phone_number |
string |
no |
The agency's own Twilio number, 10 digits. |
| settings.twilio_record_calls |
string |
no |
Whether calls are recorded. |
| warnings |
array of string |
yes |
What went through but needs attention. |
TelephonySettings
-
telephony_match_window_minutes
string
- Minutes a call may be from its visit, 1 to 480.
-
telephony_send_sms_confirmation
string
- SMS confirmation; unavailable for now.
-
twilio_account_sid
object, required
-
twilio_account_sid.masked
string, required
- Its last four characters, as ****1234; empty when none.
-
twilio_account_sid.set
boolean, required
- Whether an Account SID is saved.
-
twilio_auth_token
object, required
-
twilio_auth_token.set
boolean, required
- Whether a value is saved; read it with the secrets operation.
-
twilio_phone_number
string
- The agency's own Twilio number, 10 digits.
-
twilio_record_calls
string
- Whether calls are recorded.
| Field |
Type |
Required |
Description |
| telephony_match_window_minutes |
string |
no |
Minutes a call may be from its visit, 1 to 480. |
| telephony_send_sms_confirmation |
string |
no |
SMS confirmation; unavailable for now. |
| twilio_account_sid |
object |
yes |
|
| twilio_account_sid.masked |
string |
yes |
Its last four characters, as ****1234; empty when none. |
| twilio_account_sid.set |
boolean |
yes |
Whether an Account SID is saved. |
| twilio_auth_token |
object |
yes |
|
| twilio_auth_token.set |
boolean |
yes |
Whether a value is saved; read it with the secrets operation. |
| twilio_phone_number |
string |
no |
The agency's own Twilio number, 10 digits. |
| twilio_record_calls |
string |
no |
Whether calls are recorded. |
TelephonySettingsUpdate
-
telephony_match_window_minutes
string
- Minutes, 1 to 480.
-
twilio_account_sid
string
- The Account SID; null or blank keeps the saved one.
-
twilio_auth_token
string
- The Auth Token; null or blank keeps the saved one.
-
twilio_phone_number
string
- The agency's Twilio number.
-
twilio_record_calls
string
- Whether calls are recorded.
| Field |
Type |
Required |
Description |
| telephony_match_window_minutes |
string |
no |
Minutes, 1 to 480. |
| twilio_account_sid |
string |
no |
The Account SID; null or blank keeps the saved one. |
| twilio_auth_token |
string |
no |
The Auth Token; null or blank keeps the saved one. |
| twilio_phone_number |
string |
no |
The agency's Twilio number. |
| twilio_record_calls |
string |
no |
Whether calls are recorded. |
TelephonyTest
-
twilio_account_sid
string
- The Account SID; null or blank keeps the saved one.
-
twilio_auth_token
string
- The Auth Token; null or blank keeps the saved one.
-
twilio_phone_number
string
- The agency's Twilio number.
| Field |
Type |
Required |
Description |
| twilio_account_sid |
string |
no |
The Account SID; null or blank keeps the saved one. |
| twilio_auth_token |
string |
no |
The Auth Token; null or blank keeps the saved one. |
| twilio_phone_number |
string |
no |
The agency's Twilio number. |
TelephonyTested
-
owns_number
boolean, required
- Always true.
| Field |
Type |
Required |
Description |
| owns_number |
boolean |
yes |
Always true. |
Timesheet
The hours worked for one client and caregiver in one billing period.
-
assignment_id
string
- The assignment it bills under.
-
billing_period_end
string
-
billing_period_start
string
-
caregiver_id
string, required
- The caregiver who worked.
-
client_id
string, required
- The client served.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
entries
array of object
- The dated hours, one per visit, as they are now. An entry can change without moving this record's updated_at; re-read the record by id to have them current.
-
entries[].date
string
-
entries[].hours_worked
string
- Hours worked that day.
-
entries[].time_in
string
- HH:MM:SS, local time.
-
entries[].time_out
string
- HH:MM:SS, local time.
-
first_half_hours
string
- Hours, days 1 to 15.
-
half_signature_sources
object
- Where each half's signatures come from (US-101.25, US-119.10, US-119.14): a signed half-month summary whose attested hours agree with what the Timesheets bill (summary, its id), one whose hours differ by a quarter hour or more on the days listed (hours_differ, its id and the days; not counted as signed), the same summary signed by this Timesheet's own Work Order's paper card (paper, its id), one signed by the paper card of another Work Order of the client and caregiver (paper_elsewhere, its id and that Work Order's number; not counted as signed), another card's rows written when this Timesheet was returned for correction, counted as signed until its submit refreshes them from the corrected entries (paper_refresh, its id; US-119.16), or neither (missing). Not who signed or when.
-
half_signature_sources.first
string
- Days 1 to 15.
-
half_signature_sources.first_hours_differ_days
array of string
- For hours_differ: the dates of days 1 to 15 whose billed hours differ from the summary's by a quarter hour or more; null otherwise.
-
half_signature_sources.first_paper_work_order_number
string
- For paper_elsewhere: the number of the Work Order whose paper card signs days 1 to 15; null otherwise.
-
half_signature_sources.first_summary_id
string
- The half-month summary that signs days 1 to 15.
-
half_signature_sources.second
string
- Day 16 on.
-
half_signature_sources.second_hours_differ_days
array of string
- For hours_differ: the dates of day 16 on whose billed hours differ from the summary's by a quarter hour or more; null otherwise.
-
half_signature_sources.second_paper_work_order_number
string
- For paper_elsewhere: the number of the Work Order whose paper card signs day 16 on; null otherwise.
-
half_signature_sources.second_summary_id
string
- The half-month summary that signs day 16 on.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
second_half_hours
string
- Hours, day 16 on.
-
status
string, required
-
total_hours
string
- Hours in the billing period.
-
updated_at
string
- When the record last changed, its hours included.
-
wo_number
string
- The WO # of the work order it was made from, as the pages show it, or the number imported as text when it names no Work Order; null when it names none.
-
work_order_id
string
- The work order it was made from; null when it names none in this agency.
-
work_order_number
string
- The stored link to the work order it was made from: the Work Order's id, or a number imported as text. Read wo_number and work_order_id instead.
| Field |
Type |
Required |
Description |
| assignment_id |
string |
no |
The assignment it bills under. |
| billing_period_end |
string |
no |
|
| billing_period_start |
string |
no |
|
| caregiver_id |
string |
yes |
The caregiver who worked. |
| client_id |
string |
yes |
The client served. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| entries |
array of object |
no |
The dated hours, one per visit, as they are now. An entry can change without moving this record's updated_at; re-read the record by id to have them current. |
| entries[].date |
string |
no |
|
| entries[].hours_worked |
string |
no |
Hours worked that day. |
| entries[].time_in |
string |
no |
HH:MM:SS, local time. |
| entries[].time_out |
string |
no |
HH:MM:SS, local time. |
| first_half_hours |
string |
no |
Hours, days 1 to 15. |
| half_signature_sources |
object |
no |
Where each half's signatures come from (US-101.25, US-119.10, US-119.14): a signed half-month summary whose attested hours agree with what the Timesheets bill (summary, its id), one whose hours differ by a quarter hour or more on the days listed (hours_differ, its id and the days; not counted as signed), the same summary signed by this Timesheet's own Work Order's paper card (paper, its id), one signed by the paper card of another Work Order of the client and caregiver (paper_elsewhere, its id and that Work Order's number; not counted as signed), another card's rows written when this Timesheet was returned for correction, counted as signed until its submit refreshes them from the corrected entries (paper_refresh, its id; US-119.16), or neither (missing). Not who signed or when. |
| half_signature_sources.first |
string |
no |
Days 1 to 15. |
| half_signature_sources.first_hours_differ_days |
array of string |
no |
For hours_differ: the dates of days 1 to 15 whose billed hours differ from the summary's by a quarter hour or more; null otherwise. |
| half_signature_sources.first_paper_work_order_number |
string |
no |
For paper_elsewhere: the number of the Work Order whose paper card signs days 1 to 15; null otherwise. |
| half_signature_sources.first_summary_id |
string |
no |
The half-month summary that signs days 1 to 15. |
| half_signature_sources.second |
string |
no |
Day 16 on. |
| half_signature_sources.second_hours_differ_days |
array of string |
no |
For hours_differ: the dates of day 16 on whose billed hours differ from the summary's by a quarter hour or more; null otherwise. |
| half_signature_sources.second_paper_work_order_number |
string |
no |
For paper_elsewhere: the number of the Work Order whose paper card signs day 16 on; null otherwise. |
| half_signature_sources.second_summary_id |
string |
no |
The half-month summary that signs day 16 on. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| second_half_hours |
string |
no |
Hours, day 16 on. |
| status |
string |
yes |
|
| total_hours |
string |
no |
Hours in the billing period. |
| updated_at |
string |
no |
When the record last changed, its hours included. |
| wo_number |
string |
no |
The WO # of the work order it was made from, as the pages show it, or the number imported as text when it names no Work Order; null when it names none. |
| work_order_id |
string |
no |
The work order it was made from; null when it names none in this agency. |
| work_order_number |
string |
no |
The stored link to the work order it was made from: the Work Order's id, or a number imported as text. Read wo_number and work_order_id instead. |
TimesheetCreate
-
month
integer, required
- The month, 1 to 12.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| month |
integer |
yes |
The month, 1 to 12. |
| year |
integer |
yes |
The year. |
TimesheetEntry
-
date
string
-
day_of_week
string
-
deviation_explanation
string
-
evv_clock_in
string
- The EVV clock-in pulled from the matched visit.
-
evv_clock_out
string
- The EVV clock-out pulled from the matched visit.
-
evv_source
string
-
hours_worked
string
- Hours that day.
-
id
string
- The record's id.
-
time_in
string
- HH:MM:SS.
-
time_out
string
- HH:MM:SS.
-
timesheet_id
string
- The record's id.
-
travel_time
boolean
-
visit_id
string
- The EVV visit the times were pulled from.
| Field |
Type |
Required |
Description |
| date |
string |
no |
|
| day_of_week |
string |
no |
|
| deviation_explanation |
string |
no |
|
| evv_clock_in |
string |
no |
The EVV clock-in pulled from the matched visit. |
| evv_clock_out |
string |
no |
The EVV clock-out pulled from the matched visit. |
| evv_source |
string |
no |
|
| hours_worked |
string |
no |
Hours that day. |
| id |
string |
no |
The record's id. |
| time_in |
string |
no |
HH:MM:SS. |
| time_out |
string |
no |
HH:MM:SS. |
| timesheet_id |
string |
no |
The record's id. |
| travel_time |
boolean |
no |
|
| visit_id |
string |
no |
The EVV visit the times were pulled from. |
TimesheetEntryCreate
-
date
string, required
- The date, YYYY-MM-DD.
-
deviation_explanation
string
- Why the times deviate from the plan; null or blank clears it.
-
time_in
string
- HH:MM:SS; null or blank clears it.
-
time_out
string
- HH:MM:SS; null or blank clears it.
-
travel_time
boolean
- Whether the entry is travel time.
| Field |
Type |
Required |
Description |
| date |
string |
yes |
The date, YYYY-MM-DD. |
| deviation_explanation |
string |
no |
Why the times deviate from the plan; null or blank clears it. |
| time_in |
string |
no |
HH:MM:SS; null or blank clears it. |
| time_out |
string |
no |
HH:MM:SS; null or blank clears it. |
| travel_time |
boolean |
no |
Whether the entry is travel time. |
TimesheetEntryUpdate
-
date
string
- The date, YYYY-MM-DD.
-
deviation_explanation
string
- Why the times deviate from the plan; null or blank clears it.
-
time_in
string
- HH:MM:SS; null or blank clears it.
-
time_out
string
- HH:MM:SS; null or blank clears it.
-
travel_time
boolean
- Whether the entry is travel time.
| Field |
Type |
Required |
Description |
| date |
string |
no |
The date, YYYY-MM-DD. |
| deviation_explanation |
string |
no |
Why the times deviate from the plan; null or blank clears it. |
| time_in |
string |
no |
HH:MM:SS; null or blank clears it. |
| time_out |
string |
no |
HH:MM:SS; null or blank clears it. |
| travel_time |
boolean |
no |
Whether the entry is travel time. |
TimesheetPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Timesheet, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Timesheet |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
TimesheetReject
-
reason
string, required
- Why it is rejected.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why it is rejected. |
TimesheetSign
-
client_name
string
- The client's name, for a client slot.
-
resign
boolean
- Re-sign a signed slot (needs signed_records.void).
-
signature_type
string, required
- The slot to sign.
| Field |
Type |
Required |
Description |
| client_name |
string |
no |
The client's name, for a client slot. |
| resign |
boolean |
no |
Re-sign a signed slot (needs signed_records.void). |
| signature_type |
string |
yes |
The slot to sign. |
TimesheetSubmit
-
acknowledge_missing_signatures
boolean
- Submit with signatures missing.
| Field |
Type |
Required |
Description |
| acknowledge_missing_signatures |
boolean |
no |
Submit with signatures missing. |
TimesheetTask
-
completed
boolean
-
frequency
integer
- Times done.
-
id
string
- The record's id.
-
notes
string
-
task_category
string
-
task_name
string
-
time_minutes
integer
- Minutes spent.
-
timesheet_entry_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
|
| frequency |
integer |
no |
Times done. |
| id |
string |
no |
The record's id. |
| notes |
string |
no |
|
| task_category |
string |
no |
|
| task_name |
string |
no |
|
| time_minutes |
integer |
no |
Minutes spent. |
| timesheet_entry_id |
string |
no |
The record's id. |
TimesheetTaskCreate
-
completed
boolean
- Whether the task was done.
-
frequency
integer
- Times done.
-
notes
string
- Notes on the task; null or blank clears them.
-
task_name
string, required
- HCPF's task name.
-
time_minutes
integer
- Minutes spent.
-
timesheet_entry_id
string, required
- The entry the task was done on.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Whether the task was done. |
| frequency |
integer |
no |
Times done. |
| notes |
string |
no |
Notes on the task; null or blank clears them. |
| task_name |
string |
yes |
HCPF's task name. |
| time_minutes |
integer |
no |
Minutes spent. |
| timesheet_entry_id |
string |
yes |
The entry the task was done on. |
TimesheetTaskUpdate
-
completed
boolean
- Whether the task was done.
-
frequency
integer
- Times done.
-
notes
string
- Notes on the task; null or blank clears them.
-
time_minutes
integer
- Minutes spent.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
Whether the task was done. |
| frequency |
integer |
no |
Times done. |
| notes |
string |
no |
Notes on the task; null or blank clears them. |
| time_minutes |
integer |
no |
Minutes spent. |
TpidAuthorization
-
tpid_authorized
boolean, required
- Whether the agency confirmed its Trading Partner authorization.
| Field |
Type |
Required |
Description |
| tpid_authorized |
boolean |
yes |
Whether the agency confirmed its Trading Partner authorization. |
TpidAuthorizationUpdate
-
authorized
boolean, required
- Whether the agency authorized HomeCareBilling as its Trading Partner: confirmed (true) or not (false).
| Field |
Type |
Required |
Description |
| authorized |
boolean |
yes |
Whether the agency authorized HomeCareBilling as its Trading Partner: confirmed (true) or not (false). |
TrainingBulkCompletion
-
completed_date
string, required
- The completion date, YYYY-MM-DD; its year is the training year.
-
replace
boolean
- Also move dates already recorded.
| Field |
Type |
Required |
Description |
| completed_date |
string |
yes |
The completion date, YYYY-MM-DD; its year is the training year. |
| replace |
boolean |
no |
Also move dates already recorded. |
TwoFactorReset
-
two_factor_enabled
boolean, required
- Always false once reset.
-
user_id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| two_factor_enabled |
boolean |
yes |
Always false once reset. |
| user_id |
string |
yes |
The record's id. |
Underpayment
A paid claim HCPF paid less than its published rate says, after the adjustments that lawfully explain short pay (deductible, coinsurance, copay, prior payer, patient liability). It blocks nothing. Dismiss it with POST /api/v1/revenue-warnings/dismissals, sending kind underpayment, its claim_id as subject_id, and its fingerprint; a dismissed row whose paid amount changes is listed again.
-
carcs
array of object, required
-
carcs[].amount
string, required
- The amount the remittance adjusted for this reason.
-
carcs[].description
string, required
- What the code means, in plain English.
-
carcs[].group_code
string, required
- The CARC group: CO, PR, OA or PI.
-
carcs[].reason_code
string, required
- The CARC reason code.
-
claim_id
string, required
- The underpaid claim.
-
client_id
string, required
- The record's id.
-
dismissed
boolean, required
- Whether a member dismissed it at these amounts.
-
expected
string, required
- The lesser of the charge and the published rate times the units.
-
fingerprint
string, required
- The expected and paid amounts, joined with a colon.
-
gap
string, required
- How much less HCPF paid than expected, after explained adjustments.
-
id
string, required
- The claim's id, as claim_id.
-
kind
string, required
- Always underpayment: the kind to dismiss it as.
-
modifiers
array of string, required
-
paid
string, required
- What HCPF paid.
-
paid_date
string, required
- When the remittance paid it.
-
procedure_code
string, required
- The HCPCS code billed.
-
published_rate
string, required
- HCPF's published rate per unit on the dates of service.
-
service_date_from
string, required
- The first date of service.
-
service_date_to
string, required
- The last date of service.
-
tenant_rate
string, required
- The agency's own rate per unit the claim was billed at; null for a claim from a spreadsheet upload. Shown only: the expected amount never uses it.
-
units
string, required
- Units billed.
| Field |
Type |
Required |
Description |
| carcs |
array of object |
yes |
|
| carcs[].amount |
string |
yes |
The amount the remittance adjusted for this reason. |
| carcs[].description |
string |
yes |
What the code means, in plain English. |
| carcs[].group_code |
string |
yes |
The CARC group: CO, PR, OA or PI. |
| carcs[].reason_code |
string |
yes |
The CARC reason code. |
| claim_id |
string |
yes |
The underpaid claim. |
| client_id |
string |
yes |
The record's id. |
| dismissed |
boolean |
yes |
Whether a member dismissed it at these amounts. |
| expected |
string |
yes |
The lesser of the charge and the published rate times the units. |
| fingerprint |
string |
yes |
The expected and paid amounts, joined with a colon. |
| gap |
string |
yes |
How much less HCPF paid than expected, after explained adjustments. |
| id |
string |
yes |
The claim's id, as claim_id. |
| kind |
string |
yes |
Always underpayment: the kind to dismiss it as. |
| modifiers |
array of string |
yes |
|
| paid |
string |
yes |
What HCPF paid. |
| paid_date |
string |
yes |
When the remittance paid it. |
| procedure_code |
string |
yes |
The HCPCS code billed. |
| published_rate |
string |
yes |
HCPF's published rate per unit on the dates of service. |
| service_date_from |
string |
yes |
The first date of service. |
| service_date_to |
string |
yes |
The last date of service. |
| tenant_rate |
string |
yes |
The agency's own rate per unit the claim was billed at; null for a claim from a spreadsheet upload. Shown only: the expected amount never uses it. |
| units |
string |
yes |
Units billed. |
UnderpaymentAdjustment
-
amount
string, required
- The amount the remittance adjusted for this reason.
-
description
string, required
- What the code means, in plain English.
-
group_code
string, required
- The CARC group: CO, PR, OA or PI.
-
reason_code
string, required
- The CARC reason code.
| Field |
Type |
Required |
Description |
| amount |
string |
yes |
The amount the remittance adjusted for this reason. |
| description |
string |
yes |
What the code means, in plain English. |
| group_code |
string |
yes |
The CARC group: CO, PR, OA or PI. |
| reason_code |
string |
yes |
The CARC reason code. |
UnderpaymentPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Underpayment, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
paid_from
string, required
- The first paid date read.
-
paid_to
string, required
- The last paid date read.
-
total
integer, required
- Every matching row.
-
total_gap
string, required
- The sum of every listed row's gap, not just this page's.
-
truncated
boolean, required
- True when the period held more paid claims than one read judges (5000): only the newest-paid were judged. Narrow the dates to see the rest.
| Field |
Type |
Required |
Description |
| data |
array of Underpayment |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| paid_from |
string |
yes |
The first paid date read. |
| paid_to |
string |
yes |
The last paid date read. |
| total |
integer |
yes |
Every matching row. |
| total_gap |
string |
yes |
The sum of every listed row's gap, not just this page's. |
| truncated |
boolean |
yes |
True when the period held more paid claims than one read judges (5000): only the newest-paid were judged. Narrow the dates to see the rest. |
UniversityVideo
A narrated HCB University video of a job in the app, recorded on the demo agency, so it holds no agency's data.
-
duration_ms
integer, required
- The English render's length in milliseconds.
-
locales
array of string, required
- The languages the video has a render in, e.g. ["en"].
-
section
string, required
- The catalog section, e.g. billing or clients.
-
slug
string, required
- The video's id, as GET /university/videos/{slug} takes it.
-
summary
string, required
- One or two sentences on what the video shows.
-
title
string, required
- The video's title.
-
url
string, required
- The video's player page in HomeCareBilling; it asks the viewer to sign in.
| Field |
Type |
Required |
Description |
| duration_ms |
integer |
yes |
The English render's length in milliseconds. |
| locales |
array of string |
yes |
The languages the video has a render in, e.g. ["en"]. |
| section |
string |
yes |
The catalog section, e.g. billing or clients. |
| slug |
string |
yes |
The video's id, as GET /university/videos/{slug} takes it. |
| summary |
string |
yes |
One or two sentences on what the video shows. |
| title |
string |
yes |
The video's title. |
| url |
string |
yes |
The video's player page in HomeCareBilling; it asks the viewer to sign in. |
UniversityVideoDetail
An HCB University video with its chapters, and the video, captions and poster of each rendered language as signed URLs to play or show directly.
-
chapters
array of object, required
- The English render's chapters, in order.
-
chapters[].start_ms
integer, required
- Where it starts, in milliseconds.
-
chapters[].title
string, required
- The chapter's title.
-
duration_ms
integer, required
- The English render's length in milliseconds.
-
locales
array of string, required
- The languages the video has a render in, e.g. ["en"].
-
pages
array of string, required
- The app pages the video shows, e.g. ["/batches"].
-
renders
array of object, required
- One per rendered language, in language order.
-
renders[].captions_url
string, required
- The WebVTT captions. A signed storage URL that works for 6 hours; null when it could not be signed.
-
renders[].locale
string, required
- The language, e.g. en.
-
renders[].poster_url
string, required
- The poster image (JPEG). A signed storage URL that works for 6 hours; null when it could not be signed.
-
renders[].render_id
string, required
- The render's id.
-
renders[].video_url
string, required
- The MP4. A signed storage URL that works for 6 hours; null when it could not be signed.
-
section
string, required
- The catalog section, e.g. billing or clients.
-
slug
string, required
- The video's id, as GET /university/videos/{slug} takes it.
-
summary
string, required
- One or two sentences on what the video shows.
-
title
string, required
- The video's title.
-
url
string, required
- The video's player page in HomeCareBilling; it asks the viewer to sign in.
| Field |
Type |
Required |
Description |
| chapters |
array of object |
yes |
The English render's chapters, in order. |
| chapters[].start_ms |
integer |
yes |
Where it starts, in milliseconds. |
| chapters[].title |
string |
yes |
The chapter's title. |
| duration_ms |
integer |
yes |
The English render's length in milliseconds. |
| locales |
array of string |
yes |
The languages the video has a render in, e.g. ["en"]. |
| pages |
array of string |
yes |
The app pages the video shows, e.g. ["/batches"]. |
| renders |
array of object |
yes |
One per rendered language, in language order. |
| renders[].captions_url |
string |
yes |
The WebVTT captions. A signed storage URL that works for 6 hours; null when it could not be signed. |
| renders[].locale |
string |
yes |
The language, e.g. en. |
| renders[].poster_url |
string |
yes |
The poster image (JPEG). A signed storage URL that works for 6 hours; null when it could not be signed. |
| renders[].render_id |
string |
yes |
The render's id. |
| renders[].video_url |
string |
yes |
The MP4. A signed storage URL that works for 6 hours; null when it could not be signed. |
| section |
string |
yes |
The catalog section, e.g. billing or clients. |
| slug |
string |
yes |
The video's id, as GET /university/videos/{slug} takes it. |
| summary |
string |
yes |
One or two sentences on what the video shows. |
| title |
string |
yes |
The video's title. |
| url |
string |
yes |
The video's player page in HomeCareBilling; it asks the viewer to sign in. |
UniversityVideoPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of UniversityVideo, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of UniversityVideo |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
UnmatchedCall
-
call_assignment
string
- A clock-in or clock-out.
-
call_datetime
string, required
- When the call came in (UTC).
-
caregiver_id
string
- The record's id.
-
chosen_visit_id
string
- The record's id.
-
dismiss_reason
string
- Why the office dismissed it.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the server kept it (UTC).
-
matched_visit_id
string
- The record's id.
-
originating_phone_last4
string
- The calling number's last four digits; the rest is masked.
-
reason
string
- Why it was kept: no_matching_visit or outside_window (no visit to clock), or, when the visit the caregiver chose refused it once locked (chosen_visit_id), visit_closed, visit_reassigned, visit_already_clocked, no_clock_in or not_recorded.
-
reviewed_at
string
- When the office matched or dismissed it (UTC).
-
status
string, required
- pending, matched or dismissed.
| Field |
Type |
Required |
Description |
| call_assignment |
string |
no |
A clock-in or clock-out. |
| call_datetime |
string |
yes |
When the call came in (UTC). |
| caregiver_id |
string |
no |
The record's id. |
| chosen_visit_id |
string |
no |
The record's id. |
| dismiss_reason |
string |
no |
Why the office dismissed it. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the server kept it (UTC). |
| matched_visit_id |
string |
no |
The record's id. |
| originating_phone_last4 |
string |
no |
The calling number's last four digits; the rest is masked. |
| reason |
string |
no |
Why it was kept: no_matching_visit or outside_window (no visit to clock), or, when the visit the caregiver chose refused it once locked (chosen_visit_id), visit_closed, visit_reassigned, visit_already_clocked, no_clock_in or not_recorded. |
| reviewed_at |
string |
no |
When the office matched or dismissed it (UTC). |
| status |
string |
yes |
pending, matched or dismissed. |
UnmatchedCallDismiss
-
reason
string, required
- Why it is dismissed: 10 to 500 characters, as on the screen.
| Field |
Type |
Required |
Description |
| reason |
string |
yes |
Why it is dismissed: 10 to 500 characters, as on the screen. |
UnmatchedCallMatch
-
visit_id
string, required
- The visit the call clocked.
| Field |
Type |
Required |
Description |
| visit_id |
string |
yes |
The visit the call clocked. |
UnmatchedCallPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of UnmatchedCall, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of UnmatchedCall |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
VaccinationBulkEntry
-
caregiver_id
string, required
- The caregiver.
-
notes
string
- Notes.
-
status
string, required
-
vaccination_date
string
- When vaccinated.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver. |
| notes |
string |
no |
Notes. |
| status |
string |
yes |
|
| vaccination_date |
string |
no |
When vaccinated. |
VaccinationBulkResult
-
updated
integer, required
- Vaccination records written.
| Field |
Type |
Required |
Description |
| updated |
integer |
yes |
Vaccination records written. |
VaccinationBulkUpdate
-
updates
array of object, required
- One per caregiver: {caregiver_id, status, vaccination_date, notes}.
-
updates[].caregiver_id
string, required
- The caregiver.
-
updates[].notes
string
- Notes.
-
updates[].status
string, required
-
updates[].vaccination_date
string
- When vaccinated.
-
year
integer, required
- The flu season's year.
| Field |
Type |
Required |
Description |
| updates |
array of object |
yes |
One per caregiver: {caregiver_id, status, vaccination_date, notes}. |
| updates[].caregiver_id |
string |
yes |
The caregiver. |
| updates[].notes |
string |
no |
Notes. |
| updates[].status |
string |
yes |
|
| updates[].vaccination_date |
string |
no |
When vaccinated. |
| year |
integer |
yes |
The flu season's year. |
Visit
-
actual_end_time
string
- When the caregiver clocked out (UTC).
-
actual_start_time
string
- When the caregiver clocked in (UTC).
-
adjusted_end_time
string
- The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
adjusted_start_time
string
- The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
alternate_location
boolean
- Whether the service was given away from the client's home address.
-
assignment_id
string
- The assignment the visit came from, if any.
-
billable_hours
string
- Hours the visit bills.
-
caregiver_id
string, required
- The caregiver who served.
-
client_id
string, required
- The client served.
-
client_signature_captured
boolean
- Whether the client signed for the visit.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
group_identifier
string
- For a group visit, the caregiver's name for the group session.
-
id
string, required
- The record's id.
-
import_external_id
string
- For an imported visit, that system's id for it (Sandata's Visit ID); else null.
-
import_system
string
- For an imported visit, the system it was imported from; else null.
-
inserted_at
string
- When the visit was created.
-
location_verified
boolean
- Whether the clock-in was inside the client's geofence.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
memo
string
- The agency's note on the visit.
-
modifiers
array of string
- The procedure modifiers.
-
payable_hours
string
- Hours the visit pays the caregiver.
-
procedure_code
string
- The HCPCS code.
-
sandata_sent_at
string
- When Sandata first took the visit.
-
sandata_submission_status
string
- Where the visit is in the Sandata queue.
-
sandata_visit_id
string
- Sandata's id for the visit, once Sandata has it.
-
scheduled_end_time
string
- Scheduled end (UTC).
-
scheduled_start_time
string
- Scheduled start (UTC).
-
service_date
string, required
- The day of service.
-
source
string
- How the visit was created; import is an EVV vendor's record of a shift, read-only, beside the agency's own visit for it.
-
status
string, required
- Where the visit is in its lifecycle.
-
updated_at
string
- When the visit last changed.
-
visit_type
string
| Field |
Type |
Required |
Description |
| actual_end_time |
string |
no |
When the caregiver clocked out (UTC). |
| actual_start_time |
string |
no |
When the caregiver clocked in (UTC). |
| adjusted_end_time |
string |
no |
The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| adjusted_start_time |
string |
no |
The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| alternate_location |
boolean |
no |
Whether the service was given away from the client's home address. |
| assignment_id |
string |
no |
The assignment the visit came from, if any. |
| billable_hours |
string |
no |
Hours the visit bills. |
| caregiver_id |
string |
yes |
The caregiver who served. |
| client_id |
string |
yes |
The client served. |
| client_signature_captured |
boolean |
no |
Whether the client signed for the visit. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| group_identifier |
string |
no |
For a group visit, the caregiver's name for the group session. |
| id |
string |
yes |
The record's id. |
| import_external_id |
string |
no |
For an imported visit, that system's id for it (Sandata's Visit ID); else null. |
| import_system |
string |
no |
For an imported visit, the system it was imported from; else null. |
| inserted_at |
string |
no |
When the visit was created. |
| location_verified |
boolean |
no |
Whether the clock-in was inside the client's geofence. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| memo |
string |
no |
The agency's note on the visit. |
| modifiers |
array of string |
no |
The procedure modifiers. |
| payable_hours |
string |
no |
Hours the visit pays the caregiver. |
| procedure_code |
string |
no |
The HCPCS code. |
| sandata_sent_at |
string |
no |
When Sandata first took the visit. |
| sandata_submission_status |
string |
no |
Where the visit is in the Sandata queue. |
| sandata_visit_id |
string |
no |
Sandata's id for the visit, once Sandata has it. |
| scheduled_end_time |
string |
no |
Scheduled end (UTC). |
| scheduled_start_time |
string |
no |
Scheduled start (UTC). |
| service_date |
string |
yes |
The day of service. |
| source |
string |
no |
How the visit was created; import is an EVV vendor's record of a shift, read-only, beside the agency's own visit for it. |
| status |
string |
yes |
Where the visit is in its lifecycle. |
| updated_at |
string |
no |
When the visit last changed. |
| visit_type |
string |
no |
|
Visit exceptionPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of VisitException, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of VisitException |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
VisitBulkTransition
-
cancellation_note
string
- A note on the cancellation (a cancel only, up to 1000 characters); needs a cancellation_reason.
-
cancellation_reason
string
- Why the visit is cancelled (a cancel only), from the web's pick list: caregiver_call_off (Caregiver called off), client_cancelled (Client cancelled (don't come)), client_hospitalized (Client in hospital or facility), client_unavailable (Client not home or unavailable), schedule_change (Schedule changed), weather_emergency (Weather or emergency), entered_in_error (Entered in error or duplicate), other (Other). Optional; a cancel without one records no reason.
-
ids
array of string, required
- The visits to move, at most 100.
| Field |
Type |
Required |
Description |
| cancellation_note |
string |
no |
A note on the cancellation (a cancel only, up to 1000 characters); needs a cancellation_reason. |
| cancellation_reason |
string |
no |
Why the visit is cancelled (a cancel only), from the web's pick list: caregiver_call_off (Caregiver called off), client_cancelled (Client cancelled (don't come)), client_hospitalized (Client in hospital or facility), client_unavailable (Client not home or unavailable), schedule_change (Schedule changed), weather_emergency (Weather or emergency), entered_in_error (Entered in error or duplicate), other (Other). Optional; a cancel without one records no reason. |
| ids |
array of string |
yes |
The visits to move, at most 100. |
VisitBulkTransitionResult
-
failed
array of object, required
- Not moved: not_found (not this agency's visit), invalid_transition (its status cannot move there), exception_not_dismissed (a cancel whose open exception could not be dismissed), imported_visit (a visit imported from another EVV system, US-101.9, which is read-only here) or error (the write failed; retrying is safe).
-
failed[].id
string, required
- The record's id.
-
failed[].reason
string, required
- Why.
-
succeeded_ids
array of string, required
- Moved now.
| Field |
Type |
Required |
Description |
| failed |
array of object |
yes |
Not moved: not_found (not this agency's visit), invalid_transition (its status cannot move there), exception_not_dismissed (a cancel whose open exception could not be dismissed), imported_visit (a visit imported from another EVV system, US-101.9, which is read-only here) or error (the write failed; retrying is safe). |
| failed[].id |
string |
yes |
The record's id. |
| failed[].reason |
string |
yes |
Why. |
| succeeded_ids |
array of string |
yes |
Moved now. |
VisitCall
A clock event: the caregiver's app, a phone call (IVR) or a manual entry. Calls are never edited; a correction is a change.
-
call_assignment
string
- What the call recorded.
-
call_datetime
string
- When the call was made (UTC).
-
call_type
string
- How the call was made.
-
device_id
string
- The device that made the call.
-
gps_accuracy_meters
number
-
id
string
- The record's id.
-
latitude
string
- Where the device was.
-
location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
-
longitude
string
- Where the device was.
-
superseded_at
string
- Set when the visit was reassigned away from the caregiver who made the call: the call stays as history and no longer counts as the visit's clock.
| Field |
Type |
Required |
Description |
| call_assignment |
string |
no |
What the call recorded. |
| call_datetime |
string |
no |
When the call was made (UTC). |
| call_type |
string |
no |
How the call was made. |
| device_id |
string |
no |
The device that made the call. |
| gps_accuracy_meters |
number |
no |
|
| id |
string |
no |
The record's id. |
| latitude |
string |
no |
Where the device was. |
| location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
| longitude |
string |
no |
Where the device was. |
| superseded_at |
string |
no |
Set when the visit was reassigned away from the caregiver who made the call: the call stays as history and no longer counts as the visit's clock. |
VisitChange
A correction the agency made to the visit, with Colorado's reason code.
-
change_datetime
string
- When it changed (UTC).
-
change_source
string
- Where the change was made.
-
changed_by_id
string
- The user who made it.
-
field_changed
string
- The field that changed.
-
id
string
- The record's id.
-
new_value
object
-
old_value
object
-
reason_code
string
- Why it changed: Colorado's reason code, such as CLKIN, CLKOUT, SCHED or OTHER.
-
reason_memo
string
-
resolution_code
string
| Field |
Type |
Required |
Description |
| change_datetime |
string |
no |
When it changed (UTC). |
| change_source |
string |
no |
Where the change was made. |
| changed_by_id |
string |
no |
The user who made it. |
| field_changed |
string |
no |
The field that changed. |
| id |
string |
no |
The record's id. |
| new_value |
object |
no |
|
| old_value |
object |
no |
|
| reason_code |
string |
no |
Why it changed: Colorado's reason code, such as CLKIN, CLKOUT, SCHED or OTHER. |
| reason_memo |
string |
no |
|
| resolution_code |
string |
no |
|
VisitCreate
A new scheduled visit. Its service date is the scheduled start's day in Mountain time. The client, caregiver and assignment must be this agency's, the assignment for that client and caregiver. A visit overlapping the caregiver's others, on an assignment no longer open, or with a window over 24 hours is created with a warning; a window over 31 days is refused.
-
alternate_location
boolean
- Whether the service was given away from the client's home address.
-
assignment_id
string
- The assignment the visit comes from, if any.
-
caregiver_id
string, required
- The caregiver serving.
-
client_id
string, required
- The client served.
-
group_identifier
string
- For a group visit, the caregiver's name for the group session.
-
memo
string
- The agency's note on the visit.
-
modifiers
array of string
- The procedure modifiers.
-
procedure_code
string
- The HCPCS code.
-
scheduled_end_time
string, required
- Scheduled end, with its UTC offset; refused without one, as the start.
-
scheduled_start_time
string, required
- Scheduled start, with its UTC offset (Z or -06:00); one without is refused (422 time_offset_required), as is a value that is not a time (422 invalid_time).
-
visit_type
string
| Field |
Type |
Required |
Description |
| alternate_location |
boolean |
no |
Whether the service was given away from the client's home address. |
| assignment_id |
string |
no |
The assignment the visit comes from, if any. |
| caregiver_id |
string |
yes |
The caregiver serving. |
| client_id |
string |
yes |
The client served. |
| group_identifier |
string |
no |
For a group visit, the caregiver's name for the group session. |
| memo |
string |
no |
The agency's note on the visit. |
| modifiers |
array of string |
no |
The procedure modifiers. |
| procedure_code |
string |
no |
The HCPCS code. |
| scheduled_end_time |
string |
yes |
Scheduled end, with its UTC offset; refused without one, as the start. |
| scheduled_start_time |
string |
yes |
Scheduled start, with its UTC offset (Z or -06:00); one without is refused (422 time_offset_required), as is a value that is not a time (422 invalid_time). |
| visit_type |
string |
no |
|
VisitDeleteLinks
-
timesheet_entries
array of object, required
- Timesheet entries whose EVV times were pulled from it, the first 50 by date.
-
timesheet_entries[].date
string, required
-
timesheet_entries[].id
string, required
- The record's id.
-
timesheet_entries[].timesheet_id
string, required
- The record's id.
-
timesheet_entries[].work_order_number
string, required
- The number of the Work Order its timesheet names; null when it names none this agency has.
-
timesheet_entries_total
integer, required
- How many such entries there are.
-
unfrozen_months
array of object, required
- Work Order months its signature alone froze, open to edits again.
-
unfrozen_months[].month
integer, required
-
unfrozen_months[].work_order_id
string, required
- The record's id.
-
unfrozen_months[].work_order_number
string, required
- The Work Order's number.
-
unfrozen_months[].year
integer, required
| Field |
Type |
Required |
Description |
| timesheet_entries |
array of object |
yes |
Timesheet entries whose EVV times were pulled from it, the first 50 by date. |
| timesheet_entries[].date |
string |
yes |
|
| timesheet_entries[].id |
string |
yes |
The record's id. |
| timesheet_entries[].timesheet_id |
string |
yes |
The record's id. |
| timesheet_entries[].work_order_number |
string |
yes |
The number of the Work Order its timesheet names; null when it names none this agency has. |
| timesheet_entries_total |
integer |
yes |
How many such entries there are. |
| unfrozen_months |
array of object |
yes |
Work Order months its signature alone froze, open to edits again. |
| unfrozen_months[].month |
integer |
yes |
|
| unfrozen_months[].work_order_id |
string |
yes |
The record's id. |
| unfrozen_months[].work_order_number |
string |
yes |
The Work Order's number. |
| unfrozen_months[].year |
integer |
yes |
|
VisitDetail
-
actual_end_time
string
- When the caregiver clocked out (UTC).
-
actual_start_time
string
- When the caregiver clocked in (UTC).
-
adjusted_end_time
string
- The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
adjusted_start_time
string
- The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
alternate_location
boolean
- Whether the service was given away from the client's home address.
-
assignment_id
string
- The assignment the visit came from, if any.
-
billable_hours
string
- Hours the visit bills.
-
calls
array of object, required
- The newest 200 at most, oldest first.
-
calls[].call_assignment
string
- What the call recorded.
-
calls[].call_datetime
string
- When the call was made (UTC).
-
calls[].call_type
string
- How the call was made.
-
calls[].device_id
string
- The device that made the call.
-
calls[].gps_accuracy_meters
number
-
calls[].id
string
- The record's id.
-
calls[].latitude
string
- Where the device was.
-
calls[].location_description
string
- GPS warnings recorded with the call, such as outside the geofence.
-
calls[].longitude
string
- Where the device was.
-
calls[].superseded_at
string
- Set when the visit was reassigned away from the caregiver who made the call: the call stays as history and no longer counts as the visit's clock.
-
caregiver_id
string, required
- The caregiver who served.
-
changes
array of object, required
- The newest 200 at most, oldest first.
-
changes[].change_datetime
string
- When it changed (UTC).
-
changes[].change_source
string
- Where the change was made.
-
changes[].changed_by_id
string
- The user who made it.
-
changes[].field_changed
string
- The field that changed.
-
changes[].id
string
- The record's id.
-
changes[].new_value
object
-
changes[].old_value
object
-
changes[].reason_code
string
- Why it changed: Colorado's reason code, such as CLKIN, CLKOUT, SCHED or OTHER.
-
changes[].reason_memo
string
-
changes[].resolution_code
string
-
client_id
string, required
- The client served.
-
client_signature_captured
boolean
- Whether the client signed for the visit.
-
deleted_at
string
- Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records.
-
group_identifier
string
- For a group visit, the caregiver's name for the group session.
-
id
string, required
- The record's id.
-
import_external_id
string
- For an imported visit, that system's id for it (Sandata's Visit ID); else null.
-
import_system
string
- For an imported visit, the system it was imported from; else null.
-
inserted_at
string
- When the visit was created.
-
location_verified
boolean
- Whether the clock-in was inside the client's geofence.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
memo
string
- The agency's note on the visit.
-
modifiers
array of string
- The procedure modifiers.
-
payable_hours
string
- Hours the visit pays the caregiver.
-
procedure_code
string
- The HCPCS code.
-
sandata_sent_at
string
- When Sandata first took the visit.
-
sandata_submission_status
string
- Where the visit is in the Sandata queue.
-
sandata_visit_id
string
- Sandata's id for the visit, once Sandata has it.
-
scheduled_end_time
string
- Scheduled end (UTC).
-
scheduled_start_time
string
- Scheduled start (UTC).
-
service_date
string, required
- The day of service.
-
signatures
array of object, required
- The newest 200 at most, oldest first.
-
signatures[].captured_at
string
- When it was signed (UTC).
-
signatures[].id
string
- The record's id.
-
signatures[].signature_type
string
-
signatures[].signer_name
string
-
signatures[].signer_type
string
-
source
string
- How the visit was created; import is an EVV vendor's record of a shift, read-only, beside the agency's own visit for it.
-
status
string, required
- Where the visit is in its lifecycle.
-
updated_at
string
- When the visit last changed.
-
visit_type
string
| Field |
Type |
Required |
Description |
| actual_end_time |
string |
no |
When the caregiver clocked out (UTC). |
| actual_start_time |
string |
no |
When the caregiver clocked in (UTC). |
| adjusted_end_time |
string |
no |
The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| adjusted_start_time |
string |
no |
The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| alternate_location |
boolean |
no |
Whether the service was given away from the client's home address. |
| assignment_id |
string |
no |
The assignment the visit came from, if any. |
| billable_hours |
string |
no |
Hours the visit bills. |
| calls |
array of object |
yes |
The newest 200 at most, oldest first. |
| calls[].call_assignment |
string |
no |
What the call recorded. |
| calls[].call_datetime |
string |
no |
When the call was made (UTC). |
| calls[].call_type |
string |
no |
How the call was made. |
| calls[].device_id |
string |
no |
The device that made the call. |
| calls[].gps_accuracy_meters |
number |
no |
|
| calls[].id |
string |
no |
The record's id. |
| calls[].latitude |
string |
no |
Where the device was. |
| calls[].location_description |
string |
no |
GPS warnings recorded with the call, such as outside the geofence. |
| calls[].longitude |
string |
no |
Where the device was. |
| calls[].superseded_at |
string |
no |
Set when the visit was reassigned away from the caregiver who made the call: the call stays as history and no longer counts as the visit's clock. |
| caregiver_id |
string |
yes |
The caregiver who served. |
| changes |
array of object |
yes |
The newest 200 at most, oldest first. |
| changes[].change_datetime |
string |
no |
When it changed (UTC). |
| changes[].change_source |
string |
no |
Where the change was made. |
| changes[].changed_by_id |
string |
no |
The user who made it. |
| changes[].field_changed |
string |
no |
The field that changed. |
| changes[].id |
string |
no |
The record's id. |
| changes[].new_value |
object |
no |
|
| changes[].old_value |
object |
no |
|
| changes[].reason_code |
string |
no |
Why it changed: Colorado's reason code, such as CLKIN, CLKOUT, SCHED or OTHER. |
| changes[].reason_memo |
string |
no |
|
| changes[].resolution_code |
string |
no |
|
| client_id |
string |
yes |
The client served. |
| client_signature_captured |
boolean |
no |
Whether the client signed for the visit. |
| deleted_at |
string |
no |
Set when the agency deleted the record. Only a list with include_deleted=true returns deleted records. |
| group_identifier |
string |
no |
For a group visit, the caregiver's name for the group session. |
| id |
string |
yes |
The record's id. |
| import_external_id |
string |
no |
For an imported visit, that system's id for it (Sandata's Visit ID); else null. |
| import_system |
string |
no |
For an imported visit, the system it was imported from; else null. |
| inserted_at |
string |
no |
When the visit was created. |
| location_verified |
boolean |
no |
Whether the clock-in was inside the client's geofence. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| memo |
string |
no |
The agency's note on the visit. |
| modifiers |
array of string |
no |
The procedure modifiers. |
| payable_hours |
string |
no |
Hours the visit pays the caregiver. |
| procedure_code |
string |
no |
The HCPCS code. |
| sandata_sent_at |
string |
no |
When Sandata first took the visit. |
| sandata_submission_status |
string |
no |
Where the visit is in the Sandata queue. |
| sandata_visit_id |
string |
no |
Sandata's id for the visit, once Sandata has it. |
| scheduled_end_time |
string |
no |
Scheduled end (UTC). |
| scheduled_start_time |
string |
no |
Scheduled start (UTC). |
| service_date |
string |
yes |
The day of service. |
| signatures |
array of object |
yes |
The newest 200 at most, oldest first. |
| signatures[].captured_at |
string |
no |
When it was signed (UTC). |
| signatures[].id |
string |
no |
The record's id. |
| signatures[].signature_type |
string |
no |
|
| signatures[].signer_name |
string |
no |
|
| signatures[].signer_type |
string |
no |
|
| source |
string |
no |
How the visit was created; import is an EVV vendor's record of a shift, read-only, beside the agency's own visit for it. |
| status |
string |
yes |
Where the visit is in its lifecycle. |
| updated_at |
string |
no |
When the visit last changed. |
| visit_type |
string |
no |
|
VisitException
-
assigned_to_id
string
- The member it is assigned to; set by the assignment operation.
-
auto_detected
boolean
- Whether a rule detected it, rather than a person.
-
detected_at
string, required
- When it was detected (UTC).
-
detection_details
object
- What the rule measured, such as the distance from the geofence.
-
exception_type
string, required
- The rule the visit broke.
-
id
string, required
- The record's id.
-
inserted_at
string
- When the exception was recorded.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
resolution_code
string
- Why it was resolved as it was.
-
resolution_notes
string
- The office's note on the resolution.
-
resolved_at
string
- When it was resolved (UTC).
-
resolved_by_id
string
- The member who resolved it.
-
sandata_ack_status
string
- Where the acknowledgement to Sandata is; null until the reconciler first looks at it, held means it can never be sent.
-
sandata_exception_id
string
- The Addendum exception code Sandata reported for the visit (for example "15"), when it did; only an ACK code (15, 21) is acknowledged.
-
sandata_reason_code
integer
- The Colorado Appendix 3 reason code that describes the exception type, as reference data; null when the type has none. Sandata receives no reason code from an exception: an acknowledgement carries the Addendum exception code, and a visit change carries the reason its own edit records (GET /api/v1/visit-exceptions/reason-codes lists them).
-
severity
string, required
-
status
string, required
- open until resolved.
-
updated_at
string
- When the exception last changed.
-
visit_id
string, required
- The visit the exception is on.
| Field |
Type |
Required |
Description |
| assigned_to_id |
string |
no |
The member it is assigned to; set by the assignment operation. |
| auto_detected |
boolean |
no |
Whether a rule detected it, rather than a person. |
| detected_at |
string |
yes |
When it was detected (UTC). |
| detection_details |
object |
no |
What the rule measured, such as the distance from the geofence. |
| exception_type |
string |
yes |
The rule the visit broke. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the exception was recorded. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| resolution_code |
string |
no |
Why it was resolved as it was. |
| resolution_notes |
string |
no |
The office's note on the resolution. |
| resolved_at |
string |
no |
When it was resolved (UTC). |
| resolved_by_id |
string |
no |
The member who resolved it. |
| sandata_ack_status |
string |
no |
Where the acknowledgement to Sandata is; null until the reconciler first looks at it, held means it can never be sent. |
| sandata_exception_id |
string |
no |
The Addendum exception code Sandata reported for the visit (for example "15"), when it did; only an ACK code (15, 21) is acknowledged. |
| sandata_reason_code |
integer |
no |
The Colorado Appendix 3 reason code that describes the exception type, as reference data; null when the type has none. Sandata receives no reason code from an exception: an acknowledgement carries the Addendum exception code, and a visit change carries the reason its own edit records (GET /api/v1/visit-exceptions/reason-codes lists them). |
| severity |
string |
yes |
|
| status |
string |
yes |
open until resolved. |
| updated_at |
string |
no |
When the exception last changed. |
| visit_id |
string |
yes |
The visit the exception is on. |
VisitExceptionAssignment
-
assigned_to_id
string, required
- A user of this agency, or null to unassign. A user of another agency answers 422 assignee_not_found.
| Field |
Type |
Required |
Description |
| assigned_to_id |
string |
yes |
A user of this agency, or null to unassign. A user of another agency answers 422 assignee_not_found. |
VisitExceptionBulkResolve
-
action
string, required
- What to do with them; dismiss needs resolution_notes.
-
ids
array of string, required
- The exceptions to resolve, at most 100.
-
resolution_code
string, required
- Why they are resolved.
-
resolution_notes
string
- Required to dismiss. At most 2000 characters.
| Field |
Type |
Required |
Description |
| action |
string |
yes |
What to do with them; dismiss needs resolution_notes. |
| ids |
array of string |
yes |
The exceptions to resolve, at most 100. |
| resolution_code |
string |
yes |
Why they are resolved. |
| resolution_notes |
string |
no |
Required to dismiss. At most 2000 characters. |
VisitExceptionBulkResult
-
failed_ids
array of string, required
- Not resolved because the write failed; retrying them is safe.
-
resolved_ids
array of string, required
- Resolved now.
-
skipped_ids
array of string, required
- Not open, or not this agency's: nothing was done to them.
| Field |
Type |
Required |
Description |
| failed_ids |
array of string |
yes |
Not resolved because the write failed; retrying them is safe. |
| resolved_ids |
array of string |
yes |
Resolved now. |
| skipped_ids |
array of string |
yes |
Not open, or not this agency's: nothing was done to them. |
VisitExceptionReasonCodes
-
resolution_codes
array of string, required
- What resolution_code takes.
-
sandata_reason_codes
array of object, required
- The Colorado Appendix 3 reason codes that describe each exception type (an exception's sandata_reason_code), as reference data.
-
sandata_reason_codes[].code
integer, required
-
sandata_reason_codes[].description
string, required
-
sandata_reason_codes[].location_required
boolean, required
- The note must give the client's location.
-
sandata_reason_codes[].note_required
boolean, required
- Sandata needs a note with this code; it is built from the client's address, not from resolution_notes.
| Field |
Type |
Required |
Description |
| resolution_codes |
array of string |
yes |
What resolution_code takes. |
| sandata_reason_codes |
array of object |
yes |
The Colorado Appendix 3 reason codes that describe each exception type (an exception's sandata_reason_code), as reference data. |
| sandata_reason_codes[].code |
integer |
yes |
|
| sandata_reason_codes[].description |
string |
yes |
|
| sandata_reason_codes[].location_required |
boolean |
yes |
The note must give the client's location. |
| sandata_reason_codes[].note_required |
boolean |
yes |
Sandata needs a note with this code; it is built from the client's address, not from resolution_notes. |
VisitExceptionResolve
-
action
string, required
- What to do with it: acknowledge marks it reviewed; correct also sets the visit's adjusted times; dismiss flags it as not applicable and needs resolution_notes.
-
adjusted_end_time
string
- Required for correct: the visit's corrected end (ISO 8601, with an offset).
-
adjusted_start_time
string
- Required for correct: the visit's corrected start (ISO 8601, with an offset).
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
resolution_code
string, required
- Why it is resolved (GET /api/v1/visit-exceptions/reason-codes).
-
resolution_notes
string
- Required to dismiss. At most 2000 characters.
| Field |
Type |
Required |
Description |
| action |
string |
yes |
What to do with it: acknowledge marks it reviewed; correct also sets the visit's adjusted times; dismiss flags it as not applicable and needs resolution_notes. |
| adjusted_end_time |
string |
no |
Required for correct: the visit's corrected end (ISO 8601, with an offset). |
| adjusted_start_time |
string |
no |
Required for correct: the visit's corrected start (ISO 8601, with an offset). |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| resolution_code |
string |
yes |
Why it is resolved (GET /api/v1/visit-exceptions/reason-codes). |
| resolution_notes |
string |
no |
Required to dismiss. At most 2000 characters. |
VisitImport
-
completed_at
string
-
counts
VisitImportCounts
- How its rows were taken, once it has ended.
-
error
object
- A failed import's reason: missing_columns, csv_parse_error, empty_file, too_many_rows, file_too_large, unreadable_file, internal_error, abandoned (stopped and not resumed within 2 hours).
-
error.code
string
-
error.message
string
-
file_name
string
- The file's name as sent.
-
findings
array of VisitImportFinding
- Warnings about rows that were written, once it has ended: a visit on a day a submitted Returned Timesheet holds, left unlinked to that day's care log.
-
id
string, required
- The record's id.
-
inserted_at
string
- When it was started.
-
status
string, required
-
total_rows
integer
- The file's visit rows.
-
unresolved
array of VisitImportUnresolved
- The rows not written, by number and reason.
| Field |
Type |
Required |
Description |
| completed_at |
string |
no |
|
| counts |
VisitImportCounts |
no |
How its rows were taken, once it has ended. |
| error |
object |
no |
A failed import's reason: missing_columns, csv_parse_error, empty_file, too_many_rows, file_too_large, unreadable_file, internal_error, abandoned (stopped and not resumed within 2 hours). |
| error.code |
string |
no |
|
| error.message |
string |
no |
|
| file_name |
string |
no |
The file's name as sent. |
| findings |
array of VisitImportFinding |
no |
Warnings about rows that were written, once it has ended: a visit on a day a submitted Returned Timesheet holds, left unlinked to that day's care log. |
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When it was started. |
| status |
string |
yes |
|
| total_rows |
integer |
no |
The file's visit rows. |
| unresolved |
array of VisitImportUnresolved |
no |
The rows not written, by number and reason. |
VisitImportCounts
-
already_ours
integer, required
- HCB's own visits, as HCB sent them to Sandata; never imported.
-
changed
integer, required
- Visits imported before whose times, code or people Sandata changed.
-
new
integer, required
- Sandata visits not imported before.
-
unchanged
integer, required
- Visits imported before, as they were.
-
unresolved
integer, required
- Rows not written; see unresolved.
| Field |
Type |
Required |
Description |
| already_ours |
integer |
yes |
HCB's own visits, as HCB sent them to Sandata; never imported. |
| changed |
integer |
yes |
Visits imported before whose times, code or people Sandata changed. |
| new |
integer |
yes |
Sandata visits not imported before. |
| unchanged |
integer |
yes |
Visits imported before, as they were. |
| unresolved |
integer |
yes |
Rows not written; see unresolved. |
VisitImportFinding
-
care_log_id
string
-
message
string, required
- The warning in words.
-
period
object
- The Returned Timesheet's billing period.
-
period.end
string
-
period.start
string
-
row
integer, required
- The row's number, the heading row being 1.
-
rule_id
string, required
-
service_date
string
-
status
string
- The Returned Timesheet's status: submitted, approved or exported.
-
timesheet_id
string
| Field |
Type |
Required |
Description |
| care_log_id |
string |
no |
|
| message |
string |
yes |
The warning in words. |
| period |
object |
no |
The Returned Timesheet's billing period. |
| period.end |
string |
no |
|
| period.start |
string |
no |
|
| row |
integer |
yes |
The row's number, the heading row being 1. |
| rule_id |
string |
yes |
|
| service_date |
string |
no |
|
| status |
string |
no |
The Returned Timesheet's status: submitted, approved or exported. |
| timesheet_id |
string |
no |
|
VisitImportPreview
-
counts
VisitImportCounts, required
-
dry_run
boolean, required
- Always true: nothing was written.
-
total_rows
integer, required
- The file's visit rows.
-
unresolved
array of VisitImportUnresolved, required
| Field |
Type |
Required |
Description |
| counts |
VisitImportCounts |
yes |
|
| dry_run |
boolean |
yes |
Always true: nothing was written. |
| total_rows |
integer |
yes |
The file's visit rows. |
| unresolved |
array of VisitImportUnresolved |
yes |
|
VisitImportUnresolved
-
message
string, required
- The reason in words.
-
reason
string, required
-
row
integer, required
- The row's number, the heading row being 1.
| Field |
Type |
Required |
Description |
| message |
string |
yes |
The reason in words. |
| reason |
string |
yes |
|
| row |
integer |
yes |
The row's number, the heading row being 1. |
VisitPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of Visit, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of Visit |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
VisitReassign
The caregiver to hand the visit to, and the lock_version you read.
-
caregiver_id
string, required
- One of this agency's caregivers.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
One of this agency's caregivers. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
VisitSandataException
-
code
string, required
- The ACK exception Sandata raised on the visit, as its Aggregator shows it: 15 Unmatched Client ID / Phone, 21 No Show Exception.
| Field |
Type |
Required |
Description |
| code |
string |
yes |
The ACK exception Sandata raised on the visit, as its Aggregator shows it: 15 Unmatched Client ID / Phone, 21 No Show Exception. |
VisitSignatureSummary
Who signed for the visit and how. The image is not returned here.
-
captured_at
string
- When it was signed (UTC).
-
id
string
- The record's id.
-
signature_type
string
-
signer_name
string
-
signer_type
string
| Field |
Type |
Required |
Description |
| captured_at |
string |
no |
When it was signed (UTC). |
| id |
string |
no |
The record's id. |
| signature_type |
string |
no |
|
| signer_name |
string |
no |
|
| signer_type |
string |
no |
|
VisitTransition
The status to move the visit to, and the lock_version you read.
-
cancellation_note
string
- A note on the cancellation (a cancel only, up to 1000 characters); needs a cancellation_reason.
-
cancellation_reason
string
- Why the visit is cancelled (a cancel only), from the web's pick list: caregiver_call_off (Caregiver called off), client_cancelled (Client cancelled (don't come)), client_hospitalized (Client in hospital or facility), client_unavailable (Client not home or unavailable), schedule_change (Schedule changed), weather_emergency (Weather or emergency), entered_in_error (Entered in error or duplicate), other (Other). Optional; a cancel without one records no reason.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
status
string, required
- The status to move the visit to.
| Field |
Type |
Required |
Description |
| cancellation_note |
string |
no |
A note on the cancellation (a cancel only, up to 1000 characters); needs a cancellation_reason. |
| cancellation_reason |
string |
no |
Why the visit is cancelled (a cancel only), from the web's pick list: caregiver_call_off (Caregiver called off), client_cancelled (Client cancelled (don't come)), client_hospitalized (Client in hospital or facility), client_unavailable (Client not home or unavailable), schedule_change (Schedule changed), weather_emergency (Weather or emergency), entered_in_error (Entered in error or duplicate), other (Other). Optional; a cancel without one records no reason. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| status |
string |
yes |
The status to move the visit to. |
VisitUpdate
Fields to change, plus the lock_version you read (required). Moving the scheduled start moves the service date to the start's Mountain day (warned as service_date_moved); a window over 24 hours is saved with a long_window warning, one over 31 days is refused. visit_type changes only while the visit is not queued for or sent to Sandata; a visit that is not a group visit carries no group_identifier.
-
adjusted_end_time
string
- The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
adjusted_start_time
string
- The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required).
-
alternate_location
boolean
- Whether the service was given away from the client's home address.
-
group_identifier
string
- For a group visit, the caregiver's name for the group session.
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
memo
string
- The agency's note on the visit.
-
modifiers
array of string
- The procedure modifiers.
-
procedure_code
string
- The HCPCS code.
-
reason_code
string
- Colorado's reason for a change to adjusted_start_time or adjusted_end_time. Left out, null or blank, the change is saved with OTHER and the answer warns.
-
reason_memo
string
- A note on the reason, kept with the change.
-
scheduled_end_time
string
- Scheduled end, with its UTC offset; refused without one, as the start.
-
scheduled_start_time
string
- Scheduled start, with its UTC offset (Z or -06:00); one without is refused (422 time_offset_required), as is a value that is not a time (422 invalid_time).
-
visit_type
string
| Field |
Type |
Required |
Description |
| adjusted_end_time |
string |
no |
The agency's corrected end, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| adjusted_start_time |
string |
no |
The agency's corrected start, when it changed the clocked one (UTC); written with its UTC offset, refused without one (422 time_offset_required). |
| alternate_location |
boolean |
no |
Whether the service was given away from the client's home address. |
| group_identifier |
string |
no |
For a group visit, the caregiver's name for the group session. |
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| memo |
string |
no |
The agency's note on the visit. |
| modifiers |
array of string |
no |
The procedure modifiers. |
| procedure_code |
string |
no |
The HCPCS code. |
| reason_code |
string |
no |
Colorado's reason for a change to adjusted_start_time or adjusted_end_time. Left out, null or blank, the change is saved with OTHER and the answer warns. |
| reason_memo |
string |
no |
A note on the reason, kept with the change. |
| scheduled_end_time |
string |
no |
Scheduled end, with its UTC offset; refused without one, as the start. |
| scheduled_start_time |
string |
no |
Scheduled start, with its UTC offset (Z or -06:00); one without is refused (422 time_offset_required), as is a value that is not a time (422 invalid_time). |
| visit_type |
string |
no |
|
VisitWriteResult
-
data
Visit, required
-
warnings
array of object, required
- What the write was saved despite: reason_code_missing (an adjusted time changed with no reason_code; recorded as OTHER), overlapping_visit (the caregiver has another visit at that time), group_identifier_dropped (a group name sent for a visit that is not a group visit, which keeps none), assignment_not_open, long_window (over 24 hours) service_date_moved (a moved start re-dated the visit), and on a reassignment calls_superseded (the earlier caregiver's clock calls stay as history and no longer count) caregiver_not_active or months_unfrozen (the visit's signature alone froze the earlier caregiver's Work Order month, which can be edited again).
-
warnings[].code
string, required
-
warnings[].field
string
-
warnings[].message
string, required
| Field |
Type |
Required |
Description |
| data |
Visit |
yes |
|
| warnings |
array of object |
yes |
What the write was saved despite: reason_code_missing (an adjusted time changed with no reason_code; recorded as OTHER), overlapping_visit (the caregiver has another visit at that time), group_identifier_dropped (a group name sent for a visit that is not a group visit, which keeps none), assignment_not_open, long_window (over 24 hours) service_date_moved (a moved start re-dated the visit), and on a reassignment calls_superseded (the earlier caregiver's clock calls stay as history and no longer count) caregiver_not_active or months_unfrozen (the visit's signature alone froze the earlier caregiver's Work Order month, which can be edited again). |
| warnings[].code |
string |
yes |
|
| warnings[].field |
string |
no |
|
| warnings[].message |
string |
yes |
|
W4Change
A caregiver whose W-4 changed since payroll was last told.
-
adp_file_number
string
- The caregiver's ADP file number.
-
caregiver_id
string, required
- The caregiver.
-
caregiver_name
string
- "Last, First", as the payroll pages show it.
-
id
string, required
- The caregiver (the row is the caregiver).
-
w4_changed_at
string, required
- When the W-4 changed; POST /caregivers/{id}/w4-sent-to-payroll takes it back to clear it.
-
w4_dependents
integer
- The dependents now on file.
-
w4_filing_status
string
- The filing status now on file.
| Field |
Type |
Required |
Description |
| adp_file_number |
string |
no |
The caregiver's ADP file number. |
| caregiver_id |
string |
yes |
The caregiver. |
| caregiver_name |
string |
no |
"Last, First", as the payroll pages show it. |
| id |
string |
yes |
The caregiver (the row is the caregiver). |
| w4_changed_at |
string |
yes |
When the W-4 changed; POST /caregivers/{id}/w4-sent-to-payroll takes it back to clear it. |
| w4_dependents |
integer |
no |
The dependents now on file. |
| w4_filing_status |
string |
no |
The filing status now on file. |
W4ChangePage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of W4Change, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of W4Change |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
Warning
-
fix
object
- Where it is fixed, when a page fixes it.
-
fix.label
string, required
- What the link says.
-
fix.path
string, required
- The app route that fixes it.
-
id
string, required
- The rule that raised it, stable, e.g. client_care.medicaid_id_pending.
-
message
string, required
- For a person to read.
| Field |
Type |
Required |
Description |
| fix |
object |
no |
Where it is fixed, when a page fixes it. |
| fix.label |
string |
yes |
What the link says. |
| fix.path |
string |
yes |
The app route that fixes it. |
| id |
string |
yes |
The rule that raised it, stable, e.g. client_care.medicaid_id_pending. |
| message |
string |
yes |
For a person to read. |
WebhookDelivery
-
attempts
integer
- Attempts so far.
-
created_at
string
- When the event was queued (UTC).
-
delivered_at
string
- When it was delivered (UTC).
-
endpoint_id
string, required
- The endpoint it went to.
-
event_id
string
- The event's id, the same on every attempt.
-
event_type
string, required
- The event type.
-
id
string, required
- The record's id.
-
last_error
string
- The last failure.
-
last_status_code
integer
- The last HTTP status the endpoint answered.
-
status
string, required
- Where it stands.
| Field |
Type |
Required |
Description |
| attempts |
integer |
no |
Attempts so far. |
| created_at |
string |
no |
When the event was queued (UTC). |
| delivered_at |
string |
no |
When it was delivered (UTC). |
| endpoint_id |
string |
yes |
The endpoint it went to. |
| event_id |
string |
no |
The event's id, the same on every attempt. |
| event_type |
string |
yes |
The event type. |
| id |
string |
yes |
The record's id. |
| last_error |
string |
no |
The last failure. |
| last_status_code |
integer |
no |
The last HTTP status the endpoint answered. |
| status |
string |
yes |
Where it stands. |
WebhookDeliveryPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].attempts
integer
- Attempts so far.
-
data[].created_at
string
- When the event was queued (UTC).
-
data[].delivered_at
string
- When it was delivered (UTC).
-
data[].endpoint_id
string, required
- The endpoint it went to.
-
data[].event_id
string
- The event's id, the same on every attempt.
-
data[].event_type
string, required
- The event type.
-
data[].id
string, required
- The record's id.
-
data[].last_error
string
- The last failure.
-
data[].last_status_code
integer
- The last HTTP status the endpoint answered.
-
data[].status
string, required
- Where it stands.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].attempts |
integer |
no |
Attempts so far. |
| data[].created_at |
string |
no |
When the event was queued (UTC). |
| data[].delivered_at |
string |
no |
When it was delivered (UTC). |
| data[].endpoint_id |
string |
yes |
The endpoint it went to. |
| data[].event_id |
string |
no |
The event's id, the same on every attempt. |
| data[].event_type |
string |
yes |
The event type. |
| data[].id |
string |
yes |
The record's id. |
| data[].last_error |
string |
no |
The last failure. |
| data[].last_status_code |
integer |
no |
The last HTTP status the endpoint answered. |
| data[].status |
string |
yes |
Where it stands. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
WebhookEndpoint
-
active
boolean, required
- Whether events are sent.
-
created_at
string
- When it was registered (UTC).
-
events
array of string, required
- Event types sent.
-
id
string, required
- The record's id.
-
url
string, required
- Where events are posted.
| Field |
Type |
Required |
Description |
| active |
boolean |
yes |
Whether events are sent. |
| created_at |
string |
no |
When it was registered (UTC). |
| events |
array of string |
yes |
Event types sent. |
| id |
string |
yes |
The record's id. |
| url |
string |
yes |
Where events are posted. |
WebhookEndpointCreate
-
events
array of string, required
- Event types to send.
-
url
string, required
- An https URL.
| Field |
Type |
Required |
Description |
| events |
array of string |
yes |
Event types to send. |
| url |
string |
yes |
An https URL. |
WebhookEndpointCreated
-
data
object, required
-
data.active
boolean, required
- Whether events are sent.
-
data.created_at
string
- When it was registered (UTC).
-
data.events
array of string, required
- Event types sent.
-
data.id
string, required
- The record's id.
-
data.url
string, required
- Where events are posted.
-
secret
string, required
- The signing secret, shown this once.
| Field |
Type |
Required |
Description |
| data |
object |
yes |
|
| data.active |
boolean |
yes |
Whether events are sent. |
| data.created_at |
string |
no |
When it was registered (UTC). |
| data.events |
array of string |
yes |
Event types sent. |
| data.id |
string |
yes |
The record's id. |
| data.url |
string |
yes |
Where events are posted. |
| secret |
string |
yes |
The signing secret, shown this once. |
WebhookEndpointPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of object, required
-
data[].active
boolean, required
- Whether events are sent.
-
data[].created_at
string
- When it was registered (UTC).
-
data[].events
array of string, required
- Event types sent.
-
data[].id
string, required
- The record's id.
-
data[].url
string, required
- Where events are posted.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of object |
yes |
|
| data[].active |
boolean |
yes |
Whether events are sent. |
| data[].created_at |
string |
no |
When it was registered (UTC). |
| data[].events |
array of string |
yes |
Event types sent. |
| data[].id |
string |
yes |
The record's id. |
| data[].url |
string |
yes |
Where events are posted. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
WebhookEndpointUpdate
-
active
boolean
- Whether events are sent.
-
events
array of string
- Event types to send.
| Field |
Type |
Required |
Description |
| active |
boolean |
no |
Whether events are sent. |
| events |
array of string |
no |
Event types to send. |
Work orderPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of WorkOrder, required
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of WorkOrder |
yes |
|
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| total |
integer |
yes |
Every matching row. |
WorkOrder
What was ordered for one client, caregiver and month. An archived work order leaves the plain list; a list with updated_since (a sync) includes archived ones, archived_at set, so a sync learns of an archive.
-
archived_at
string
- Set when the agency archived it.
-
authorization_id
string
- The service authorization (PAR) it bills against, one of this client's and not deleted; see /api/v1/authorizations. Null or blank unlinks it; another id answers 422 naming authorization_id.
-
billing_code
string
- The HCPCS code billed for the service.
-
caregiver_id
string, required
- The caregiver serving.
-
client_id
string, required
- The client served.
-
client_signature_date
string
- When the client signed; null while unsigned.
-
closing_date
string
-
effective_date
string
-
entries
array of object
- The delivered days: one per Care Log of this Work Order's client, caregiver, service and shift in its month, as they are now; a combined (legacy) Work Order's are every day recorded on it, since no Care Log carries a combined service. A day can change without moving this record's updated_at; re-read the record by id to have it current.
-
entries[].date
string
-
entries[].hours_worked
string
- Hours worked that day.
-
entries[].time_in
string
- HH:MM:SS, local time.
-
entries[].time_out
string
- HH:MM:SS, local time.
-
expires_on
string
-
id
string, required
- The record's id.
-
inserted_at
string
- When the record was created.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers.
-
month
integer, required
- 1 to 12.
-
office_hours_total
string
- Hours the office recorded for the month.
-
paper_signatures_collected
boolean
- Whether the signed paper Time & Services card is collected.
-
paper_signatures_collected_at
string
- When the paper card was marked collected.
-
provider_signature_date
string
- When the provider signed; null while unsigned.
-
seen_by_date
object
- Each date of the month (YYYY-MM-DD) to an opaque value: send it as seen to PUT /api/v1/work-orders/{id}/days/{date}, and a date changed since this read is refused with 409 stale_record and nothing written. Its format is not a contract.
-
service_type
string
-
shift_number
integer
- The shift, 1 to 4 (default 1).
-
status
string, required
-
supervisor_designee_signature_date
string
- When the supervisor's designee signed; null while unsigned.
-
supervisor_signature_date
string
- When the supervisor signed; null while unsigned.
-
updated_at
string
- When the record last changed.
-
verified_hours_first_half
string
- Verified hours, days 1 to 15.
-
verified_hours_second_half
string
- Verified hours, day 16 on.
-
warnings
array of object
- What the catalog warns of; usually empty. Never a refusal: the work order is saved and bills as entered. Each names its rule (catalog.unknown_code: no HCPF fee schedule prices the billing code) and the message. Recomputed on every read, so it clears once the code changes to a priced one or a fee schedule prices it.
-
warnings[].message
string, required
- What the agency is warned of.
-
warnings[].rule_id
string, required
- The rule that raised it.
-
wo_number
integer
- The agency's work order number.
-
wo_type
string
-
year
integer, required
| Field |
Type |
Required |
Description |
| archived_at |
string |
no |
Set when the agency archived it. |
| authorization_id |
string |
no |
The service authorization (PAR) it bills against, one of this client's and not deleted; see /api/v1/authorizations. Null or blank unlinks it; another id answers 422 naming authorization_id. |
| billing_code |
string |
no |
The HCPCS code billed for the service. |
| caregiver_id |
string |
yes |
The caregiver serving. |
| client_id |
string |
yes |
The client served. |
| client_signature_date |
string |
no |
When the client signed; null while unsigned. |
| closing_date |
string |
no |
|
| effective_date |
string |
no |
|
| entries |
array of object |
no |
The delivered days: one per Care Log of this Work Order's client, caregiver, service and shift in its month, as they are now; a combined (legacy) Work Order's are every day recorded on it, since no Care Log carries a combined service. A day can change without moving this record's updated_at; re-read the record by id to have it current. |
| entries[].date |
string |
no |
|
| entries[].hours_worked |
string |
no |
Hours worked that day. |
| entries[].time_in |
string |
no |
HH:MM:SS, local time. |
| entries[].time_out |
string |
no |
HH:MM:SS, local time. |
| expires_on |
string |
no |
|
| id |
string |
yes |
The record's id. |
| inserted_at |
string |
no |
When the record was created. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers. |
| month |
integer |
yes |
1 to 12. |
| office_hours_total |
string |
no |
Hours the office recorded for the month. |
| paper_signatures_collected |
boolean |
no |
Whether the signed paper Time & Services card is collected. |
| paper_signatures_collected_at |
string |
no |
When the paper card was marked collected. |
| provider_signature_date |
string |
no |
When the provider signed; null while unsigned. |
| seen_by_date |
object |
no |
Each date of the month (YYYY-MM-DD) to an opaque value: send it as seen to PUT /api/v1/work-orders/{id}/days/{date}, and a date changed since this read is refused with 409 stale_record and nothing written. Its format is not a contract. |
| service_type |
string |
no |
|
| shift_number |
integer |
no |
The shift, 1 to 4 (default 1). |
| status |
string |
yes |
|
| supervisor_designee_signature_date |
string |
no |
When the supervisor's designee signed; null while unsigned. |
| supervisor_signature_date |
string |
no |
When the supervisor signed; null while unsigned. |
| updated_at |
string |
no |
When the record last changed. |
| verified_hours_first_half |
string |
no |
Verified hours, days 1 to 15. |
| verified_hours_second_half |
string |
no |
Verified hours, day 16 on. |
| warnings |
array of object |
no |
What the catalog warns of; usually empty. Never a refusal: the work order is saved and bills as entered. Each names its rule (catalog.unknown_code: no HCPF fee schedule prices the billing code) and the message. Recomputed on every read, so it clears once the code changes to a priced one or a fee schedule prices it. |
| warnings[].message |
string |
yes |
What the agency is warned of. |
| warnings[].rule_id |
string |
yes |
The rule that raised it. |
| wo_number |
integer |
no |
The agency's work order number. |
| wo_type |
string |
no |
|
| year |
integer |
yes |
|
WorkOrderCareLogFill
-
differences
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
differences[].date
string
-
differences[].reason
string
-
filled
array of string, required
- Always empty: the fill writes nothing (US-118.17).
-
flagged
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
flagged[].date
string
-
flagged[].reason
string
-
unchanged
array of string, required
- Every date of the month with a delivery (a live care log the Work Order holds), each once, in order.
-
updated
array of string, required
- Always empty: the fill writes nothing (US-118.17).
| Field |
Type |
Required |
Description |
| differences |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| differences[].date |
string |
no |
|
| differences[].reason |
string |
no |
|
| filled |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
| flagged |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| flagged[].date |
string |
no |
|
| flagged[].reason |
string |
no |
|
| unchanged |
array of string |
yes |
Every date of the month with a delivery (a live care log the Work Order holds), each once, in order. |
| updated |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
WorkOrderChangeCaregiver
-
caregiver_id
string, required
- The caregiver who takes over.
-
from
string, required
- The first day the new caregiver works it, YYYY-MM-DD. On or before the Effective Date the whole Work Order moves and this one is archived; later, this one closes the day before.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
yes |
The caregiver who takes over. |
| from |
string |
yes |
The first day the new caregiver works it, YYYY-MM-DD. On or before the Effective Date the whole Work Order moves and this one is archived; later, this one closes the day before. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
WorkOrderCreate
A new work order. The client and caregiver must be members of the agency that are not deleted; a pair already holding a work order for the month, service, shift and type is refused.
-
billing_code
string
- The HCPCS code billed for the service.
-
caregiver_id
string, required
- The caregiver serving.
-
client_id
string, required
- The client served.
-
effective_date
string
-
expires_on
string
-
extra_reason
string
- Why an extra work order is needed (wo_type extra).
-
modifiers
array of string
- Billing code modifiers.
-
month
integer, required
- 1 to 12.
-
notes
string
- Free text; written, never returned.
-
service_type
string, required
-
shift_number
integer
- The shift, 1 to 4 (default 1).
-
wo_type
string
-
year
integer, required
| Field |
Type |
Required |
Description |
| billing_code |
string |
no |
The HCPCS code billed for the service. |
| caregiver_id |
string |
yes |
The caregiver serving. |
| client_id |
string |
yes |
The client served. |
| effective_date |
string |
no |
|
| expires_on |
string |
no |
|
| extra_reason |
string |
no |
Why an extra work order is needed (wo_type extra). |
| modifiers |
array of string |
no |
Billing code modifiers. |
| month |
integer |
yes |
1 to 12. |
| notes |
string |
no |
Free text; written, never returned. |
| service_type |
string |
yes |
|
| shift_number |
integer |
no |
The shift, 1 to 4 (default 1). |
| wo_type |
string |
no |
|
| year |
integer |
yes |
|
WorkOrderDayChange
-
confirm
boolean
- Optional: mark a date with recorded work not worked.
-
seen
string
- The date's value from seen_by_date on GET /api/v1/work-orders/{id} (the get_work_order tool answers it too), to refuse a date changed since that read.
-
shaded
boolean, required
- true worked, false not worked.
| Field |
Type |
Required |
Description |
| confirm |
boolean |
no |
Optional: mark a date with recorded work not worked. |
| seen |
string |
no |
The date's value from seen_by_date on GET /api/v1/work-orders/{id} (the get_work_order tool answers it too), to refuse a date changed since that read. |
| shaded |
boolean |
yes |
true worked, false not worked. |
WorkOrderDistribute
-
month
integer, required
- The month, 1 to 12.
-
selections
array of object, required
- One per service and shift being generated.
-
selections[].frequencies
object, required
- caregiver id => plan task id => visits a week. A caregiver whose counts are all 0 gets no Work Order.
-
selections[].service_type
string, required
- The service.
-
selections[].shift_number
integer
- Optional: the shift, 1 to 4; default 1.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| month |
integer |
yes |
The month, 1 to 12. |
| selections |
array of object |
yes |
One per service and shift being generated. |
| selections[].frequencies |
object |
yes |
caregiver id => plan task id => visits a week. A caregiver whose counts are all 0 gets no Work Order. |
| selections[].service_type |
string |
yes |
The service. |
| selections[].shift_number |
integer |
no |
Optional: the shift, 1 to 4; default 1. |
| year |
integer |
yes |
The year. |
WorkOrderDuplicate
-
caregiver_id
string
- With mode: the copy's caregiver, this agency's; this Work Order's when not sent.
-
client_id
string
- With mode: the copy's client, this agency's; this Work Order's when not sent.
-
closing_date
string
- close_previous: this Work Order's Closing Date; the day before effective_date when not sent, as the page's dialog fills it in. Refused before this Work Order's own Effective Date.
-
effective_date
string
- keep_both and close_previous, which need it: the copy's Effective Date.
-
lock_version
integer
- With mode: the lock_version this Work Order was read with. close_previous needs it, since it closes this Work Order: one changed since answers 409 stale_record, as a second close from the page is refused. Checked when sent with the other modes.
-
mode
string
- Makes a new standing Work Order as the page's Duplicate does: keep_both keeps this one as it is; close_previous closes it at closing_date; temporary makes a copy that runs temporary_from to temporary_to. Not with month or year.
-
month
integer
- Target month; send with year.
-
temporary_from
string
- temporary, which needs it: the copy's first day.
-
temporary_to
string
- temporary, which needs it: the copy's last day.
-
year
integer
- Target year; send with month.
| Field |
Type |
Required |
Description |
| caregiver_id |
string |
no |
With mode: the copy's caregiver, this agency's; this Work Order's when not sent. |
| client_id |
string |
no |
With mode: the copy's client, this agency's; this Work Order's when not sent. |
| closing_date |
string |
no |
close_previous: this Work Order's Closing Date; the day before effective_date when not sent, as the page's dialog fills it in. Refused before this Work Order's own Effective Date. |
| effective_date |
string |
no |
keep_both and close_previous, which need it: the copy's Effective Date. |
| lock_version |
integer |
no |
With mode: the lock_version this Work Order was read with. close_previous needs it, since it closes this Work Order: one changed since answers 409 stale_record, as a second close from the page is refused. Checked when sent with the other modes. |
| mode |
string |
no |
Makes a new standing Work Order as the page's Duplicate does: keep_both keeps this one as it is; close_previous closes it at closing_date; temporary makes a copy that runs temporary_from to temporary_to. Not with month or year. |
| month |
integer |
no |
Target month; send with year. |
| temporary_from |
string |
no |
temporary, which needs it: the copy's first day. |
| temporary_to |
string |
no |
temporary, which needs it: the copy's last day. |
| year |
integer |
no |
Target year; send with month. |
WorkOrderEvvFill
-
differences
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
differences[].date
string
-
differences[].entry_id
string
- The record's id.
-
differences[].entry_time_in
string
- HH:MM:SS, Mountain.
-
differences[].entry_time_out
string
- HH:MM:SS, Mountain.
-
differences[].visit_clock_in
string
- The visit's clock-in (UTC).
-
differences[].visit_clock_out
string
- The visit's clock-out (UTC).
-
differences[].visit_id
string
- The record's id.
-
filled
array of string, required
- Always empty: the fill writes nothing (US-118.17).
-
flagged
array of object, required
- Always empty: the fill writes nothing (US-118.17).
-
flagged[].date
string
-
flagged[].reason
string
-
unchanged
array of string, required
- Every date of the month with a delivery (a live care log the Work Order holds), each once, in order.
-
updated
array of string, required
- Always empty: the fill writes nothing (US-118.17).
| Field |
Type |
Required |
Description |
| differences |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| differences[].date |
string |
no |
|
| differences[].entry_id |
string |
no |
The record's id. |
| differences[].entry_time_in |
string |
no |
HH:MM:SS, Mountain. |
| differences[].entry_time_out |
string |
no |
HH:MM:SS, Mountain. |
| differences[].visit_clock_in |
string |
no |
The visit's clock-in (UTC). |
| differences[].visit_clock_out |
string |
no |
The visit's clock-out (UTC). |
| differences[].visit_id |
string |
no |
The record's id. |
| filled |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
| flagged |
array of object |
yes |
Always empty: the fill writes nothing (US-118.17). |
| flagged[].date |
string |
no |
|
| flagged[].reason |
string |
no |
|
| unchanged |
array of string |
yes |
Every date of the month with a delivery (a live care log the Work Order holds), each once, in order. |
| updated |
array of string |
yes |
Always empty: the fill writes nothing (US-118.17). |
WorkOrderGenerate
-
lrp
boolean
- Optional: generate the Homemaker Work Order from the client's LRP (legally responsible person) Homemaker plan instead of the regular one, as that plan's page does. Default false.
-
month
integer, required
- The month, 1 to 12.
-
overwrite
boolean
- Optional: replace the days of a Work Order already in the slot. Default false.
-
schedule_pattern
array of integer
- Optional: the weekdays the Work Order runs on, as the Work Order takes them.
-
service_type_override
string
- Optional: generate this service instead of the assignment's own; legacy is one Work Order carrying both.
-
shift_number
integer
- Optional: the shift, 1 to 4; default 1.
-
year
integer, required
- The year.
| Field |
Type |
Required |
Description |
| lrp |
boolean |
no |
Optional: generate the Homemaker Work Order from the client's LRP (legally responsible person) Homemaker plan instead of the regular one, as that plan's page does. Default false. |
| month |
integer |
yes |
The month, 1 to 12. |
| overwrite |
boolean |
no |
Optional: replace the days of a Work Order already in the slot. Default false. |
| schedule_pattern |
array of integer |
no |
Optional: the weekdays the Work Order runs on, as the Work Order takes them. |
| service_type_override |
string |
no |
Optional: generate this service instead of the assignment's own; legacy is one Work Order carrying both. |
| shift_number |
integer |
no |
Optional: the shift, 1 to 4; default 1. |
| year |
integer |
yes |
The year. |
WorkOrderPlan
-
lines
array of object, required
-
lines[].minutes
integer
- Minutes each time (the line's Min/Task).
-
lines[].notes
string
- The line's notes.
-
lines[].task_definition_id
string, required
- The record's id.
-
lines[].weekday_counts
array of integer
- Times on each weekday, Monday first.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
slot_days
object, required
- Weekday, 1 (Monday) to 7, to its visits in order.
-
work_order_id
string, required
- The record's id.
| Field |
Type |
Required |
Description |
| lines |
array of object |
yes |
|
| lines[].minutes |
integer |
no |
Minutes each time (the line's Min/Task). |
| lines[].notes |
string |
no |
The line's notes. |
| lines[].task_definition_id |
string |
yes |
The record's id. |
| lines[].weekday_counts |
array of integer |
no |
Times on each weekday, Monday first. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| slot_days |
object |
yes |
Weekday, 1 (Monday) to 7, to its visits in order. |
| work_order_id |
string |
yes |
The record's id. |
WorkOrderPlanUpdate
-
drop_lines
array of string
- Task definition ids whose lines to remove.
-
lines
array of object
- Task lines: task_definition_id, minutes, weekday_counts (seven, Monday first), notes.
-
lines[].minutes
integer
- Minutes each time (the line's Min/Task).
-
lines[].notes
string
- The line's notes.
-
lines[].task_definition_id
string, required
- The record's id.
-
lines[].weekday_counts
array of integer
- Times on each weekday, Monday first.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
slot_days
object
- Weekday 1 (Monday) to 7 => its visits, each time_in and time_out (HH:MM:SS); [] clears the day.
| Field |
Type |
Required |
Description |
| drop_lines |
array of string |
no |
Task definition ids whose lines to remove. |
| lines |
array of object |
no |
Task lines: task_definition_id, minutes, weekday_counts (seven, Monday first), notes. |
| lines[].minutes |
integer |
no |
Minutes each time (the line's Min/Task). |
| lines[].notes |
string |
no |
The line's notes. |
| lines[].task_definition_id |
string |
yes |
The record's id. |
| lines[].weekday_counts |
array of integer |
no |
Times on each weekday, Monday first. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| slot_days |
object |
no |
Weekday 1 (Monday) to 7 => its visits, each time_in and time_out (HH:MM:SS); [] clears the day. |
WorkOrderSign
-
date
string
- The signature date, YYYY-MM-DD: today when left out or null.
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
signature
string, required
- The signature as the pad saves it: a base64 PNG of at most 50 KB, with or without a data:image/png;base64, prefix.
-
signature_type
string, required
- Whose signature.
| Field |
Type |
Required |
Description |
| date |
string |
no |
The signature date, YYYY-MM-DD: today when left out or null. |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| signature |
string |
yes |
The signature as the pad saves it: a base64 PNG of at most 50 KB, with or without a data:image/png;base64, prefix. |
| signature_type |
string |
yes |
Whose signature. |
WorkOrderTaskMark
-
completed
boolean
-
count
integer
- Times that day.
-
date
string
-
id
string
- The record's id.
-
notes
string
-
task_definition_id
string
- The record's id.
-
warnings
array of object
- Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order.
-
warnings[].code
string
-
warnings[].message
string
-
warnings[].task_definition_id
string
-
work_order_id
string
- The record's id.
| Field |
Type |
Required |
Description |
| completed |
boolean |
no |
|
| count |
integer |
no |
Times that day. |
| date |
string |
no |
|
| id |
string |
no |
The record's id. |
| notes |
string |
no |
|
| task_definition_id |
string |
no |
The record's id. |
| warnings |
array of object |
no |
Dismissible warnings the day's care log raised on this write (a weekly or daily limit, a day a submitted Returned Timesheet missed), each with code and message. Absent for a combined Work Order. |
| warnings[].code |
string |
no |
|
| warnings[].message |
string |
no |
|
| warnings[].task_definition_id |
string |
no |
|
| work_order_id |
string |
no |
The record's id. |
WorkOrderTaskToggle
-
completed
boolean, required
- true done, false not done, null untouched.
| Field |
Type |
Required |
Description |
| completed |
boolean |
yes |
true done, false not done, null untouched. |
WorkOrderTransition
-
lock_version
integer, required
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
status
string, required
- The new status.
| Field |
Type |
Required |
Description |
| lock_version |
integer |
yes |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| status |
string |
yes |
The new status. |
WorkOrderUnplannedTask
-
date
string, required
- The date, YYYY-MM-DD.
-
notes
string
- Optional notes.
-
task_definition_id
string, required
- The task's definition id.
| Field |
Type |
Required |
Description |
| date |
string |
yes |
The date, YYYY-MM-DD. |
| notes |
string |
no |
Optional notes. |
| task_definition_id |
string |
yes |
The task's definition id. |
WorkOrderUpdate
Fields to change, plus the lock_version you read (required).
-
billing_code
string
- The HCPCS code billed for the service.
-
effective_date
string
-
lock_version
integer
- Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record.
-
modifiers
array of string
- Billing code modifiers.
| Field |
Type |
Required |
Description |
| billing_code |
string |
no |
The HCPCS code billed for the service. |
| effective_date |
string |
no |
|
| lock_version |
integer |
no |
Optimistic lock. A PATCH must send the value it read; if the record changed since, the answer is 409 stale_record. |
| modifiers |
array of string |
no |
Billing code modifiers. |
WorkOrderWarning
-
message
string, required
- What the agency is warned of.
-
rule_id
string, required
- The rule that raised it.
| Field |
Type |
Required |
Description |
| message |
string |
yes |
What the agency is warned of. |
| rule_id |
string |
yes |
The rule that raised it. |
WorkforceReportPage
One page of a list. The total counts every matching record under the same filters, so a client can tell the whole list from the first page.
-
data
array of WorkforceReportRow, required
-
from
string, required
- The period's first day.
-
limit
integer, required
- Rows asked for (default 100); a larger request is served 200.
-
offset
integer, required
- Rows skipped.
-
to
string, required
- The period's last day.
-
total
integer, required
- Every matching row.
| Field |
Type |
Required |
Description |
| data |
array of WorkforceReportRow |
yes |
|
| from |
string |
yes |
The period's first day. |
| limit |
integer |
yes |
Rows asked for (default 100); a larger request is served 200. |
| offset |
integer |
yes |
Rows skipped. |
| to |
string |
yes |
The period's last day. |
| total |
integer |
yes |
Every matching row. |
WorkforceReportRow
One worker's hours, wage and members served in one primary service.
-
average_weekly_hours
string
- The hours of the period's last four weeks, over four.
-
below_base_wage
boolean
- Whether wage_rate is under the 17.00 statewide base wage.
-
caregiver_id
string, required
- The caregiver.
-
caregiver_name
string
- "Last, First". The CSV never carries it.
-
counties
array of string
- The clients' counties.
-
employee_id
string
- The caregiver's employee ID, the file's Unique Worker ID.
-
employment_type
string
- "Employee" for every caregiver.
-
end_date
string
- The end of employment, only when it falls in the period.
-
hours
string
- The worked visits' payable hours in the period.
-
id
string, required
- The row: the caregiver and the service.
-
members_served
integer
- The distinct clients served.
-
missing
array of string
- The cells the report could not fill; the row is kept with them blank.
-
modifiers
array of string
- The visits' modifiers.
-
npi
string
- The agency's NPI.
-
primary_service
string
- The procedure code and modifiers, "T1019 U1"; null with no code.
-
procedure_code
string
- The visits' procedure code.
-
start_date
string
- The hire date, only when it falls in the period.
-
wage_missing_dates
array of string
- Days worked with no pay rate in force.
-
wage_rate
string
- The lowest work rate in force on a day worked (the client's own rate where one is set); null when none was.
| Field |
Type |
Required |
Description |
| average_weekly_hours |
string |
no |
The hours of the period's last four weeks, over four. |
| below_base_wage |
boolean |
no |
Whether wage_rate is under the 17.00 statewide base wage. |
| caregiver_id |
string |
yes |
The caregiver. |
| caregiver_name |
string |
no |
"Last, First". The CSV never carries it. |
| counties |
array of string |
no |
The clients' counties. |
| employee_id |
string |
no |
The caregiver's employee ID, the file's Unique Worker ID. |
| employment_type |
string |
no |
"Employee" for every caregiver. |
| end_date |
string |
no |
The end of employment, only when it falls in the period. |
| hours |
string |
no |
The worked visits' payable hours in the period. |
| id |
string |
yes |
The row: the caregiver and the service. |
| members_served |
integer |
no |
The distinct clients served. |
| missing |
array of string |
no |
The cells the report could not fill; the row is kept with them blank. |
| modifiers |
array of string |
no |
The visits' modifiers. |
| npi |
string |
no |
The agency's NPI. |
| primary_service |
string |
no |
The procedure code and modifiers, "T1019 U1"; null with no code. |
| procedure_code |
string |
no |
The visits' procedure code. |
| start_date |
string |
no |
The hire date, only when it falls in the period. |
| wage_missing_dates |
array of string |
no |
Days worked with no pay rate in force. |
| wage_rate |
string |
no |
The lowest work rate in force on a day worked (the client's own rate where one is set); null when none was. |