Creating a new Phabricator task with javascript

Viewed 377

I am trying to connect to Phabricator conduit API and create a task via a javascript bonded to a google sheet.

The Conduit API Docs linked here doesn't really explain as much. I have seen better API documentations!

Below is what I have in mind but this is a cURL and I have no idea how to make it Javascript or wither this would work or not? I appreciate the help

curl https://secure.phabricator.com/api/maniphest.edit \
-d api.token=api-token \
-d param= [
    {
      "type": "title",
      "value": "A value from a cell on the googlesheet"
    },
    {
      "type": "description",
      "value": "A value from a cell on the googlesheet"
    },
    {
      "type": "subscribers.add",
      "value": "A value from a cell on the googlesheet"
    }
  ] \
2 Answers

Generally speaking the steps are:

First, generate an API token in: https://phabricator.yourdomain.com/settings/user/username/page/apitokens/

where phabricator.yourdomain.com must be changed by the subdomain you have Phabricator installed and username must be changed by your administration user name.

Then, let's say you have installed Phabricator in phabricator.yourdomain.com, you can request the API methods with URLs of the following type

https://phabricator.yourdomain.com/api/method_name?parameter1=value1&parameter2=value2...

where method_name must be replaced by the descriptor of a real method from this catalog: https://secure.phabricator.com/conduit/

For example, if you want to read the contents of task number 125, with a generated API token of value api-svhcp2a3qmgkkjfa5f6sh7cm4joz, use the method maniphest.info to complete a URL like this:

http://phabricator.yourdomain.com/api/maniphest.info?api.token=api-svhcp2a3qmgkkjfa5f6sh7cm4joz&task_id=125&output=json

This URL can be directly tested in your preferred browser to obtain a JSON response with the information about task number 125 (make sure that task ID exists). Firefox will even show the returned JSON in a human-readable fashion.

These working URLs can be then inserted in Javascript as

window.location.href=http://phabricator.yourdomain.com/api/maniphest.info?api.token=api-svhcp2a3qmgkkjfa5f6sh7cm4joz&task_id=125&output=json

or as an asynchronous Ajax call.

I had a similar problem as you (I used HTTParty with Ruby). To solve it I used the following body (using your example):

"transactions[0][type]=title&transactions[0][value][0]=A value from a cell on the googlesheet&transactions[1][type]=description&transactions[1][value]=A value from a cell on the googlesheet&transactions[2][type]=subscribers.add&transactions[2][value][0]=A value from a cell on the googlesheet"
Related