2

Phabricator Conduit API介绍 - bjehp

 1 year ago
source link: https://www.cnblogs.com/ljhbjehp/p/16484852.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK