Get the last process log for a user or an organization
curl --request GET \
--url https://web-api.soxai.site/api/LastProcessLog \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.soxai.site/api/LastProcessLog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.soxai.site/api/LastProcessLog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"last_process_log_datetime": "2026-01-02T09:00:00",
"uid": "uid_member_a",
"email": "uid_member_a@example.com",
"device_name": "ring"
}
]{
"error": "bad-request",
"error_msg": "query_uid or org_id must be provided"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "Org '<org_id>' not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch last process log: <error_message>"
}Sync Status
Get the last process log for a user or an organization
Report the most recent processing record for one user, or for every member of an organization.
Use it to tell “this member has no data” apart from “this member’s data has not been processed yet”.
Parameters
At least one of the two is required, and they combine:
query_uid(query, optional) - answer for this user.org_id(query, optional) - answer for this organization’s roster. Given together withquery_uid, the user must be on that roster.
Response
200returns one record per uid answered for. Whenorg_idis given alone, members the caller may not read are dropped from the result rather than refusing the request, so a200is not a promise that every member of the organization is present.
Errors
| Status | Condition |
|---|---|
| 400 | Neither query_uid nor org_id was given |
| 403 | The caller may not read the named user, or may not reach the named organization |
| 404 | The user or the organization does not exist, or the user is not on that organization’s roster |
Authorization
- Scheme:
Authorization: Bearer <idToken>orsoxai-api-key: <api key>. Admin,PartnerAdminorOrgAdmin, or the caller’s own uid asquery_uid.- Which scope applies is decided by the arguments, which is why this endpoint resolves a set
of readable uids rather than answering a single yes or no: a
PartnerAdminreaches the users registered under its own company, anOrgAdminthe members of its own organization, and anAdmineveryone.
GET
/
api
/
LastProcessLog
Get the last process log for a user or an organization
curl --request GET \
--url https://web-api.soxai.site/api/LastProcessLog \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.soxai.site/api/LastProcessLog"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.soxai.site/api/LastProcessLog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"last_process_log_datetime": "2026-01-02T09:00:00",
"uid": "uid_member_a",
"email": "uid_member_a@example.com",
"device_name": "ring"
}
]{
"error": "bad-request",
"error_msg": "query_uid or org_id must be provided"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "Org '<org_id>' not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch last process log: <error_message>"
}Authorizations
HTTPBearerSoxaiApiKey
Query Parameters
Response
One record per uid answered for. The org form answers only for the roster members the caller may read, so the array can be shorter than the roster. Giving both parameters answers for the single uid, after checking it is on that org's roster.