通过用户在集合中添加 Timeoff 不起作用

Adding Timeoff via User in a collection not working

我发现了一些与这个问题完全相同的旧 Stackverflow 线程,但我无法找到解决方案。

基本上,我想添加超时,并且我了解到这样做的唯一方法 - 根据 [1] - 是通过发出 PUT 请求,将现有对象添加到集合中并添加新对象没有身份证。

我已经复制了 [1] 中所示的示例:

https://[DOMAIN].attasksandbox.com/attask/api/v5.0/RESVT?method=POST&sessionID=330051c6aaa24cb48edb3eab113d3a5a&updates=[{ "userID": "57270ab200030c6814a20577576f8399", "startDate": "2016-08-12", "endDate": "2016-08-15" }, { "ID": "575e7a27001a0dd8312a29defd886b78", "objCode": "RESVT", "startDate": "2016-06-01T00:00:00:000+0200", "endDate": "2016-06-04T00:00:00:000+0200", "userID": "57270ab200030c6814a20577576f8399" }]&atomic=true

执行请求时的响应:

{ "data": [ { "objCode": "RESVT", "ID": "575e7410001a031e06534a49b3032fd1" }, { "objCode": "RESVT", "ID": "575e7410001a031f1ee4a0379c96d287" } ] }

但是我在用户的 Timeoff 页面(以及通过 API 搜索 timeoff 对象时)看到的唯一 timeoff 是更新参数中的 last 对象.在上面的示例中,它将是 6 月 1 日至 4 日。如果我重新安排更新数组,使 6 月 1 日至 4 日成为列表中的第一个,那么我会看到 8 月 12 日至 15 日。

我也尝试过使用 method=PUT 而不是 method=POST 但后来我收到了这条消息:

{ "error": { "class": "java.lang.IllegalArgumentException", "message": "Must specify an ID for each object that is edited" } }

我做错了什么?

[1]:php - AtTask API - 添加休息时间 - 堆栈内存溢出 AtTask API - Adding Time Off Hours

您遇到的问题是您是在 RESVT 对象而不是 USER 对象上进行更新,因此每次调用都会向用户添加一个新项目 timeOff 替换所有以前的条目,所以您只看到最后一个的原因on 是因为它是 运行 的最后一个并且所有先前的条目都被删除。

要更正此问题,您需要在用户对象上进行更新并更新预留时间集合。

您可以通过以下调用来完成此操作。

PUT /attask/api/v4.0/user/[userID]?&sessionID=[sessionID]&updates=
{
    reservedTimes: 
        [ 
            { 
                "ID": "547debb6000dea62198bd66b7c73e174", 
                "objCode": "RESVT",
                "endDate": "2014-07-08T23:59:00:163-0600",
                "startDate": "2014-07-08T00:00:00:163-0600" 
            }, 
            { 
                "ID": "547debb6000dea61b8c695ba24918fe8",
                "objCode": "RESVT",
                "endDate": "2014-02-13T23:59:00:329-0700",
                "startDate": "2014-02-13T00:00:00:329-0700" 
            },
            { 
                "objCode": "RESVT", 
                "endDate": "2014-02-14T23:59:00:329-0700", 
                "startDate": "2014-02-14T00:00:00:329-0700" 
            } 
        ] 
}