Top Menu

Jump to content
Home
    Modules
      • Projects
      • Activity
      • Work packages
      • Gantt charts
      • Calendars
      • Team planners
      • Boards
      • News
    • Getting started
    • Introduction video
      Welcome to OpenProject Community
      Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu.

    • Help and support
    • Upgrade to Enterprise edition
    • User guides
    • Videos
    • Shortcuts
    • Community forum
    • Enterprise support

    • Additional resources
    • Data privacy and security policy
    • Digital accessibility (DE)
    • OpenProject website
    • Security alerts / Newsletter
    • OpenProject blog
    • Release notes
    • Report a bug
    • Development roadmap
    • Add and edit translations
    • API documentation
  • Sign in
      Forgot your password?

      or sign in with your existing account

      Google

Side Menu

  • Overview
  • Activity
    Activity
  • Roadmap
  • Work packages
    Work packages
  • Gantt charts
    Gantt charts
  • Calendars
    Calendars
  • Team planners
    Team planners
  • Boards
    Boards
  • News
  • Forums

Content

General discussion
  1. OpenProject
  2. Forums
  3. General discussion
  4. How to get all TimeEntriesActivities from API

How to get all TimeEntriesActivities from API

Added by Filter Punk over 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)

RE: How to get all TimeEntriesActivities from API - Added by Filter Punk over 5 years ago

@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?

RE: How to get all TimeEntriesActivities from API - Added by Filter Punk over 5 years ago

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?

RE: How to get all TimeEntriesActivities from API - Added by Johan Bouduin almost 5 years ago

I have the same problem here! Did you already find a solution?

RE: How to get all TimeEntriesActivities from API - Added by Jan D'Hondt almost 5 years ago

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". 

{
    "_type": "Collection",
    "total": 630,
    "count": 1,
    "pageSize": 1,
    "offset": 1,
    "_embedded": {
        "elements": [

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

RE: How to get all TimeEntriesActivities from API - Added by Chan Cheuk Lam almost 2 years ago

Same question here after so many years, should I just hard coded it in my application?

RE: How to get all TimeEntriesActivities from API - Added by Eric Schubert almost 2 years ago

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:

  • page size of 0 returns a collection object without embedded items, i.e. if you only want to know the total number of time entries, this is the way to go.
  • page size of -1 takes the maximum page size

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:

### Get time entry form
POST {{host}}/api/v3/time_entries/form
Content-Type: application/json
Authorization: Basic apikey {{apiToken}}

{
  "_links": {
    "workPackage": {
      "href": "/api/v3/work_packages/77"
    }
  }
}

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. ;)

RE: How to get all TimeEntriesActivities from API - Added by Chan Cheuk Lam almost 2 years ago

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

  • (1 - 7/7)
Loading...