【问题标题】:Can't create Task with Tag in Asana无法在 Asana 中创建带有标签的任务
【发布时间】:2017-07-16 01:45:51
【问题描述】:

当我尝试使用下面的 JSON 创建任务时,我收到此错误:

{
    "errors": [
        {
            "message": "tags: [0]: Not a valid ID type: object",
            "help": "For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"
        }
    ]
}

我尝试不使用 tags 属性,它可以工作。标签的预期格式与其他数组属性(成员资格、追随者等)相同,所以我不确定我做错了什么。项目和标签都存在于工作区中。

JSON 请求:

{
    "data": {
        "due_on": null,
        "assignee": null,
        "workspace": 227967273629890,
        "name": "API task test2 with tag",
        "notes": "foo",
        "followers": [],
        "memberships": [{
            "project": 317773627482488,
            "section": 0
        }],
        "tags": [{
            "id": 375539822976838,
            "name": "Tag3"
        }]
    }
}

请注意,我正在序列化一个 C# 类并将其写入请求流。如果我不添加到 Tag 数组,它可以工作,但我不确定格式有什么问题 - 它与 Membership 和 Follower 数组相同,可以正常工作。我尝试从 Tag 类中删除 name 属性,并将 id 从 string 更改为 object - 同样的错误:

[DataContract]
public class TaskToCreate
{
    [DataMember]
    public Data data { get; set; }
    public class Follower
    {
        [DataMember]
        public string id { get; set; }
    }
}
[DataContract]
public class Data
{
    [DataMember]
    public string due_on { get; set; }
    [DataMember]
    public string assignee { get; set; }
    [DataMember]
    public long workspace { get; set; }
    [DataMember]
    public string name { get; set; }
    [DataMember]
    public string notes { get; set; }
    [DataMember]
    public TaskToCreate.Follower[] followers { get; set; }
    [DataMember]
    public Membership[] memberships { get; set; }
    [DataMember]
    public Tag[] tags { get; set; }
}
[DataContract]
public class Membership
{
    [DataMember]
    public long project { get; set; }
    [DataMember]
    public long section { get; set; }
}
[DataContract]
 public class Tag
 {
    [DataMember]
    public object id { get; set; }
 }

【问题讨论】:

    标签: asana-api


    【解决方案1】:

    在 Asana API 中,读取响应和写入数据不是统一对称的。要创建带有标签的任务,您只需要提供一组标签 ID。如果您GET 一个任务,响应将包含标签作为键值对数组。

    要修复您的数据,您需要将标签数组更改为仅包含标签 ID。下面是一个使用两个标签创建任务的示例请求:

    curl --request POST -H 'Content-Type: application/json' -H "Authorization: Bearer 0/abc123456789" \
    https://app.asana.com/api/1.0/tasks \
        -d 
        '{
            "data": {
                "projects": "123456789",
                "name" : "I'm a task from curl",
                "tags": ["123456789", "234567890"]
            }
        }'
    

    【讨论】:

    • 我会提供一个 Fiddler 请求 - 但我似乎无法正确编写一个。我可以在 Postman 中复制该问题,但我无法分享这些请求。我还编辑了我的问题以澄清我正在使用的序列化方法 - 这可能是问题所在。
    • 您是否尝试将标签更改为标签 ID 数组?我认为这是你的问题。
    • 是的,解决了 - 字符串数组是分辨率。谢谢杰夫!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多