ToB企服应用市场:ToB评测及商务社交产业平台

标题: Phabricator Conduit API介绍 [打印本页]

作者: 篮之新喜    时间: 2022-8-28 02:46
标题: 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、成员信息可选。
  1. curl http://HOSTNAME:PORT/api/project.edit \
  2.     -d api.token=api-token \
  3.     -d transactions[name][type]=name \
  4.     -d transactions[name][value]=testProject
复制代码
需要指定project的phid编辑已创建的project。
  1. curl http://HOSTNAME:PORT/api/project.edit \
  2.     -d api.token=api-token \
  3.     -d transactions[name][type]=name \
  4.     -d transactions[name][value]=testNewProject \
  5.     -d objectIdentifier=PHID-PROJ-qbht7j3eqmmqlkj2yae6
复制代码
可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。
  1. curl http://HOSTNAME:PORT/api/project.search \
  2.     -d api.token=api-token \
  3.     -d queryKey=all
复制代码
Column API

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

可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。通过指定project phid可以查询该project的column。
  1. curl http://HOSTNAME:PORT/api/project.column.search \
  2.     -d api.token=api-token \
  3.     -d constraints[projects][0]=PHID-PROJ-qbht7j3eqmmqlkj2yae6
复制代码
执行结果:
  1. {
  2.   "data": [
  3.     {
  4.       "id": 15,
  5.       "type": "PCOL",
  6.       "phid": "PHID-PCOL-qsyhs6ubci6cgyd7f6ne",
  7.       "fields": {
  8.         "name": "testColumn",
  9.         "proxyPHID": null,
  10.         "project": {
  11.           "id": 5,
  12.           "phid": "PHID-PROJ-qbht7j3eqmmqlkj2yae6",
  13.           "name": "testNewProject"
  14.         },
  15.         "dateCreated": 1657790074,
  16.         "dateModified": 1657790092,
  17.         "policy": {
  18.           "view": "users",
  19.           "edit": "users"
  20.         }
  21.       }
  22.     }
  23.   ]
  24.   ...
  25. }
复制代码
Task API

支持多种类型的操作,包括:添加父task,添加子task、添加comment等。需要指定project和column的phid,从而确定在哪个project的哪个column下创建task。
  1. curl http://HOSTNAME:PORT/api/maniphest.edit \
  2.     -d api.token=api-token \
  3.     -d transactions[title][type]=title \
  4.     -d transactions[title][value]=title-test \
  5.     -d transactions[description][type]=description \
  6.     -d transactions[description][value]=description-test \
  7.     -d transactions[column][type]=column \
  8.     -d transactions[column][value][0]=PHID-PCOL-5bsishzsn6bj4egkbkup \
  9.     -d transactions[projects.set][type]=projects.set \
  10.     -d transactions[projects.set][value][0]=PHID-PROJ-zrz7gbb3lxqji3fnqv6k
复制代码
执行结果:
  1. {
  2.     "result":{
  3.         "object":{
  4.             "id":293,
  5.             "phid":"PHID-TASK-upumxxdvq7ah7ery2xab"
  6.         },
  7.         "transactions":[
  8.             {
  9.                 "phid":"PHID-XACT-TASK-g5hfx6ogfn3xj3x"
  10.             },
  11.             ...
  12.         ]
  13.     },
  14.     "error_code":null,
  15.     "error_info":null
  16. }
复制代码
通过指定task phid来确定修改哪个task。
  1. curl http://HOSTNAME:PORT/api/maniphest.edit \
  2.     -d api.token=api-token \
  3.     -d transactions[title][type]=title \
  4.     -d transactions[title][value]=new-title-test \
  5.     -d transactions[description][type]=description \
  6.     -d transactions[description][value]=new-description-test \
  7.     -d objectIdentifier=PHID-TASK-upumxxdvq7ah7ery2xab
复制代码
通过页面查看修改后的task。

可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。下面实例为查询某个column下的task。
  1. curl http://HOSTNAME:PORT/api/maniphest.search \
  2.     -d api.token=api-token \
  3.     -d queryKey=all \
  4.     -d constraints[statuses][0]=open \
  5.     -d constraints[statuses][1]=closed \
  6.     -d constraints[columnPHIDs][0]=PHID-PCOL-qsyhs6ubci6cgyd7f6ne
复制代码
执行结果:
  1. {
  2.     "result":{
  3.         "data":[
  4.             {
  5.                 "id":293,
  6.                 "type":"TASK",
  7.                 "phid":"PHID-TASK-upumxxdvq7ah7ery2xab",
  8.                 "fields":{
  9.                     "name":"new-title-test",
  10.                     "description":{
  11.                         "raw":"new-description-test"
  12.                     },
  13.                     "authorPHID":"PHID-USER-6sfzp4rmpmuqbt5y5mtp",
  14.                     "ownerPHID":null,
  15.                     "status":{
  16.                         "value":"open",
  17.                         "name":"Open",
  18.                         "color":null
  19.                     },
  20.                     "priority":{
  21.                         "value":90,
  22.                         "name":"Needs Triage",
  23.                         "color":"violet"
  24.                     }
  25.                     ...
  26.                 }
  27.             }
  28.         ]
  29.     },
  30.     "error_code":null,
  31.     "error_info":null
  32. }
复制代码
Comment API

官网上只找到Comment的创建API,未找到查询和修改的API,因此可以在页面查询和修改Comment。
comment API方法和task一样,均为maniphest.edit。需要指定task的phid,从而确定为哪个task添加comment。
  1. curl http://HOSTNAME:PORT/api/maniphest.edit \
  2.     -d api.token=api-token \
  3.     -d transactions[comment][type]=comment \
  4.     -d transactions[comment][value]=comment-test \
  5.     -d objectIdentifier=PHID-TASK-upumxxdvq7ah7ery2xab
复制代码
执行结果:
  1. {
  2.     "result":{
  3.         "object":{
  4.             "id":293,
  5.             "phid":"PHID-TASK-upumxxdvq7ah7ery2xab"
  6.         },
  7.         "transactions":[
  8.             {
  9.                 "phid":"PHID-XACT-TASK-uqhri2bc6e3356n"
  10.             }
  11.         ]
  12.     },
  13.     "error_code":null,
  14.     "error_info":null
  15. }
复制代码
总结

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4