在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。

参考资料

  1. Phabricator Conduit API官网文档

  2. Phabricator 的 conduit API 使用说明

Phabricator Conduit API介绍的更多相关文章

  1. 常用ArcGIS for Silverlight 开发API介绍

    1.API介绍 2.Map对象  3.Layer对象 4.Symbol对象 5.Task对象

  2. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  3. python学习笔记(win32print API介绍)

    最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...

  4. 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍

    一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...

  5. Commons-lang API介绍

    4.1 Commons-lang API介绍 4.1.1 StringUtils 4.1.2 StringEscapeUtils 4.1.3 ArrayUtils 4.1.4 DateUtils 4. ...

  6. APP自动化框架LazyAndroid使用手册(3)--核心API介绍

    作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...

  7. Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController

    用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...

  8. FastDFS api介绍

    1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...

  9. ElasticSearch的API介绍

    ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...

随机推荐

  1. 搭建PWN学习环境

    环境清单 系统环境 Ubuntu22.04 编写脚本 pwntools ZIO 调试 IDA PRO gdb pwndbg ROP工具 checksec ROPgadget one_gadget Li ...

  2. How to fetch data with React Hooks

    Where can I make API call with hooks in react? Async useEffect is pretty much unreadable How to fetc ...

  3. skywalking 搭建链路监控

    一.skywalking简介 官网:https://github.com/apache/skywalking 引用官网的架构:  二.部署OAP和UI 需使用的镜像 apache/skywalking ...

  4. ElasticSearch7.3学习(二十六)----搜索(Search)参数总结、结果跳跃(bouncing results)问题解析

    1.preference 首先引入一个bouncing results问题,两个document排序,field值相同:不同的shard上,可能排序不同:每次请求轮询打到不同的replica shar ...

  5. 739. Daily Temperatures - LeetCode

    Question 739. Daily Temperatures Solution 题目大意:比今天温度还要高还需要几天 思路:笨方法实现,每次遍历未来几天,比今天温度高,就坐标减 Java实现: p ...

  6. 自学c语言

    C 语言是一种通用的.面向过程式的计算机程序设计语言. 当前最新的 C 语言标准为 C18 前期准备 C 编译器  写在源文件中的源代码是人类可读的源.它需要"编译",转为机器语言 ...

  7. 微信小程序避坑指南——echarts层级太高/层级遮挡

    问题:小程序中echarts因为小程序原生的canvas层级太高,而导致弹窗这类dom元素无法遮挡住canvas,如下图: 解决方案1:(wx:if控制dom显隐,显示canvas就重新渲染echar ...

  8. js颜色调试器

    1 /* ColorTestViewer 颜色调试器 2 3 attribute: 4 onchange: Function; //颜色改变回调; 默认null 5 6 //以下属性不建议直接修改 7 ...

  9. jeecgboot-vue3笔记(三)弹窗的使用

    需求描述 点击按钮,弹窗窗体(子组件),确定后在子组件中完成业务逻辑处理(例如添加记录),然后回调父组件刷新以显示最近记录. 实现步骤 子组件 子组件定义BasicModal <BasicMod ...

  10. 互联网大厂目标管理OKR实践落地与反思

    上一篇「 互联网公司目标管理OKR和绩效考核的误区 」介绍了使用 OKR 时要澄清的一些概念,但是实际使用中又如何呢?我们快手也是很大的互联网公司,大家都是年轻人,思维活跃,容易接受新事物,敢尝试,但 ...