4

我对 JIRA 的 REST API 很陌生,我想了解用户在某个问题上花费的总时间。我尝试使用https://jira.domain.com/rest/api/2/search?jql=assignee="my.name",并timespent在返回的 JSON 响应中获得了该字段,但它显示了一个没有任何意义的值。在这种情况下,该timespent字段显示为 62760,当我在该问题上花费的实际时间少于该时间时,搜索将返回在该问题上花费的总时间,而不仅仅是我。我怎样才能让它只显示我的时间?

编辑:有没有办法用 JQL 做到这一点,而不必为每个问题进行另一个 API 调用?

4

1 回答 1

7

我知道我迟到了一年:-)。发布以帮助可能面临同样问题的其他人。

REST /rest/api/2/search?jql=assignee="my.name" 将返回其他用户的工作日志,并且可以省略“my.name”用户的工作日志。在 JIRA 中,您不需要成为受让人来报告问题的时间。

看起来获得“用户 JIRA REST API 问题上花费的总小时数”的最简单方法是使用:

/rest/api/2/issue/ issue.key /worklog

然后迭代工作日志,通过 worklog.author.name 过滤它们。api/2/issue/ issue.key /worklog 的好处是它返回所有工作日志而不使用 startAt 和 maxResults 分页。至少对于我的本地开发 JIRA 来说是这样,我为单个问题生成了大约 1200 条工作日志记录。但是您需要检查您的 JIRA 安装,因为 sartAt 和 maxResults 在该方法的文档中:https ://docs.atlassian.com/jira/REST/latest/#d2e1411

获取一组用户的工作日志和我使用的问题

/rest/api/2/search?jql=updated > 2014-01-20 and project in (MWC,MWCS,RND) and timespent > 0&fields=summary,worklog&maxResults=1000"

其中 2014-01-20 是时间段中的第一个日期,项目和时间条件会优化过滤。此方法利用分页,如果它大于 JIRA 端配置的 maxResults,它将忽略您传递的 maxResults。与问题一起返回的工作日志也以每页 20 条记录进行分页。因此,为了获得报告,我进行 search?jql= 调用,迭代返回问题的工作日志,当 issue.fields.worklog.maxResults < issue.fields.worklog.total 我调用 issue/issue.key/worklog 以获取问题的所有工作日志. 当然,您需要根据 worklog.author.name 和 worklog.started 字段进行过滤。

于 2014-01-26T10:08:52.383 回答