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

6 api rest transactions jira

如果我发布这样的问题转换:

{
    "fields" : {
        "resolution" : {
            "name" : "Fixed"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...我收到此错误:

{
    "errorMessages" : ["Missing 'transition' identifier"],
    "errors" : {}
}
Run Code Online (Sandbox Code Playgroud)

这似乎意味着我需要包含一个转换ID以及我更改的字段列表. /sf/answers/1025007651/似乎也这么说.精细.

但是,转换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,我只想更新问题的状态和解决方案.

Wel*_*lsh 8

你有点混淆了.所以,让我们看看我是否可以更好地为您解释.

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

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

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

/rest/api/2/issue/${issueIdOrKey}/transitions
Run Code Online (Sandbox Code Playgroud)

例:

/rest/api/2/issue/ABC-123/transitions
Run Code Online (Sandbox Code Playgroud)

这会显示如下:

{
    "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"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

因此,您只能看到1个转换可用于发布ABC-123,其ID为161.

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

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

/rest/api/2/issue/ABC-123/transitions
Run Code Online (Sandbox Code Playgroud)

使用这样的JSON:

{
    "update": {
        "comment": [
            {
                "add": {
                    "body": "Bug has been fixed."
                }
            }
        ]
    },
    "fields": {
        "assignee": {
            "name": "bob"
        },
        "resolution": {
            "name": "Fixed"
        }
    },
    "transition": {
        "id": "161"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

那更有意义吗?