My work
list-worklogs-tool
List your time entries, optionally filtered by date range, project, description or user.
Returns paginated worklog rows for the authenticated user, or for another user if the caller holds times::update_others. Each row includes project, customer, deadline and work-item context.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
date_from | string (Y-m-d) | no | Inclusive lower bound on the worklog date. |
date_to | string (Y-m-d) | no | Inclusive upper bound on the worklog date. Must be on or after date_from. |
project_id | integer | no | Limit to one project. |
search | string | no | Substring match on the description (case-insensitive). |
user_id | integer | no | Defaults to the authenticated user. A different value requires times::update_others. |
limit | integer | no | Page size, 1–100, default 25. |
offset | integer | no | Number of rows to skip, default 0. |
Permissions
- Own worklogs: none required.
- Another user's worklogs:
times::update_others.
Example
{
"date_from": "2026-05-11",
"date_to": "2026-05-17",
"project_id": 7
}Response
{
"data": [
{
"id": 42,
"date": "2026-05-15",
"minutes": 90,
"duration": "1:30",
"description": "Refactor payment gateway",
"is_overtime": false,
"is_not_billable": false,
"project": {
"id": 7,
"title": "ACME website",
"customer": { "id": 3, "name": "ACME", "code": "ACM" }
},
"deadline": {
"id": 21,
"description": "Launch v2",
"due_date": "2026-06-01",
"is_finished": false
},
"work_item": { "id": 88, "title": "Stripe SDK upgrade" }
}
],
"pagination": {
"total": 1,
"limit": 25,
"offset": 0,
"has_more": false
}
}Errors
- A malformed
date_from/date_to(notY-m-d) returns a validation error. - Passing a
user_idother than your own withouttimes::update_othersreturns an authorization error.