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 35] 反转链表
迭代版本 点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next ...
- 谁动了我的主机? 之活用History命令
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! Linux系统下可通过history命令查看用户所有的历 ...
- 1.sprng 简介
容器(可以用来管理所有的组件(类)) 核心关注:IOC和AOP 1.IOC Inversion(反转) Of Control:控制反转 控制:资源的获取方式 1.主动式(要什么资源自己创建) Pers ...
- pycham的安装、优化、使用
一.下载与安装 下载地址:https://confluence.jetbrains.com/display/PYH/Previous+PyCharm+Releases 注册:参考地址:http://i ...
- MySQL基准测试工具
一.基准测试 基准测试(benchmark)是针对系统设计的一种压力测试. 基准测试是简化了的压力测试. 1.1 常见指标 TPS QPS 响应时间 并发量 1.2 收集与分析数据脚本 收集数据的sh ...
- 分布式机器学习:逻辑回归的并行化实现(PySpark)
1. 梯度计算式导出 我们在博客<统计学习:逻辑回归与交叉熵损失(Pytorch实现)>中提到,设\(w\)为权值(最后一维为偏置),样本总数为\(N\),\(\{(x_i, y_i)\} ...
- Java到底是解释型还是编译型语言
Java到底是解释型还是编译型语言? 定义 回答这个问题,我们首先来看下概念: 开发人员编写代码,语言是人类可理解的方式,是具有语义的,然而计算机无法理解和执行,因此需要做一层转换. 解释型语言: 运 ...
- mybatis if判断等于某个字符串
这种写法是错误的:在OGNL的表达式中,'true'会被解析成字符,因为java是强类型的 <if test="flag=='true' "> AND ho.id = ...
- GDB的简单使用一
GDB的简单使用一 一.概念 二.GDB的基本使用方法一 调试前预备知识 获取进程的内核转储 启动gdb调试 1.启动 2.设置断点 3.运行程序 4.显示栈帧 5.显示变量 6.显示寄存器 7.单步 ...
- Jmeter基础入门应用举例
举例当然应该有接口下面以常用的百度搜索接口为例: 1.接口地址: http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试 2.请求参数 ie:编码方式,默认 ...