如何使用 ZenHub 设置问题管道 API

How to set an issue pipeline with ZenHub API

我们在企业 GitHub 安装中使用 ZenHub。我正在编写一个脚本,将问题从一个 GitHub 回购转移到另一个回购,包括 ZenHub 信息。我已经复制了问题,设置了标签和里程碑。然后我使用 ZenHub API 来设置估计值并创建 epics。一切正常。我的最后一步是将问题分配给 ZenHub 管道。以下工作正常(获取有关问题的信息):

zenhub_headers = {"X-Authentication-Token": "%s" % zenhub_token}
url = '%s/p1/repositories/%d/issues/15' % (zenhub_endpoint, repo)
response = requests.get(url, headers=zenhub_headers, verify=False)

但是,当我尝试将相同的问题转移到具有以下内容的管道时:

params = json.dumps({"pipeline_id": "5a36d8584b9b9e57bc9729f9"} )
zenhub_headers = {"X-Authentication-Token": "%s" % zenhub_token}
url = '%s/p1/repositories/%d/issues/15/moves' % (zenhub_endpoint, repo)
response = requests.post(url, headers=zenhub_headers, data=params, verify=False)

我得到了 400:b'{"message":"Invalid Field for pipeline_id: undefined"}'。我已验证管道 5a36d8584b9b9e57bc9729f9 确实存在于目标存储库中。

API 仍处于测试阶段。我想知道这是 API 中的错误还是我做错了什么。

这里是来自 ZenHub 的 Pablo。这里的问题是请求格式不正确。缺少position参数,不需要将请求体编码为字符串,直接发送字典即可:

import requests

# No need to stringify
params = {
    "pipeline_id": "5a36d8584b9b9e57bc9729f9",
    "position": "top"
}

# some code omitted here...

response = requests.post(url, headers=zenhub_headers, data=params, verify=False)

移动问题端点的文档可用here。干杯,