Time entries
You can fetch pages of (filtered) time entries using this endpoint. The results are based on the authenticated user, which could be one of these three flavours:
- monday.com admin - The request will receive all time entries that have been logged by any user.
- team admins - The request will receive the time entries that have been logged by team members.
- other users - Only the authenticated user's time entries will be returned.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries' \
--header 'Authorization: Bearer ${TOKEN}'
Pagination
By default, up to 25 time entries are retrieved per request. You can increase the page size up to 100 by using the size
query parameter.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?size=100' \
--header 'Authorization: Bearer ${TOKEN}'
The page result will contain a total
attribute which indicates the total amount of time entries. There will be a nextCursor
available along with a next
page link in the _links
attribute when there are more time-entries available.
{"size": 100,
"total": 1354,
"items": [
...
],
"nextCursor": "WzE2OTk4MzM2MDAwMDAgMTY5OTg3MDIyMDYzM10=",
"_links": {
"self": {
"href": "/api/2.0/timeEntries?size=100"
},
"next": {
"href": "/api/2.0/timeEntries?size=100&after=WzE2OTk4MzM2MDAwMDAgMTY5OTg3MDIyMDYzM10="
}
}
}
Use the query parameter after
to fetch the next page.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?size=100&after=WzE2OTk4MzM2MDAwMDAgMTY5OTg3MDIyMDYzM10=' \
--header 'Authorization: Bearer ${TOKEN}'
Sorting
By default, the results are sorted by the date
field in desc
(descending) order. This means that time entries logged on the most recent dates will be retrieved first.
Use the sortBy
and sortType
query parameters to sort differently.
Sortable fields are:
date
The date that time was logged oncreatedDate
The timestamp of when the time entry was createdupdatedDate
The timestamp of when the time entry was last updated.minutes
The amount of minutes that are logged.billableMinutes
The amount of billable minutes that are logged.
sortType
can either be desc
(default) or asc
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?sortBy=createdDate&sortType=asc' \
--header 'Authorization: Bearer ${TOKEN}'
Filtering
Basic filters
You can use filters to fetch a subset of time entries. Here are some basic examples:
Fetch time entries logged on a monday.com board
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.board=5272688006' \
--header 'Authorization: Bearer ${TOKEN}'
Fetch time entries logged on a specific date.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.date=2023-12-30' \
--header 'Authorization: Bearer ${TOKEN}'
Advanced operators
The query parameter ?fields.date=2023-12-30
filters the result to time entries that are logged on the specific date 2023-12-30
. Some use cases require different operators, a common one is fetching time entries for a specific date range
.
You can use the Great Than Equals (gte) and Less Than Equals (lte) operator to perform a range query.
Example: fetch all time entries that were logged for the year 2023
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.date.gte=2023-01-01&fields.date.lte=2023-12-31' \
--header 'Authorization: Bearer ${TOKEN}'
Supported fields
Not every field supports the same operators, here you can find a list of which operators are available and which ones you can use per field.
Operators & Fields
Operator | Description | Example |
---|---|---|
is | Value for field is equal to supplied filter | ?fields.board=5272688006 or fields.board.is=5272688006 |
in | Value for field is equal to one of supplied comma separated values | ?fields.board.in=5272688006,68726884545 |
not in | Value for field is not equal to one of the supplied comma separated values | ?fields.board.not in=5272688006,68726884545 |
gte | Value for field is greater than or equals to supplied filter | ?fields.minutes.gte=60 |
gt | Value for field is greater than the supplied filter | ?fields.minutes.gt=60 |
lte | Value for field is less than or equals to supplied filter | ?fields.minutes.lte=60 |
lt | Value for field is less than the supplied filter | ?fields.minutes.lt=60 |
Field | Available operators |
---|---|
item | is, in, not in |
board | is, in, not in |
user | is, in, not in |
team | is, in, not in |
parentItem | is, in, not in |
itemType | is, in, not in |
category | is, in, not in |
project | is, in, not in |
description | is |
date | is, gte, gt, lt, lte |
createdDate | is, gte, gt, lt, lte |
updatedDate | is, gte, gt, lt, lte |
minutes | is, gte, gt, lt, lte |
billableMinutes | is, gte, gt, lt, lte |
Filter on sub items and parent items
To fetch time entries that are logged on a specific (sub) item, simply pass the (sub) item ID as a filter
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.item=5272688006' \
--header 'Authorization: Bearer ${TOKEN}'
Use the includeSubItems
query parameter if you also want to include the time entries that are logged on the item's sub items.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.item=5272688006&includeSubItems=true' \
--header 'Authorization: Bearer ${TOKEN}'
Filter on custom fields
You can filter on custom fields using the field ID
and an option ID
as value. The available operators are is
in
and not in
.
curl -X GET 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries?fields.myCustomField=OPTIONID' \
--header 'Authorization: Bearer ${TOKEN}'
/api/2.0/timeEntries
date
, createdDate
, updatedDate
, billableMinutes
, minutes
asc
, desc
A few keys are always required when creating time entries:
user
monday.com user IDdate
yyyy-mm-ddminutes
Integeritem
monday.com (sub) item ID
Others fields could be required based on your settings in Tracket.
curl -X POST 'https://us.production.timesheet.avisi-apps.com/api/2.0/timeEntries' \
--header 'Authorization: Bearer ${TOKEN}' \
--header 'Content-Type: application/json' \
--data-raw '{"date": "2023-11-13",
"minutes": 60,
"item": "5473732489",
"user": "3585156"}'
/api/2.0/timeEntries
monday.com item id
5273029382
monday.com user id
35851565
Number of minutes worked
60
Number of billable minutes worked
0
monday.com team id
929301
Description of the time entry
Tracket category id
21e5614a-6787-4102-a9e0-c331837a0bce
Tracket project id
PC
Map of custom field reference and option id
{"myCustomFieldReference":"af19025a-1f4e-41d6-9990-503dac65f161"}
The date of the time entry YYYY-MM-DD
2023-05-20
/api/2.0/timeEntries/{timeEntryId}
monday.com item id
5273029382
Number of minutes worked
60
Number of billable minutes worked
0
monday.com team id
929301
Description of the time entry
Tracket category id
21e5614a-6787-4102-a9e0-c331837a0bce
Tracket project id
PC
Map of custom field reference and option id
{"myCustomFieldReference":"af19025a-1f4e-41d6-9990-503dac65f161"}
The date of the time entry YYYY-MM-DD
2023-05-20
Last updated
Was this helpful?