• 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-tokens

    Conduit API接口

    进入Phabricator首页,选择More Applications,找到Developer Tools部分, 点击Conduit,在Modern Methods 标签下,可以看到所有Conduit API接口方法。

    点击进入任意一个API接口,发现关于接口的说明分为三个部分:一是接口的概要介绍和相关参数的说明;二是接口的调用方法,通过填写相应的参数,并执行Call Methos,会真实调用该API接口,并返回API方法的执行结果;三是把API接口调用方法的内容转化为CURL或PHP方式的实例。

    maniphest-info-api

    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。

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

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

    参考资料

    1. Phabricator Conduit API官网文档

    2. Phabricator 的 conduit API 使用说明

  • 相关阅读:
    git企业级使用
    数智随行 | 探想未来工厂数字化,强化智能设备管理
    牛客刷题<19>使用3-8译码器实现逻辑函数
    Docker面试整理-Docker 常用命令
    单⽚机常⽤的⼏种通信协议
    算法基础习题—内存分配(区间树实现)
    老杨说运维 | 六步法快速实现数据可视化,从容应对数字转型
    RocketMQ关于指标数据的总结
    【二】2D测量 Metrology——clear_metrology_model()/clear_metrology_object()算子
    JAVA继承
  • 原文地址:https://www.cnblogs.com/ljhbjehp/p/16484852.html