卓卞恻 发表于 2025-6-25 19:33:14

Phabricator Conduit API介绍

在Phabricator页面,可以完成创建和编辑Project、Task等操作。但是如果想实现外部系统可以自主操作Phabricator,那么就需要调用Phabricator Conduit API,实现相应的创建和编辑Project、Task等操作。
创建Token

调用Phabricator Conduit API,需要token认证。点击右上角的用户头像,Settings - Conduit API Tokens - Generate Token,完成后会显示token信息。

Conduit API接口

进入Phabricator首页,选择More Applications,找到Developer Tools部分, 点击Conduit,在Modern Methods 标签下,可以看到所有Conduit API接口方法。
点击进入任意一个API接口,发现关于接口的说明分为三个部分:一是接口的概要介绍和相关参数的说明;二是接口的调用方法,通过填写相应的参数,并执行Call Methos,会真实调用该API接口,并返回API方法的执行结果;三是把API接口调用方法的内容转化为CURL或PHP方式的实例。

Conduit API 示例

Phabricator中的Project包含多个Column,每个Column包含多个Task,每个Task下可以包含多条Comment。下面使用curl命令行实例介绍相关API如何使用。
Project API


[*]创建
其中name是必选的,描述信息、图表icon、成员信息可选。
curl http://HOSTNAME:PORT/api/project.edit \
    -d api.token=api-token \
    -d transactions=name \
    -d transactions=testProject

[*]修改
需要指定project的phid编辑已创建的project。
curl http://HOSTNAME:PORT/api/project.edit \
    -d api.token=api-token \
    -d transactions=name \
    -d transactions=testNewProject \
    -d objectIdentifier=PHID-PROJ-qbht7j3eqmmqlkj2yae6

[*]查询
可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。
curl http://HOSTNAME:PORT/api/project.search \
    -d api.token=api-token \
    -d queryKey=allColumn API

官网上只找到Column的查询API,未找到创建和修改的API,因此需要在页面创建和修改Column。


[*]查询
可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。通过指定project phid可以查询该project的column。
curl http://HOSTNAME:PORT/api/project.column.search \
    -d api.token=api-token \
    -d constraints=PHID-PROJ-qbht7j3eqmmqlkj2yae6执行结果:
{
"data": [
    {
      "id": 15,
      "type": "PCOL",
      "phid": "PHID-PCOL-qsyhs6ubci6cgyd7f6ne",
      "fields": {
      "name": "testColumn",
      "proxyPHID": null,
      "project": {
          "id": 5,
          "phid": "PHID-PROJ-qbht7j3eqmmqlkj2yae6",
          "name": "testNewProject"
      },
      "dateCreated": 1657790074,
      "dateModified": 1657790092,
      "policy": {
          "view": "users",
          "edit": "users"
      }
      }
    }
]
...
}Task API


[*]创建
支持多种类型的操作,包括:添加父task,添加子task、添加comment等。需要指定project和column的phid,从而确定在哪个project的哪个column下创建task。
curl http://HOSTNAME:PORT/api/maniphest.edit \
    -d api.token=api-token \
    -d transactions=title \
    -d transactions=title-test \
    -d transactions=description \
    -d transactions=description-test \
    -d transactions=column \
    -d transactions=PHID-PCOL-5bsishzsn6bj4egkbkup \
    -d transactions=projects.set \
    -d transactions=PHID-PROJ-zrz7gbb3lxqji3fnqv6k执行结果:
{
    "result":{
      "object":{
            "id":293,
            "phid":"PHID-TASK-upumxxdvq7ah7ery2xab"
      },
      "transactions":[
            {
                "phid":"PHID-XACT-TASK-g5hfx6ogfn3xj3x"
            },
            ...
      ]
    },
    "error_code":null,
    "error_info":null
}

[*]修改
通过指定task phid来确定修改哪个task。
curl http://HOSTNAME:PORT/api/maniphest.edit \
    -d api.token=api-token \
    -d transactions=title \
    -d transactions=new-title-test \
    -d transactions=description \
    -d transactions=new-description-test \
    -d objectIdentifier=PHID-TASK-upumxxdvq7ah7ery2xab通过页面查看修改后的task。


[*]查询
可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。下面实例为查询某个column下的task。
curl http://HOSTNAME:PORT/api/maniphest.search \
    -d api.token=api-token \
    -d queryKey=all \
    -d constraints=open \
    -d constraints=closed \
    -d constraints=PHID-PCOL-qsyhs6ubci6cgyd7f6ne执行结果:
{
    "result":{
      "data":[
            {
                "id":293,
                "type":"TASK",
                "phid":"PHID-TASK-upumxxdvq7ah7ery2xab",
                "fields":{
                  "name":"new-title-test",
                  "description":{
                        "raw":"new-description-test"
                  },
                  "authorPHID":"PHID-USER-6sfzp4rmpmuqbt5y5mtp",
                  "ownerPHID":null,
                  "status":{
                        "value":"open",
                        "name":"Open",
                        "color":null
                  },
                  "priority":{
                        "value":90,
                        "name":"Needs Triage",
                        "color":"violet"
                  }
                  ...
                }
            }
      ]
    },
    "error_code":null,
    "error_info":null
}Comment API

官网上只找到Comment的创建API,未找到查询和修改的API,因此可以在页面查询和修改Comment。

[*]创建
comment API方法和task一样,均为maniphest.edit。需要指定task的phid,从而确定为哪个task添加comment。
curl http://HOSTNAME:PORT/api/maniphest.edit \
    -d api.token=api-token \
    -d transactions=comment \
    -d transactions=comment-test \
    -d objectIdentifier=PHID-TASK-upumxxdvq7ah7ery2xab执行结果:
{
    "result":{
      "object":{
            "id":293,
            "phid":"PHID-TASK-upumxxdvq7ah7ery2xab"
      },
      "transactions":[
            {
                "phid":"PHID-XACT-TASK-uqhri2bc6e3356n"
            }
      ]
    },
    "error_code":null,
    "error_info":null
}总结

本文主要介绍了如何通过Phabricator Conduit API创建、修改、查询Project、Column、Task、Comment。其它系统通过调用Conduit API,可以非常方便地实现自动化操作Phabricator。
参考资料


[*]Phabricator Conduit API官网文档
[*]Phabricator 的 conduit API 使用说明

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页: [1]
查看完整版本: Phabricator Conduit API介绍