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 ...
随机推荐
- 搭建PWN学习环境
环境清单 系统环境 Ubuntu22.04 编写脚本 pwntools ZIO 调试 IDA PRO gdb pwndbg ROP工具 checksec ROPgadget one_gadget Li ...
- 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 ...
- skywalking 搭建链路监控
一.skywalking简介 官网:https://github.com/apache/skywalking 引用官网的架构: 二.部署OAP和UI 需使用的镜像 apache/skywalking ...
- ElasticSearch7.3学习(二十六)----搜索(Search)参数总结、结果跳跃(bouncing results)问题解析
1.preference 首先引入一个bouncing results问题,两个document排序,field值相同:不同的shard上,可能排序不同:每次请求轮询打到不同的replica shar ...
- 739. Daily Temperatures - LeetCode
Question 739. Daily Temperatures Solution 题目大意:比今天温度还要高还需要几天 思路:笨方法实现,每次遍历未来几天,比今天温度高,就坐标减 Java实现: p ...
- 自学c语言
C 语言是一种通用的.面向过程式的计算机程序设计语言. 当前最新的 C 语言标准为 C18 前期准备 C 编译器 写在源文件中的源代码是人类可读的源.它需要"编译",转为机器语言 ...
- 微信小程序避坑指南——echarts层级太高/层级遮挡
问题:小程序中echarts因为小程序原生的canvas层级太高,而导致弹窗这类dom元素无法遮挡住canvas,如下图: 解决方案1:(wx:if控制dom显隐,显示canvas就重新渲染echar ...
- js颜色调试器
1 /* ColorTestViewer 颜色调试器 2 3 attribute: 4 onchange: Function; //颜色改变回调; 默认null 5 6 //以下属性不建议直接修改 7 ...
- jeecgboot-vue3笔记(三)弹窗的使用
需求描述 点击按钮,弹窗窗体(子组件),确定后在子组件中完成业务逻辑处理(例如添加记录),然后回调父组件刷新以显示最近记录. 实现步骤 子组件 子组件定义BasicModal <BasicMod ...
- 互联网大厂目标管理OKR实践落地与反思
上一篇「 互联网公司目标管理OKR和绩效考核的误区 」介绍了使用 OKR 时要澄清的一些概念,但是实际使用中又如何呢?我们快手也是很大的互联网公司,大家都是年轻人,思维活跃,容易接受新事物,敢尝试,但 ...