Redmine API 可以提供 JSON 格式的时间条目。
$ curl -X GET \
'https://my_redmine/time_entries.json' \
-H 'X-Redmine-API-Key: my_api_key'
{"time_entries":[{"id":14212,"project":{"id":73,"name":"Project 1"},"issue":{"id":5488},"user":{"id":5,"name":"John SMITH"},"activity":{"id":8,"name":"Grouillot"},"hours":8.0,"comments":"dsgsdsdh","spent_on":"2020-03-09","created_on":"2020-01-07T14:03:58Z","updated_on":"2020-01-07T14:33:52Z", ...
现在我需要对它们进行聚合,我宁愿使用内置的报告聚合功能,也不愿在获取所有必需的时间条目后自己进行。
假设我们有这些时间条目
+------+----------+-------+------------+
| user | issue_id | hours | spent_on |
+------+----------+-------+------------+
| 1 | 42 | 4 | 2020-01-01 |
| 1 | 43 | 4 | 2020-01-01 |
| 2 | 42 | 8 | 2020-01-01 |
+------+----------+-------+------------+
如果我希望它们由用户聚合,这就是需要得到的
+------+-------+------------+
| user | hours | spent_on |
+------+-------+------------+
| 1 | 8 | 2020-01-01 |
| 2 | 8 | 2020-01-01 |
+------+-------+------------+
在当前的 REST API中似乎没有任何方法可以做到这一点
但是由于这种查询可以通过 CSV 生成报告
https://my_redmine/time_entries/report.csv?columns=day&criteria%5B%5D=user
我天真地认为我们可以像这样使用它
$ curl -X GET \
'https://my_redmine/time_entries/report.json?columns=day&criteria%5B%5D=user' \
-H 'Accept: application/json' \
-H 'X-Redmine-API-Key: my_api_key'
但不走运,它返回一个指向 HTML 登录表单的重定向。
即使使用 API 密钥或基本身份验证来获取 CSV 似乎也不可能。
有没有人知道如何使用 REST HTTP 查询聚合时间条目?