Skip to main content
Skip table of contents

REST API Integrations

You can use REST API integrations in Timesheet Reports & Gadgets for Jira Server and Data Center.

RESTful Endpoint

Jira has native support for loading worklogs via REST by searching for issues using JQL and including the worklog field in the fields request param. For more information, see the Jira documentation.

There are three JQL clauses to limit results set to issues that have relevant worklogs: worklogAuthor, worklogComment, and worlkogDate. See Advanced Searching - Fields reference.

For worklogDate, valid formats include: 'YYYY/MM/DD', 'YYYY-MM-DD', or a period format, such as '-5d', '4w 2d', or date function, such as endOfDay() for Today.

For worklogAuthor, username or membersOf() can be used.

A request such as the following:

CODE
GET /rest/api/2/search?fields=*all&jql=filter=10001 and worklogDate > '2016-03-01' and worklogDate < endOfDay() and worklogAuthor in membersOf("jira-developers")

Yields this JSON response:

CODE
{ "expand" : "schema,names",
  "issues" : [{ "expand" : "editmeta,renderedFields,transitions,changelog,operations",
        "fields" : { "worklog" : { "maxResults" : 2,
                "startAt" : 0,
                "total" : 2,
                "worklogs" : [ { "author" : { "active" : true,
                          "avatarUrls" : { "16x16" : "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10142",
                              "48x48" : "http://localhost:2990/jira/secure/useravatar?avatarId=10142"
                            },
                          "displayName" : "admin",
                          "emailAddress" : "admin@example.com",
                          "name" : "admin",
                          "self" : "http://localhost:2990/jira/rest/api/2/user?username=admin"
                        },
                      "comment" : "test",
                      "created" : "2013-10-16T17:56:32.887+0200",
                      "id" : "10012",
                      "self" : "http://localhost:2990/jira/rest/api/2/issue/10001/worklog/10012",
                      "started" : "2013-10-19T00:00:00.000+0200",
                      "timeSpent" : "1h",
                      "timeSpentSeconds" : 3600,
                      "updateAuthor" : { "active" : true,
                          "avatarUrls" : { "16x16" : "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10142",
                              "48x48" : "http://localhost:2990/jira/secure/useravatar?avatarId=10142"
                            },
                          "displayName" : "admin",
                          "emailAddress" : "admin@example.com",
                          "name" : "admin",
                          "self" : "http://localhost:2990/jira/rest/api/2/user?username=admin"
                        },
                      "updated" : "2013-10-16T17:56:32.887+0200"
                    },
                    { "author" : { "active" : true,
                          "avatarUrls" : { "16x16" : "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10142",
                              "48x48" : "http://localhost:2990/jira/secure/useravatar?avatarId=10142"
                            },
                          "displayName" : "admin",
                          "emailAddress" : "admin@example.com",
                          "name" : "admin",
                          "self" : "http://localhost:2990/jira/rest/api/2/user?username=admin"
                        },
                      "comment" : "test",
                      "created" : "2013-10-16T17:56:33.075+0200",
                      "id" : "10013",
                      "self" : "http://localhost:2990/jira/rest/api/2/issue/10001/worklog/10013",
                      "started" : "2013-10-14T00:00:00.000+0200",
                      "timeSpent" : "4h",
                      "timeSpentSeconds" : 14400,
                      "updateAuthor" : { "active" : true,
                          "avatarUrls" : { "16x16" : "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10142",
                              "48x48" : "http://localhost:2990/jira/secure/useravatar?avatarId=10142"
                            },
                          "displayName" : "admin",
                          "emailAddress" : "admin@example.com",
                          "name" : "admin",
                          "self" : "http://localhost:2990/jira/rest/api/2/user?username=admin"
                        },
                      "updated" : "2013-10-16T17:56:33.075+0200"
                    }
                  ]
              } },
        "id" : "10001",
        "key" : "TIME-2",
        "self" : "http://localhost:2990/jira/rest/api/2/issue/10001"
      }
    ],
  "maxResults" : 50,
  "startAt" : 0,
  "total" : 1
}

The return contains only the first 20 worklogs per issue, and is not filtered according to the specified worklogDate and worklogAuthor queries. It is your responsibility to load all worklogs per issue, using the /rest/api/2/issue/{issueIdOrKey}/worklog endpoint, and filter out worklogs that do not match your criteria. For more help, see this Atlassian Community answer. Alternatively you can use /api/2/worklog for loading large worklogs without issues.

Plugin REST Endpoint

With Timesheet Reports & Gadgets for Jira Server installed, it is possible to get worklogs in json format, including minimum issue data.

For example, with the url /rest/timesheet-gadget/1.0/raw-timesheet.json?moreFields=creator&amp;moreFields=created, the return is:

CODE
{
  "worklog": [
    {
      "key": "TIME-1",
      "summary": "Hocus Focus Problem",
      "entries": [
        {
          "id": 10014,
          "comment": "test",
          "timeSpent": 21600,
          "author": "admin",
          "authorFullName": "admin",
          "created": 1458477642089,
          "startDate": 1457910000000,
          "updateAuthor": "admin",
          "updateAuthorFullName": "admin",
          "updated": 1458477642089
        }
      ],
      "fields": [
        {
          "label": "2013-03-12T09:45:35+0100",
          "value": "created"
        },
        {
          "label": "admin",
          "value": "creator"
        }
      ]
    }
}

It accepts the following parameters:

  • targetUser - optional username

  • targetGroup - optional group name, e.g. jira-users

  • startDate - optional begin date in Jira date picker format, e.g. 01/Jun/2012, or in ISO date format, e.g. 2012-06-01

  • endDate - optional end date, format is the same

  • projectid - optional, e.g. 10001 (not project key!)

  • filterid - optional

  • moreFields - optional.

If nothing is specified, it behaves like the report, displaying data a week before the current day for the currently logged in user.

Dates in the response are UNIX time, milliseconds since 01/01/1970; timesSpent is in seconds.

Export to CSV

You can export raw worklogs in CSV format, similarly to Excel view, by using the CSV View link in the Time Sheet report, or composing the link based on the export link from the Time Sheet, and replacing the htmlExport url parameter with csvExport, for example:

CODE
http://localhost:2990/jira/rest/timesheet-gadget/1.0/timesheet.json?csvExport=true&weekends=true&targetUser=admin&showDetails=true&reportingDay=2&groupByField=customfield_group&moreFields=reporter&moreFields=status&moreFields=timespent&moreFields=timetracking&numOfWeeks=1&offset=0&sum=day

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.