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 ...
随机推荐
- 4.25JMster环境搭建、webxml及测试平台练习
1.Java环境搭建 右击电脑属性--高级设置--环境变量--系统变量--新建(输入JAVA_HOME.C:\Program Files\Java\jdk1.8.0_91---CLASSPATH..; ...
- 【译】defer-panic-and-recover
Go 有通用的控制流程:if,for,switch,goto.它也有go语句用于让代码运行在单独的协程.这里我将讨论一些不常见的问题:defer,panic 和 recover. defer语句将函数 ...
- 小干货:Linux 系统的备份恢复
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! tar 命令 副本(本机备份整个系统,以后还原还是还原到 ...
- dubbo发送过程编码失败,会唤醒发送线程吗?
dubbo发送过程编码失败,会唤醒发送(客户端业务)线程吗?如何实现的? 在上篇文章 dubbo坑- No provider available for the service xxx 中,如果dub ...
- java高级用法之:JNA中的Memory和Pointer
目录 简介 Pointer 特殊的Pointer:Opaque Memory 总结 简介 我们知道在native的代码中有很多指针,这些指针在JNA中被映射成为Pointer.除了Pointer之外, ...
- while..else ;for;range; 基本数据类型的内置函数
while + esle #当while循环正常循环结束后,会执行else中的代码块.如果遇到break结束循环,else中的代码将不会运行. ``` 结构: while 条件: 循环代码 else: ...
- drools中query的使用
一.背景 我们知道在drools中是存在工作内存的,我们的Fact对象会加入到工作内存中,同时我们自己也可以在drl文件中使用insert/modify/update/delete等方法,修改工作内存 ...
- 【算法】冒泡排序(Bubble Sort)(一)
冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- 152. Maximum Product Subarray - LeetCode
Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的 ...
- 131_Power Query之获取钉钉日志自动刷新Power BI报告
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近在玩钉钉日志,企业填写简单数据后方便汇总到一起比较实用的工具,但数据填写以后还是需要下载日志报表,比较麻烦. ...