转换问题时,JIRA REST API是否需要提交转换ID?

时间:2014-02-12 20:21:44

标签: api rest transactions jira

如果我按照以下方式发布问题转换:

{
    "fields" : {
        "resolution" : {
            "name" : "Fixed"
        }
    }
}

...我收到此错误:

{
    "errorMessages" : ["Missing 'transition' identifier"],
    "errors" : {}
}

这似乎暗示我需要包含转换ID以及我更改的字段列表。 https://stackoverflow.com/a/14642966/565869似乎也这么说。细

但是,转换ID似乎是全局的。仅查找此问题的最高转换ID并增加它是不够的;这样的ID可能在别处使用。不惜一切代价,我可以获得系统中任何地方使用的最高交易ID;目前这可能是68,000。但是,如果我当时使用事务ID 68,001,那么GUI用户很可能会尝试自己的转换并在可能之前使用此ID。

我可以使用1,000,001及以上范围内的事务ID,但如果JIRA Web GUI在生成新ID时使用了之前使用的最高事务ID,那么我将在此范围内而不是68,000范围内发生冲突。我可以使用69,000,并相信在获得最高交易ID所需的时间内不会有一千次转换。

然而,这些看起来都非常笨拙。是否无法发布转换并让JIRA生成自己的唯一ID?我不需要检索生成的ID,我只想更新问题的状态和解决方案。

1 个答案:

答案 0 :(得分:6)

你有点混淆了。所以,让我们看看能否为您解释一下。

要转换JIRA问题,您可以使用转换ID来确定要应用于该问题的转换。您没有为事务指定ID或转换ID以识别转换发生,JIRA会为您处理此事。

理解它的最简单方法是看它。

首先,您可以通过对API调用执行GET来查看问题可用的转换:

/rest/api/2/issue/${issueIdOrKey}/transitions

示例:

/rest/api/2/issue/ABC-123/transitions

将显示如下内容:

{
    "expand": "transitions",
    "transitions": [
        {
            "id": "161",
            "name": "Resolve",
            "to": {
                "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.",
                "iconUrl": "https://localhost:8080/images/icons/statuses/resolved.png",
                "id": "5",
                "name": "Resolved",
                "self": "https://localhost:8080/rest/api/2/status/5"
            }
        }
    ]
}

因此,您只能看到问题ABC-123只有1次转化,且ID为161

如果您通过GUI浏览到该JIRA问题,您将看到只有1个可用的转换,它将与API调用匹配。事实上,如果您检查了该元素,您应该看到它具有a标记并且href类似action=161

所以,如果您想转换此问题,则需要对以下网址进行POST:

/rest/api/2/issue/ABC-123/transitions

使用这样的JSON:

{
    "update": {
        "comment": [
            {
                "add": {
                    "body": "Bug has been fixed."
                }
            }
        ]
    },
    "fields": {
        "assignee": {
            "name": "bob"
        },
        "resolution": {
            "name": "Fixed"
        }
    },
    "transition": {
        "id": "161"
    }
}

使用从显示所有转换的调用中找到的转换ID。我还会更新决议和受让人并同时添加评论。

这更有意义吗?