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][type]=name \
-d transactions[name][value]=testProject
- 修改
需要指定project的phid编辑已创建的project。
curl http://HOSTNAME:PORT/api/project.edit \
-d api.token=api-token \
-d transactions[name][type]=name \
-d transactions[name][value]=testNewProject \
-d objectIdentifier=PHID-PROJ-qbht7j3eqmmqlkj2yae6
- 查询
可以通过queryKey过滤出结果,也可以自定义查询限制,并对结果排序等。
curl http://HOSTNAME:PORT/api/project.search \
-d api.token=api-token \
-d queryKey=all
Column 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[projects][0]=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][type]=title \
-d transactions[title][value]=title-test \
-d transactions[description][type]=description \
-d transactions[description][value]=description-test \
-d transactions[column][type]=column \
-d transactions[column][value][0]=PHID-PCOL-5bsishzsn6bj4egkbkup \
-d transactions[projects.set][type]=projects.set \
-d transactions[projects.set][value][0]=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][type]=title \
-d transactions[title][value]=new-title-test \
-d transactions[description][type]=description \
-d transactions[description][value]=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[statuses][0]=open \
-d constraints[statuses][1]=closed \
-d constraints[columnPHIDs][0]=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][type]=comment \
-d transactions[comment][value]=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介绍的更多相关文章
- 常用ArcGIS for Silverlight 开发API介绍
1.API介绍 2.Map对象 3.Layer对象 4.Symbol对象 5.Task对象
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- python学习笔记(win32print API介绍)
最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...
- 使用html5中video自定义播放器必备知识点总结以及JS全屏API介绍
一.video的js知识点: controls(控制器).autoplay(自动播放).loop(循环)==video默认的: 自定义播放器中一些JS中提供的方法和属性的记录: 1.play()控制视 ...
- 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. ...
- APP自动化框架LazyAndroid使用手册(3)--核心API介绍
作者:黄书力 概述 在前一篇博文中,简要介绍了一款安卓UI自动化测试框架LazyAndroid (http://blog.csdn.net/kaka1121/article/details/53204 ...
- Spring Boot 2.x 编写 RESTful API (一) RESTful API 介绍 & RestController
用Spring Boot编写RESTful API 学习笔记 RESTful API 介绍 REST 是 Representational State Transfer 的缩写 所有的东西都是资源,所 ...
- FastDFS api介绍
1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...
- ElasticSearch的API介绍
ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...
随机推荐
- [AcWing 862] 三元组排序
点击查看代码 #include <iostream> #include <algorithm> using namespace std; const int N = 1e5 + ...
- C#关于在返回值为Task方法中使用Thread.Sleep引发的思考
起因 最近有个小伙伴提出了一个问题,就是在使用.net core的BackgroundService的时候,对应的ExecuteAsync方法里面写如下代码,会使程序一直卡在当前方法,不会继续执行,代 ...
- 干货 | 手把手教你搭建一套OpenStack云平台
1 前言 今天我们为一位朋友搭建一套OpenStack云平台. 我们使用Kolla部署stein版本的OpenStack云平台. kolla是用于自动化部署OpenStack的一个项目,它基于dock ...
- redo log 和 binlog 的一些总结
1 redo log 和 binlog 的区别 redo log 是 InnoDB 引擎特有的:binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用. redo log 是物理 ...
- 过早的给方法中 引用对象 设为 null 可被 GC提前回收吗?
经常在代码中看到有人将 null 赋值给引用类型,来达到让 GC 提前回收的目的,这样做真的有用吗?今天我们就来研究一下. 为了方便讲解,来一段测试代码,提前将 test1=null ,然后调用 GC ...
- mysql5.7介绍和安装
环境准备: 1.关闭防火墙和selinux systemctl stop firewalldsystemctl stop SElinux 2. 如果安装过mariadb需要停止且卸载服务 system ...
- Golang:将日志以Json格式输出到Kafka
在上一篇文章中我实现了一个支持Debug.Info.Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手.有兴趣的可以通过这个链接前往:https://github.com/ ...
- Redis设计与实现2.2:数据持久化
数据持久化 这是<Redis设计与实现>系列的文章,系列导航:Redis设计与实现笔记 RDB持久化 RDB 持久化功能所生成的 RDB 文件是一个经过压缩的二进制文件,通过该文件可以还原 ...
- 【算法】堆排序(Heap Sort)(七)
堆排序(Heap Sort) 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法.堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父 ...
- 292. Nim Game - LeetCode
Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢. n 是否能赢 1 true 2 true 3 true 4 false 不 ...