> For the complete documentation index, see [llms.txt](https://docs.adaptria.locaria.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adaptria.locaria.com/internal-api/reference/time-logs.md).

# ⏱ Time Logs

### Time Logs

Browse the authenticated user's timesheet entries, individual time-log details, timesheet lock status, and total time logged per job.

## ⏱ List time log entries (Timesheet view)

> Mirrors \`GET /api/project/time-logs\`.

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"⏱ Time Logs","description":"## Time Logs\n\nBrowse the authenticated user's timesheet entries, individual time-log details, timesheet lock status, and total time logged per job.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicTimeLogsListResponse":{"type":"object","properties":{"dateRange":{"type":"object","properties":{"startDate":{"type":"string"},"endDate":{"type":"string"},"dates":{"type":"array","items":{"type":"string"}},"totalHoursPerDate":{"type":"object","additionalProperties":{"type":"number"}}},"required":["startDate","endDate","dates","totalHoursPerDate"]},"users":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"perPage":{"type":"number"},"total":{"type":"number"},"totalPages":{"type":"number"}},"required":["page","perPage","total","totalPages"]}},"required":["dateRange","users"]}}},"paths":{"/api/public/v1/time-logs":{"get":{"summary":"⏱ List time log entries (Timesheet view)","description":"Mirrors `GET /api/project/time-logs`.","tags":["⏱ Time Logs"],"responses":{"200":{"description":"Time logs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTimeLogsListResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## GET /api/public/v1/time-logs/{timeLogId}

> ⏱ Get time log details by ID

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"⏱ Time Logs","description":"## Time Logs\n\nBrowse the authenticated user's timesheet entries, individual time-log details, timesheet lock status, and total time logged per job.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicTimeLogDetailResponse":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}}},"required":["data"]}}},"paths":{"/api/public/v1/time-logs/{timeLogId}":{"get":{"summary":"⏱ Get time log details by ID","tags":["⏱ Time Logs"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"timeLogId","in":"path"}],"responses":{"200":{"description":"Time log","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTimeLogDetailResponse"}}}},"403":{"description":"Forbidden"},"404":{"description":"Not found"}}}}}}
```

## GET /api/public/v1/time-logs/lock-status

> ⏱ Get timesheet lock status for a user

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"⏱ Time Logs","description":"## Time Logs\n\nBrowse the authenticated user's timesheet entries, individual time-log details, timesheet lock status, and total time logged per job.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicTimesheetLockStatusResponse":{"type":"object","properties":{"isLocked":{"type":"boolean"},"locks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":["string","null"],"format":"uuid"},"startDate":{"type":"string"},"endDate":{"type":"string"}},"required":["id","userId","startDate","endDate"]}}},"required":["isLocked","locks"]}}},"paths":{"/api/public/v1/time-logs/lock-status":{"get":{"summary":"⏱ Get timesheet lock status for a user","tags":["⏱ Time Logs"],"responses":{"200":{"description":"Lock status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTimesheetLockStatusResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```

## ⏱ Get total time logged for a specific job

> Aggregated across all users.

```json
{"openapi":"3.1.0","info":{"title":"Adaptria Public API: Connector","version":"1.0.0"},"tags":[{"name":"⏱ Time Logs","description":"## Time Logs\n\nBrowse the authenticated user's timesheet entries, individual time-log details, timesheet lock status, and total time logged per job.\n"}],"servers":[{"url":"https://api.adaptria.locaria.com","description":"Production Environment"}],"security":[{"apiKeyAuth":[]}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"Api-key","description":"## API Key Authentication\n\nStatic API key obtained from the Adaptria Portal or via `POST /api/credentials/api-keys`.\n\n**How to authenticate**:\n1. Generate an API key from the Adaptria Portal (Settings → API Keys) or ask your admin\n2. Include the key in all requests using the `Api-key` header\n\n**Key format**: `lla_live_<32-character-string>`\n\n**No token exchange needed** — the key is used directly in every request. Revoke or rotate keys from the portal."}},"schemas":{"PublicTimeLogJobTotalResponse":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"projectJobId":{"type":"string","format":"uuid"},"userId":{"type":["string","null"],"format":"uuid"},"totalHours":{"type":"number"},"entryCount":{"type":"number"}},"required":["projectId","projectJobId","totalHours","entryCount"]}}},"paths":{"/api/public/v1/time-logs/job-total":{"get":{"summary":"⏱ Get total time logged for a specific job","description":"Aggregated across all users.","tags":["⏱ Time Logs"],"responses":{"200":{"description":"Total time","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTimeLogJobTotalResponse"}}}},"403":{"description":"Forbidden"}}}}}}
```
