Added by Filter Punk almost 5 years ago
To create a TimeEntry with API I use this POST method in which I need to specify a link to an "activity" with type TimeEntriesActivity.
(Btw, where is this type specified?)
How can I retrieve a list of all TimeEntriesActivities? Or how to find out the total number of TimeEntriesActivities?
Replies (7)
@moderator: I am new in openproject community: did I post this question in the correct forum? Or should I move it to the "Development" forum?
After some more investigations, I have to correct myself. Total number of TimeEntriesActivities will not help me.
When I create new Time Activities in /admin/enumerations these new entries will not get consecutive id's.
The build in Activities:
"id":1,"name":"Management","position":4
"id":2,"name":"Specification","position":5
"id":3,"name":"Development","position":6
"id":4,"name":"Testing","position":7
"id":5,"name":"Support","position":8
"id":6,"name":"Other","position":9
The added Activities:
"id":14,"name":"Planung","position":3
"id":15,"name":"Materialbeschaffung","position":2
"id":16,"name":"Ausführen","position":1
This circumstance makes using the existing (but undocumented) endpoint: /api/v3/time_entries/activities/{ID} (where ID is required))
rather unusable to get a complete List of all TimeEntriesActivities.
Similar as the project GET method, which can return a collection of projects, what I need is a GET method for TimeEntriesActivities e.g.: /api/v3/time_entries/activities/{?filters,sortBy}
Should I create a "new feature" WorkPackage for it?
I have the same problem here! Did you already find a solution?
Hello I had to develop an ETL tool to extract and maintain history of time_entries
1. First you need to know how many elements there are in the collection of time_entries. I am using the following GET (test it in Postman), because I want to reduce the number of elements returned:
https://digipolisgentqa.openproject.com/api/v3/time_entries?pageSize=1
first lines of JSON returned: Only value that is of interest is "total".
Now that I have the total number of elements , I can set a pageSize (must be < 500). And construct a loop to get all the elements of the collection page by page. For instance pageSize = 100 then the number of iterations is 7, with offset from 1 to 7. e.g. GET for elements 101-200 : https://digipolisgentqa.openproject.com/api/v3/time_entries?offset=2&pageSize=100
The first 6 GETS return 100 elements, the last GET will return 30 elements.
Hope this helps
Same question here after so many years, should I just hard coded it in my application?
Maybe I can shed some light into the question.
OpenProject APIv3 returns HAL+JSON objects. In this pattern, collections are returned as collection objects, where the elements are embedded. It is correct, that the time entries collection is a paginated collection. Hence, one has to provide a pageSize as a query parameter (the default pageSize is 20, the maximum page size is 1000), and an offset, if you are accessing next pages:
GET /api/v3/time_entries?pageSize=1000
There are some details, that are nice to know for collection endpoints:
The documentation of this endpoint your can find here. It was recently updated, this new update with more detailed schemas and examples is not yet published. We are constantly working to get a more correct documentation of our API.
Hope, I could help. If there are any more questions, shoot. ;)
Edit: The original question was of course not about time entries, but time entry activities. And there I must admit, that the listing is not very intuitive nor very good documented. It is also no collection.
Some endpoints do support form validation. So, basically, the client sends an empty form request to the endpoint, just defining the context, and get back everything they need to prepare the form. You usually do this by
POST /api/v3/time_entries/form
. See my example:You will find all allowed values for time entries inside the response. The JSON path is
_embedded/schema/activities/_embedded/allowedValues
.⚠️ If you think,
/api/v3/time_entry_activities
should get a collection endpoint for easier usage, please raise a feature request. This would make it easiert for me to put a higher priority on this kind of topics. ;)Thanks Eric!
I also figured out that I can basically POST a empty form to https://project.cyberarts.com.hk/api/v3/time_entries/form and inside
_embedded/schema/activities/_embedded/allowedValues
I will received the values!Although it is a bit weird to use a POST to GET something, but it is actually working. Thanks in advance and yes, I think to make other developer easier, I will raise a feature request, as it also bothers me till mid-night last night haha