1

对于非自定义字段,我的项目中的 API 运行良好,但文档似乎并没有真正起作用,无法解释使用 c sharp 更新自定义字段的实际放置请求格式应该是什么。

我有以下内容:

PROJECT 类型的自定义字段称为“TestNumber”。

我可以通过网络请求轻松搜索它:

/attask/api/proj/search?sessionID=XXXXXXX&ID=XXXXX&fields=DE:TestNumber

所以我知道该特定自定义字段的语法是正确的。

我还可以对非自定义字段进行基本更新:

/attask/api/proj?method=put&sessionID=XXXXX&id=XXXXX&name=TEST RESOURCES` 

并且它会正确更新。

但无论我做什么,我都无法弄清楚如何将“TestNumber”自定义字段的值更改为我使用 API 选择的值。经过一番搜索,我发现我应该使用 AtTask 的 API 文档中的“JSON 编辑”部分,但是,我似乎无法找出正确的语法。

我在尝试之前的完整网址是:

/attask/api/proj?method=put&sessionID=XXXXX&id=XXXXXX&updates={DE:TestNumber:1234}

(这似乎与这里的 API DOCS rec 不一致http://developers.attask.com/api-docs/#JSONEdits)但我每次都会收到500 Internal Server 错误。

我已确认我已正确登录。

任何建议或意见,将不胜感激。

更新: 我仍然无法让它工作。我发现了另一篇文章(搜索“AtTask API 更新自定义复选框字段中的多个值”),其中有人提到了自定义复选框表单:

PUT /attask/api/v3.0/task/xxxxxxxxxxxxxxxxxx?updates={DE:Labels=["a","b","c"]}

但我不确定如何使用 C Sharp 直接传递此类数据,因为它不允许双引号,当我添加转义字符时,我仍然会收到500 internal server error。我通过使用“发布”方法%22代替引号,但无论我在看跌期权上做什么,它都不起作用。

我们的 AtTask 顾问提到我可能需要为自定义表单包含我的 categoryId,所以我也将它添加到我的查询字符串中,但无济于事。

我已经下载了 C Sharp 的“AtTask 示例”(位于 developer.attask.com 上),并尝试使用他们用作示例的 Update 方法传递以下内容:

JToken project = client.Update(ObjCode.PROJECT, new { 
    ID = projectId, categoryID = "XXXXXXXXXXXXXXXX", 
    updates = "{DE:Total Feet of Line:1234}" });

正如我之前提到的,搜索工作正常,并返回我所期望的:

JToken projects = client.Search(ObjCode.PROJECT, new { 
    ID = projectId, 
    fields = "DE:Total Feet of Line" });

这会生成以下网址:

/attask/api/proj/search?sessionID=XXXX&ID=XXXX&categoryID=XXXXX&fields=DE:Total Feet of Line

我终于尝试使用带有非自定义字段的“Json Edits”进行更新,它适用于 put 方法,所以我在这些字段上的语法一定有问题,但我确定它应该是DE:FIELDNAME:"VALUE". 我在这里错了吗?

我觉得我在尝试解决这个问题方面走在正确的轨道上,但我发现很难相信没有支持或其他人这样做。似乎能够从 API 更新自定义字段是基本需求......

我还尝试使用自定义复选框完全按照其他人的示例进行操作,即使“搜索”按预期返回 json,“更新”也会失败。

4

1 回答 1

2

您对“DE:FIELDNAME”:“VALUE”是正确的。

尝试使用以下 url 更新自定义字段:确保更改 MYCOMPANY、YOUR_ID、YOUR_CAT_ID、YOUR_FIELD、YOUR_VALUE、YOUR_LOGIN_USERNAME、YOUR_LOGIN_PASSWARD。

MYCOMPANY.attasksandbox.com/attask/api/proj?updates={"ID":"YOUR_ID","categoryID":"YOUR_CAT_ID","DE:YOUR_FIELD":"YOUR_VALUE"}&method=put&username=YOUR_LOGIN_USERNAME&password=YOUR_LOGIN_PASSWARD

这对我行得通。让我知道这是否适合你

于 2014-04-08T15:53:30.970 回答