82 KiB
Json-RPC API
User and application API
There are two types of API access:
Application API
- Access to the API with the user "jsonrpc" and the token available in settings
- Access to all procedures
- No permission checked
- There is no user session on the server
- Example of possible clients: tools to migrate/import data, create tasks from another system, etc...
User API
- Access to the API with the user credentials (username and password)
- Access to a restricted set of procedures
- The project permissions are checked
- A user session is created on the server
- Example of possible clients: mobile/desktop application, command line utility, etc...
Security
- Always use HTTPS with a valid certificate
- If you make a mobile application, it's your job to store securely the user credentials on the device
- After 3 authentication failure on the user api, the end-user have to unlock his account by using the login form
- Two factor authentication is not yet available through the API
Protocol
Kanboard use the protocol Json-RPC to interact with external programs.
JSON-RPC is a remote procedure call protocol encoded in JSON. Almost the same thing as XML-RPC but with the JSON format.
We use the version 2 of the protocol.
You must call the API with a POST
HTTP request.
Kanboard support batch requests, so you can make multiple API calls in a single HTTP request. It's particularly useful for mobile clients with higher network latency.
Authentication
Default method (HTTP Basic)
The API credentials are available on the settings page.
- API end-point:
https://YOUR_SERVER/jsonrpc.php
If you want to use the "application api":
- Username:
jsonrpc
- Password: API token on the settings page
Otherwise for the "user api", just use the real username/passsword.
The API use the HTTP Basic Authentication Scheme described in the RFC2617.
If there is an authentication error, you will receive the HTTP status code 401 Not Authorized
.
Authorized User API procedures
- getMe
- getMyDashboard
- getMyActivityStream
- createMyPrivateProject
- getMyProjectsList
- getTimezone
- getVersion
- getDefaultTaskColor
- getDefaultTaskColors
- getColorList
- getProjectById
- getTask
- getTaskByReference
- getAllTasks
- openTask
- closeTask
- moveTaskPosition
- createTask
- updateTask
- getBoard
Custom HTTP header
You can use an alternative HTTP header for the authentication if your server have a very specific configuration.
- The header name can be anything you want, by example
X-API-Auth
. - The header value is the
username:password
encoded in Base64.
Configuration:
- Define your custom header in your
config.php
:define('API_AUTHENTICATION_HEADER', 'X-API-Auth');
- Encode the credentials in Base64, example with PHP
base64_encode('jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');
- Test with curl:
curl \
-H 'X-API-Auth: anNvbnJwYzoxOWZmZDk3MDlkMDNjZTUwNjc1YzNhNDNkMWM0OWMxYWMyMDdmNGJjNDVmMDZjNWIyNzAxZmJkZjg5Mjk=' \
-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
http://localhost/kanboard/jsonrpc.php
Examples
Example with cURL
From the command line:
curl \
-u "jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929" \
-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
http://localhost/kanboard/jsonrpc.php
Response from the server:
{
"jsonrpc":"2.0",
"id":1,
"result":[
{
"id":"1",
"name":"API test",
"is_active":"1",
"token":"6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf",
"last_modified":"1403392631"
}
]
}
Example with Python
Here a basic example written in Python to create a task:
#!/usr/bin/env python
import requests
import json
def main():
url = "http://demo.kanboard.net/jsonrpc.php"
api_key = "be4271664ca8169d32af49d8e1ec854edb0290bc3588a2e356275eab9505"
headers = {"content-type": "application/json"}
payload = {
"method": "createTask",
"params": {
"title": "Python API test",
"project_id": 1
},
"jsonrpc": "2.0",
"id": 1,
}
response = requests.post(
url,
data=json.dumps(payload),
headers=headers,
auth=("jsonrpc", api_key)
)
if response.status_code == 401:
print "Authentication failed"
else:
result = response.json()
assert result["result"] == True
assert result["jsonrpc"]
assert result["id"] == 1
print "Task created successfully!"
if __name__ == "__main__":
main()
Run this script from your terminal:
python jsonrpc.py
Task created successfully!
Example with a PHP client:
I wrote a simple Json-RPC Client/Server library in PHP, here an example:
<?php
$client = new JsonRPC\Client('http://localhost:8000/jsonrpc.php');
$client->authentication('jsonrpc', '19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');
print_r($client->getAllProjects());
The response:
Array
(
[0] => Array
(
[id] => 1
[name] => API test
[is_active] => 1
[token] => 6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf
[last_modified] => 1403392631
)
)
Example with Ruby
This example can be used with Kanboard configured with Reverse-Proxy authentication and the API configured with a custom authentication header:
require 'faraday'
conn = Faraday.new(:url => 'https://kanboard.example.com') do |faraday|
faraday.response :logger
faraday.headers['X-API-Auth'] = 'XXX' # base64_encode('jsonrpc:API_KEY')
faraday.basic_auth(ENV['user'], ENV['pw']) # user/pass to get through basic auth
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
end
response = conn.post do |req|
req.url '/jsonrpc.php'
req.headers['Content-Type'] = 'application/json'
req.body = '{ "jsonrpc": "2.0", "id": 1, "method": "getAllProjects" }'
end
puts response.body
Procedures
getVersion
- Purpose: Get the application version
- Parameters: none
- Result: version (Example: 1.0.12, master)
Request example:
{
"jsonrpc": "2.0",
"method": "getVersion",
"id": 1661138292
}
Response example:
{
"jsonrpc": "2.0",
"id": 1661138292,
"result": "1.0.13"
}
getTimezone
- Purpose: Get the application timezone
- Parameters: none
- Result on success: Timezone (Example: UTC, Europe/Paris)
- Result on failure: Default timezone (UTC)
Request example:
{
"jsonrpc": "2.0",
"method": "getTimezone",
"id": 1661138292
}
Response example:
{
"jsonrpc": "2.0",
"id": 1661138292,
"result": "Europe\/Paris"
}
getDefaultTaskColors
- Purpose: Get all default task colors
- Parameters: None
- Result on success: Color properties
Request example:
{
"jsonrpc": "2.0",
"method": "getDefaultTaskColors",
"id": 2108929212
}
Response example:
{
"jsonrpc": "2.0",
"id": 2108929212,
"result": {
"yellow": {
"name": "Yellow",
"background": "rgb(245, 247, 196)",
"border": "rgb(223, 227, 45)"
},
"blue": {
"name": "Blue",
"background": "rgb(219, 235, 255)",
"border": "rgb(168, 207, 255)"
},
"green": {
"name": "Green",
"background": "rgb(189, 244, 203)",
"border": "rgb(74, 227, 113)"
},
"purple": {
"name": "Purple",
"background": "rgb(223, 176, 255)",
"border": "rgb(205, 133, 254)"
},
"red": {
"name": "Red",
"background": "rgb(255, 187, 187)",
"border": "rgb(255, 151, 151)"
},
"orange": {
"name": "Orange",
"background": "rgb(255, 215, 179)",
"border": "rgb(255, 172, 98)"
},
"grey": {
"name": "Grey",
"background": "rgb(238, 238, 238)",
"border": "rgb(204, 204, 204)"
},
"brown": {
"name": "Brown",
"background": "#d7ccc8",
"border": "#4e342e"
},
"deep_orange": {
"name": "Deep Orange",
"background": "#ffab91",
"border": "#e64a19"
},
"dark_grey": {
"name": "Dark Grey",
"background": "#cfd8dc",
"border": "#455a64"
},
"pink": {
"name": "Pink",
"background": "#f48fb1",
"border": "#d81b60"
},
"teal": {
"name": "Teal",
"background": "#80cbc4",
"border": "#00695c"
},
"cyan": {
"name": "Cyan",
"background": "#b2ebf2",
"border": "#00bcd4"
},
"lime": {
"name": "Lime",
"background": "#e6ee9c",
"border": "#afb42b"
},
"light_green": {
"name": "Light Green",
"background": "#dcedc8",
"border": "#689f38"
},
"amber": {
"name": "Amber",
"background": "#ffe082",
"border": "#ffa000"
}
}
}
getDefaultTaskColor
- Purpose: Get default task color
- Parameters: None
- Result on success: color_id
Request example:
{
"jsonrpc": "2.0",
"method": "getDefaultTaskColor",
"id": 1144775215
}
Response example:
{
"jsonrpc": "2.0",
"id": 1144775215,
"result": "yellow"
}
getColorList
- Purpose: Get the list of task colors
- Parameters: none
- Result on success: Dictionary of color_id => color_name
Request example:
{
"jsonrpc": "2.0",
"method": "getColorList",
"id": 1677051386
}
Response example:
{
"jsonrpc": "2.0",
"id": 1677051386,
"result": {
"yellow": "Yellow",
"blue": "Blue",
"green": "Green",
"purple": "Purple",
"red": "Red",
"orange": "Orange",
"grey": "Grey",
"brown": "Brown",
"deep_orange": "Deep Orange",
"dark_grey": "Dark Grey",
"pink": "Pink",
"teal": "Teal",
"cyan": "Cyan",
"lime": "Lime",
"light_green": "Light Green",
"amber": "Amber"
}
}
createProject
- Purpose: Create a new project
- Parameters:
- name (string, required)
- description (string, optional)
- Result on success: project_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createProject",
"id": 1797076613,
"params": {
"name": "PHP client"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1797076613,
"result": 2
}
getProjectById
- Purpose: Get project information
- Parameters:
- project_id (integer, required)
- Result on success: project properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getProjectById",
"id": 226760253,
"params": {
"project_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 226760253,
"result": {
"id": "1",
"name": "API test",
"is_active": "1",
"token": "",
"last_modified": "1436119135",
"is_public": "0",
"is_private": "0",
"is_everybody_allowed": "0",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1",
"description": "test",
"identifier": "",
"url": {
"board": "http:\/\/127.0.0.1:8000\/?controller=board&action=show&project_id=1",
"calendar": "http:\/\/127.0.0.1:8000\/?controller=calendar&action=show&project_id=1",
"list": "http:\/\/127.0.0.1:8000\/?controller=listing&action=show&project_id=1"
}
}
}
getProjectByName
- Purpose: Get project information
- Parameters:
- name (string, required)
- Result on success: project properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getProjectByName",
"id": 1620253806,
"params": {
"name": "Test"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1620253806,
"result": {
"id": "1",
"name": "Test",
"is_active": "1",
"token": "",
"last_modified": "1436119135",
"is_public": "0",
"is_private": "0",
"is_everybody_allowed": "0",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1",
"description": "test",
"identifier": "",
"url": {
"board": "http:\/\/127.0.0.1:8000\/?controller=board&action=show&project_id=1",
"calendar": "http:\/\/127.0.0.1:8000\/?controller=calendar&action=show&project_id=1",
"list": "http:\/\/127.0.0.1:8000\/?controller=listing&action=show&project_id=1"
}
}
}
getAllProjects
- Purpose: Get all available projects
- Parameters:
- none
- Result on success: List of projects
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllProjects",
"id": 2134420212
}
Response example:
{
"jsonrpc": "2.0",
"id": 2134420212,
"result": [
{
"id": "1",
"name": "API test",
"is_active": "1",
"token": "",
"last_modified": "1436119570",
"is_public": "0",
"is_private": "0",
"is_everybody_allowed": "0",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1",
"description": null,
"identifier": "",
"url": {
"board": "http:\/\/127.0.0.1:8000\/?controller=board&action=show&project_id=1",
"calendar": "http:\/\/127.0.0.1:8000\/?controller=calendar&action=show&project_id=1",
"list": "http:\/\/127.0.0.1:8000\/?controller=listing&action=show&project_id=1"
}
}
]
}
updateProject
- Purpose: Update a project
- Parameters:
- id (integer, required)
- name (string, required)
- description (string, optional)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateProject",
"id": 1853996288,
"params": {
"id": 1,
"name": "PHP client update"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1853996288,
"result": true
}
removeProject
- Purpose: Remove a project
- Parameters: project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeProject",
"id": 46285125,
"params": {
"project_id": "2"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 46285125,
"result": true
}
enableProject
- Purpose: Enable a project
- Parameters:
- project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "enableProject",
"id": 1775494839,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1775494839,
"result": true
}
disableProject
- Purpose: Disable a project
- Parameters:
- project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "disableProject",
"id": 1734202312,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1734202312,
"result": true
}
enableProjectPublicAccess
- Purpose: Enable public access for a given project
- Parameters:
- project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "enableProjectPublicAccess",
"id": 103792571,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 103792571,
"result": true
}
disableProjectPublicAccess
- Purpose: Disable public access for a given project
- Parameters:
- project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "disableProjectPublicAccess",
"id": 942472945,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 942472945,
"result": true
}
getProjectActivity
- Purpose: Get activity stream for a project
- Parameters:
- project_id (integer, required)
- Result on success: List of events
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getProjectActivity",
"id": 942472945,
"params": [
"project_id": 1
]
}
getProjectActivities
- Purpose: Get Activityfeed for Project(s)
- Parameters:
- project_ids (integer array, required)
- Result on success: List of events
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getProjectActivities",
"id": 942472945,
"params": [
"project_ids": [1,2]
]
}
getMembers
- Purpose: Get members of a project
- Parameters:
- project_id (integer, required)
- Result on success: Key/value pair of user_id and username
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getMembers",
"id": 1944388643,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1944388643,
"result": {
"1": "user1",
"2": "user2",
"3": "user3"
}
}
revokeUser
- Purpose: Revoke user access for a given project
- Parameters:
- project_id (integer, required)
- user_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "revokeUser",
"id": 251218350,
"params": [
1,
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 251218350,
"result": true
}
allowUser
- Purpose: Grant user access for a given project
- Parameters:
- project_id (integer, required)
- user_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "allowUser",
"id": 2111451404,
"params": [
1,
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 2111451404,
"result": true
}
getBoard
- Purpose: Get all necessary information to display a board
- Parameters:
- project_id (integer, required)
- Result on success: board properties
- Result on failure: empty list
Request example:
{
"jsonrpc": "2.0",
"method": "getBoard",
"id": 827046470,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 827046470,
"result": [
{
"id": 0,
"name": "Default swimlane",
"columns": [
{
"id": "1",
"title": "Backlog",
"position": "1",
"project_id": "1",
"task_limit": "0",
"description": "",
"tasks": [],
"nb_tasks": 0,
"score": 0
},
{
"id": "2",
"title": "Ready",
"position": "2",
"project_id": "1",
"task_limit": "0",
"description": "",
"tasks": [
{
"nb_comments":"0",
"nb_files":"0",
"nb_subtasks":"0",
"nb_completed_subtasks":"0",
"nb_links":"0",
"id":"2",
"reference":"",
"title":"Test",
"description":"",
"date_creation":"1430870507",
"date_modification":"1430870507",
"date_completed":null,
"date_due":"0",
"color_id":"yellow",
"project_id":"1",
"column_id":"2",
"swimlane_id":"0",
"owner_id":"0",
"creator_id":"1",
"position":"1",
"is_active":"1",
"score":"0",
"category_id":"0",
"date_moved":"1430870507",
"recurrence_status":"0",
"recurrence_trigger":"0",
"recurrence_factor":"0",
"recurrence_timeframe":"0",
"recurrence_basedate":"0",
"recurrence_parent":null,
"recurrence_child":null,
"assignee_username":null,
"assignee_name":null
}
],
"nb_tasks": 1,
"score": 0
},
{
"id": "3",
"title": "Work in progress",
"position": "3",
"project_id": "1",
"task_limit": "0",
"description": "",
"tasks": [
{
"nb_comments":"0",
"nb_files":"0",
"nb_subtasks":"1",
"nb_completed_subtasks":"0",
"nb_links":"0",
"id":"1",
"reference":"",
"title":"Task with comment",
"description":"",
"date_creation":"1430783188",
"date_modification":"1430783188",
"date_completed":null,
"date_due":"0",
"color_id":"red",
"project_id":"1",
"column_id":"3",
"swimlane_id":"0",
"owner_id":"1",
"creator_id":"0",
"position":"1",
"is_active":"1",
"score":"0",
"category_id":"0",
"date_moved":"1430783191",
"recurrence_status":"0",
"recurrence_trigger":"0",
"recurrence_factor":"0",
"recurrence_timeframe":"0",
"recurrence_basedate":"0",
"recurrence_parent":null,
"recurrence_child":null,
"assignee_username":"admin",
"assignee_name":null
}
],
"nb_tasks": 1,
"score": 0
},
{
"id": "4",
"title": "Done",
"position": "4",
"project_id": "1",
"task_limit": "0",
"description": "",
"tasks": [],
"nb_tasks": 0,
"score": 0
}
],
"nb_columns": 4,
"nb_tasks": 2
}
]
}
getColumns
- Purpose: Get all columns information for a given project
- Parameters:
- project_id (integer, required)
- Result on success: columns properties
- Result on failure: empty list
Request example:
{
"jsonrpc": "2.0",
"method": "getColumns",
"id": 887036325,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 887036325,
"result": [
{
"id": "1",
"title": "Backlog",
"position": "1",
"project_id": "1",
"task_limit": "0"
},
{
"id": "2",
"title": "Ready",
"position": "2",
"project_id": "1",
"task_limit": "0"
},
{
"id": "3",
"title": "Work in progress",
"position": "3",
"project_id": "1",
"task_limit": "0"
}
]
}
getColumn
- Purpose: Get a single column
- Parameters:
- column_id (integer, required)
- Result on success: column properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getColumn",
"id": 1242049935,
"params": [
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1242049935,
"result": {
"id": "2",
"title": "Youpi",
"position": "2",
"project_id": "1",
"task_limit": "5"
}
}
moveColumnUp
- Purpose: Move up the column position
- Parameters:
- project_id (integer, required)
- column_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "moveColumnUp",
"id": 99275573,
"params": [
1,
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 99275573,
"result": true
}
moveColumnDown
- Purpose: Move down the column position
- Parameters:
- project_id (integer, required)
- column_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "moveColumnDown",
"id": 957090649,
"params": {
"project_id": 1,
"column_id": 2
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 957090649,
"result": true
}
updateColumn
- Purpose: Update column properties
- Parameters:
- column_id (integer, required)
- title (string, required)
- task_limit (integer, optional)
- description (string, optional)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateColumn",
"id": 480740641,
"params": [
2,
"Boo",
5
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 480740641,
"result": true
}
addColumn
- Purpose: Add a new column
- Parameters:
- project_id (integer, required)
- title (string, required)
- task_limit (integer, optional)
- description (string, optional)
- Result on success: column_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "addColumn",
"id": 638544704,
"params": [
1,
"Boo"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 638544704,
"result": 5
}
removeColumn
- Purpose: Remove a column
- Parameters:
- column_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeColumn",
"id": 1433237746,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": true
}
getDefaultSwimlane
- Purpose: Get the default swimlane for a project
- Parameters:
- project_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getDefaultSwimlane",
"id": 898774713,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 898774713,
"result": {
"id": "1",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1"
}
}
getActiveSwimlanes
- Purpose: Get the list of enabled swimlanes of a project (include default swimlane if enabled)
- Parameters:
- project_id (integer, required)
- Result on success: List of swimlanes
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getActiveSwimlanes",
"id": 934789422,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 934789422,
"result": [
{
"id": 0,
"name": "Default swimlane"
},
{
"id": "2",
"name": "Swimlane A"
}
]
}
getAllSwimlanes
- Purpose: Get the list of all swimlanes of a project (enabled or disabled) and sorted by position
- Parameters:
- project_id (integer, required)
- Result on success: List of swimlanes
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getAllSwimlanes",
"id": 509791576,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 509791576,
"result": [
{
"id": "1",
"name": "Another swimlane",
"position": "1",
"is_active": "1",
"project_id": "1"
},
{
"id": "2",
"name": "Swimlane A",
"position": "2",
"is_active": "1",
"project_id": "1"
}
]
}
getSwimlane
- Purpose: Get the a swimlane by id
- Parameters:
- swimlane_id (integer, required)
- Result on success: swimlane properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getSwimlane",
"id": 131071870,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 131071870,
"result": {
"id": "1",
"name": "Swimlane 1",
"position": "1",
"is_active": "1",
"project_id": "1"
}
}
getSwimlaneById
- Purpose: Get the a swimlane by id
- Parameters:
- swimlane_id (integer, required)
- Result on success: swimlane properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getSwimlaneById",
"id": 131071870,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 131071870,
"result": {
"id": "1",
"name": "Swimlane 1",
"position": "1",
"is_active": "1",
"project_id": "1"
}
}
getSwimlaneByName
- Purpose: Get the a swimlane by name
- Parameters:
- project_id (integer, required)
- name (string, required)
- Result on success: swimlane properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getSwimlaneByName",
"id": 824623567,
"params": [
1,
"Swimlane 1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 824623567,
"result": {
"id": "1",
"name": "Swimlane 1",
"position": "1",
"is_active": "1",
"project_id": "1"
}
}
moveSwimlaneUp
- Purpose: Move up the swimlane position
- Parameters:
- project_id (integer, required)
- swimlane_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "moveSwimlaneUp",
"id": 99275573,
"params": [
1,
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 99275573,
"result": true
}
moveSwimlaneDown
- Purpose: Move down the swimlane position
- Parameters:
- project_id (integer, required)
- swimlane_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "moveSwimlaneDown",
"id": 957090649,
"params": {
"project_id": 1,
"swimlane_id": 2
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 957090649,
"result": true
}
updateSwimlane
- Purpose: Update swimlane properties
- Parameters:
- swimlane_id (integer, required)
- name (string, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateSwimlane",
"id": 87102426,
"params": [
"1",
"Another swimlane"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 87102426,
"result": true
}
addSwimlane
- Purpose: Add a new swimlane
- Parameters:
- project_id (integer, required)
- name (string, required)
- Result on success: swimlane_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "addSwimlane",
"id": 849940086,
"params": [
1,
"Swimlane 1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 849940086,
"result": 1
}
removeSwimlane
- Purpose: Remove a swimlane
- Parameters:
- project_id (integer, required)
- swimlane_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeSwimlane",
"id": 1433237746,
"params": [
2,
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": true
}
disableSwimlane
- Purpose: Enable a swimlane
- Parameters:
- project_id (integer, required)
- swimlane_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "disableSwimlane",
"id": 1433237746,
"params": [
2,
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": true
}
enableSwimlane
- Purpose: Enable a swimlane
- Parameters:
- project_id (integer, required)
- swimlane_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "enableSwimlane",
"id": 1433237746,
"params": [
2,
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": true
}
getAvailableActions
- Purpose: Get list of available automatic actions
- Parameters: none
- Result on success: list of actions
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAvailableActions",
"id": 1217735483
}
Response example:
{
"jsonrpc": "2.0",
"id": 1217735483,
"result": {
"TaskLogMoveAnotherColumn": "Add a comment logging moving the task between columns",
"TaskAssignColorUser": "Assign a color to a specific user",
"TaskAssignColorColumn": "Assign a color when the task is moved to a specific column",
"TaskAssignCategoryColor": "Assign automatically a category based on a color",
"TaskAssignColorCategory": "Assign automatically a color based on a category",
"TaskAssignSpecificUser": "Assign the task to a specific user",
"TaskAssignCurrentUser": "Assign the task to the person who does the action",
"TaskUpdateStartDate": "Automatically update the start date",
"TaskAssignUser": "Change the assignee based on an external username",
"TaskAssignCategoryLabel": "Change the category based on an external label",
"TaskClose": "Close a task",
"CommentCreation": "Create a comment from an external provider",
"TaskCreation": "Create a task from an external provider",
"TaskDuplicateAnotherProject": "Duplicate the task to another project",
"TaskMoveColumnAssigned": "Move the task to another column when assigned to a user",
"TaskMoveColumnUnAssigned": "Move the task to another column when assignee is cleared",
"TaskMoveAnotherProject": "Move the task to another project",
"TaskOpen": "Open a task"
}
}
getAvailableActionEvents
- Purpose: Get list of available events for actions
- Parameters: none
- Result on success: list of events
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAvailableActionEvents",
"id": 2116665643
}
Response example:
{
"jsonrpc": "2.0",
"id": 2116665643,
"result": {
"bitbucket.webhook.commit": "Bitbucket commit received",
"task.close": "Closing a task",
"github.webhook.commit": "Github commit received",
"github.webhook.issue.assignee": "Github issue assignee change",
"github.webhook.issue.closed": "Github issue closed",
"github.webhook.issue.commented": "Github issue comment created",
"github.webhook.issue.label": "Github issue label change",
"github.webhook.issue.opened": "Github issue opened",
"github.webhook.issue.reopened": "Github issue reopened",
"gitlab.webhook.commit": "Gitlab commit received",
"gitlab.webhook.issue.closed": "Gitlab issue closed",
"gitlab.webhook.issue.opened": "Gitlab issue opened",
"task.move.column": "Move a task to another column",
"task.open": "Open a closed task",
"task.assignee_change": "Task assignee change",
"task.create": "Task creation",
"task.create_update": "Task creation or modification",
"task.update": "Task modification"
}
}
getCompatibleActionEvents
- Purpose: Get list of events compatible with an action
- Parameters:
- action_name (string, required)
- Result on success: list of events
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getCompatibleActionEvents",
"id": 899370297,
"params": [
"TaskClose"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 899370297,
"result": {
"bitbucket.webhook.commit": "Bitbucket commit received",
"github.webhook.commit": "Github commit received",
"github.webhook.issue.closed": "Github issue closed",
"gitlab.webhook.commit": "Gitlab commit received",
"gitlab.webhook.issue.closed": "Gitlab issue closed",
"task.move.column": "Move a task to another column"
}
}
getActions
- Purpose: Get list of actions for a project
- Parameters:
- project_id (integer, required)
- Result on success: list of actions properties
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getActions",
"id": 1433237746,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": [
{
"id" : "13",
"project_id" : "2",
"event_name" : "task.move.column",
"action_name" : "TaskAssignSpecificUser",
"params" : {
"column_id" : "5",
"user_id" : "1"
}
}
]
}
createAction
- Purpose: Create an action
- Parameters:
- project_id (integer, required)
- event_name (string, required)
- action_name (string, required)
- params (key/value parameters, required)
- Result on success: action_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createAction",
"id": 1433237746,
"params": {
"project_id" : "2",
"event_name" : "task.move.column",
"action_name" : "TaskAssignSpecificUser",
"params" : {
"column_id" : "3",
"user_id" : "2"
}
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1433237746,
"result": 14
}
removeAction
- Purpose: Remove an action
- Parameters:
- action_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeAction",
"id": 1510741671,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1510741671,
"result": true
}
createTask
- Purpose: Create a new task
- Parameters:
- title (string, required)
- project_id (integer, required)
- color_id (string, optional)
- column_id (integer, optional)
- owner_id (integer, optional)
- creator_id (integer, optional)
- date_due: ISO8601 format (string, optional)
- description Markdown content (string, optional)
- category_id (integer, optional)
- score (integer, optional)
- swimlane_id (integer, optional)
- recurrence_status (integer, optional)
- recurrence_trigger (integer, optional)
- recurrence_factor (integer, optional)
- recurrence_timeframe (integer, optional)
- recurrence_basedate (integer, optional)
- Result on success: task_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createTask",
"id": 1176509098,
"params": {
"owner_id": 1,
"creator_id": 0,
"date_due": "",
"description": "",
"category_id": 0,
"score": 0,
"title": "Test",
"project_id": 1,
"color_id": "green",
"column_id": 2,
"recurrence_status": 0,
"recurrence_trigger": 0,
"recurrence_factor": 0,
"recurrence_timeframe": 0,
"recurrence_basedate": 0
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1176509098,
"result": 3
}
getTask
- Purpose: Get task by the unique id
- Parameters:
- task_id (integer, required)
- Result on success: task properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getTask",
"id": 700738119,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 700738119,
"result": {
"id": "1",
"title": "Task #1",
"description": "",
"date_creation": "1409963206",
"color_id": "blue",
"project_id": "1",
"column_id": "2",
"owner_id": "1",
"position": "1",
"is_active": "1",
"date_completed": null,
"score": "0",
"date_due": "0",
"category_id": "0",
"creator_id": "0",
"date_modification": "1409963206",
"reference": "",
"date_started": null,
"time_spent": "0",
"time_estimated": "0",
"swimlane_id": "0",
"date_moved": "1430875287",
"recurrence_status": "0",
"recurrence_trigger": "0",
"recurrence_factor": "0",
"recurrence_timeframe": "0",
"recurrence_basedate": "0",
"recurrence_parent": null,
"recurrence_child": null,
"url": "http:\/\/127.0.0.1:8000\/?controller=task&action=show&task_id=1&project_id=1",
"color": {
"name": "Yellow",
"background": "rgb(245, 247, 196)",
"border": "rgb(223, 227, 45)"
}
}
}
getTaskByReference
- Purpose: Get task by the external reference
- Parameters:
- project_id (integer, required)
- reference (string, required)
- Result on success: task properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getTaskByReference",
"id": 1992081213,
"params": {
"project_id": 1,
"reference": "TICKET-1234"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1992081213,
"result": {
"id": "5",
"title": "Task with external ticket number",
"description": "[Link to my ticket](http:\/\/my-ticketing-system\/1234)",
"date_creation": "1434227446",
"color_id": "yellow",
"project_id": "1",
"column_id": "1",
"owner_id": "0",
"position": "4",
"is_active": "1",
"date_completed": null,
"score": "0",
"date_due": "0",
"category_id": "0",
"creator_id": "0",
"date_modification": "1434227446",
"reference": "TICKET-1234",
"date_started": null,
"time_spent": "0",
"time_estimated": "0",
"swimlane_id": "0",
"date_moved": "1434227446",
"recurrence_status": "0",
"recurrence_trigger": "0",
"recurrence_factor": "0",
"recurrence_timeframe": "0",
"recurrence_basedate": "0",
"recurrence_parent": null,
"recurrence_child": null,
"url": "http:\/\/127.0.0.1:8000\/?controller=task&action=show&task_id=5&project_id=1"
}
}
getAllTasks
- Purpose: Get all available tasks
- Parameters:
- project_id (integer, required)
- status_id: The value 1 for active tasks and 0 for inactive (integer, required)
- Result on success: List of tasks
- Result on failure: false
Request example to fetch all tasks on the board:
{
"jsonrpc": "2.0",
"method": "getAllTasks",
"id": 133280317,
"params": {
"project_id": 1,
"status_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 133280317,
"result": [
{
"id": "1",
"title": "Task #1",
"description": "",
"date_creation": "1409961789",
"color_id": "blue",
"project_id": "1",
"column_id": "2",
"owner_id": "1",
"position": "1",
"is_active": "1",
"date_completed": null,
"score": "0",
"date_due": "0",
"category_id": "0",
"creator_id": "0",
"date_modification": "1409961789",
"reference": "",
"date_started": null,
"time_spent": "0",
"time_estimated": "0",
"swimlane_id": "0",
"date_moved": "1430783191",
"recurrence_status": "0",
"recurrence_trigger": "0",
"recurrence_factor": "0",
"recurrence_timeframe": "0",
"recurrence_basedate": "0",
"recurrence_parent": null,
"recurrence_child": null,
"url": "http:\/\/127.0.0.1:8000\/?controller=task&action=show&task_id=1&project_id=1"
},
{
"id": "2",
"title": "Test",
"description": "",
"date_creation": "1409962115",
"color_id": "green",
"project_id": "1",
"column_id": "2",
"owner_id": "1",
"position": "2",
"is_active": "1",
"date_completed": null,
"score": "0",
"date_due": "0",
"category_id": "0",
"creator_id": "0",
"date_modification": "1409962115",
"reference": "",
"date_started": null,
"time_spent": "0",
"time_estimated": "0",
"swimlane_id": "0",
"date_moved": "1430783191",
"recurrence_status": "0",
"recurrence_trigger": "0",
"recurrence_factor": "0",
"recurrence_timeframe": "0",
"recurrence_basedate": "0",
"recurrence_parent": null,
"recurrence_child": null,
"url": "http:\/\/127.0.0.1:8000\/?controller=task&action=show&task_id=2&project_id=1"
},
...
]
}
getOverdueTasks
- Purpose: Get all overdue tasks
- Result on success: List of tasks
- Result on failure: false
Request example to fetch all tasks on the board:
{
"jsonrpc": "2.0",
"method": "getOverdueTasks",
"id": 133280317
}
Response example:
{
"jsonrpc": "2.0",
"id": 133280317,
"result": [
{
"id": "1",
"title": "Task #1",
"date_due": "1409961789",
"project_id": "1",
"project_name": "Test",
"assignee_username":"admin",
"assignee_name": null
},
{
"id": "2",
"title": "Test",
"date_due": "1409962115",
"project_id": "1",
"project_name": "Test",
"assignee_username":"admin",
"assignee_name": null
},
...
]
}
updateTask
- Purpose: Update a task
- Parameters:
- id (integer, required)
- title (string, optional)
- project_id (integer, optional)
- color_id (string, optional)
- owner_id (integer, optional)
- creator_id (integer, optional)
- date_due: ISO8601 format (string, optional)
- description Markdown content (string, optional)
- category_id (integer, optional)
- score (integer, optional)
- recurrence_status (integer, optional)
- recurrence_trigger (integer, optional)
- recurrence_factor (integer, optional)
- recurrence_timeframe (integer, optional)
- recurrence_basedate (integer, optional)
- Result on success: true
- Result on failure: false
Request example to change the task color:
{
"jsonrpc": "2.0",
"method": "updateTask",
"id": 1406803059,
"params": {
"id": 1,
"color_id": "blue"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1406803059,
"result": true
}
openTask
- Purpose: Set a task to the status open
- Parameters:
- task_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "openTask",
"id": 1888531925,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1888531925,
"result": true
}
closeTask
- Purpose: Set a task to the status close
- Parameters:
- task_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "closeTask",
"id": 1654396960,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1654396960,
"result": true
}
removeTask
- Purpose: Remove a task
- Parameters:
- task_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeTask",
"id": 1423501287,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1423501287,
"result": true
}
moveTaskPosition
- Purpose: Move a task to another column or another position
- Parameters:
- project_id (integer, required)
- task_id (integer, required)
- column_id (integer, required)
- position (integer, required)
- swimlane_id (integer, optional, default=0)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "moveTaskPosition",
"id": 117211800,
"params": {
"project_id": 1,
"task_id": 1,
"column_id": 2,
"position": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 117211800,
"result": true
}
createUser
- Purpose: Create a new user
- Parameters:
- username Must be unique (string, required)
- password Must have at least 6 characters (string, required)
- name (string, optional)
- email (string, optional)
- is_admin Set the value 1 for admins or 0 for regular users (integer, optional)
- is_project_admin Set the value 1 for project admins or 0 for regular users (integer, optional)
- Result on success: user_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createUser",
"id": 1518863034,
"params": {
"username": "biloute",
"password": "123456"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1518863034,
"result": 22
}
createLdapUser
- Purpose: Create a new user authentified by LDAP
- Parameters:
- username (string, optional if email is set)
- email (string, optional if username is set)
- is_admin Set the value 1 for admins or 0 for regular users (integer, optional)
- is_project_admin Set the value 1 for project admins or 0 for regular users (integer, optional)
- Result on success: user_id
- Result on failure: false
The user will only be created if a matching is found on the LDAP server. Username or email (or both) must be provided.
Request example:
{
"jsonrpc": "2.0",
"method": "createLdapUser",
"id": 1518863034,
"params": {
"username": "biloute",
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1518863034,
"result": 22
}
getUser
- Purpose: Get user information
- Parameters:
- user_id (integer, required)
- Result on success: user properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getUser",
"id": 1769674781,
"params": {
"user_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1769674781,
"result": {
"id": "1",
"username": "biloute",
"password": "$2y$10$dRs6pPoBu935RpmsrhmbjevJH5MgZ7Kr9QrnVINwwyZ3.MOwqg.0m",
"is_admin": "0",
"is_ldap_user": "0",
"name": "",
"email": "",
"google_id": null,
"github_id": null,
"notifications_enabled": "0"
}
}
getAllUsers
- Purpose: Get all available users
- Parameters:
- none
- Result on success: List of users
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllUsers",
"id": 1438712131
}
Response example:
{
"jsonrpc": "2.0",
"id": 1438712131,
"result": [
{
"id": "1",
"username": "biloute",
"name": "",
"email": "",
"is_admin": "0",
"is_ldap_user": "0",
"notifications_enabled": "0",
"google_id": null,
"github_id": null
},
...
]
}
updateUser
- Purpose: Update a user
- Parameters:
- id (integer)
- username (string, optional)
- name (string, optional)
- email (string, optional)
- is_admin (integer, optional)
- is_project_admin Set the value 1 for project admins or 0 for regular users (integer, optional)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateUser",
"id": 322123657,
"params": {
"id": 1,
"is_admin": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 322123657,
"result": true
}
removeUser
- Purpose: Remove a user
- Parameters:
- user_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeUser",
"id": 2094191872,
"params": {
"user_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 2094191872,
"result": true
}
createCategory
- Purpose: Create a new category
- Parameters:
- project_id (integer, required)
- name (string, required, must be unique for the given project)
- Result on success: category_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createCategory",
"id": 541909890,
"params": {
"name": "Super category",
"project_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 541909890,
"result": 4
}
getCategory
- Purpose: Get category information
- Parameters:
- category_id (integer, required)
- Result on success: category properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getCategory",
"id": 203539163,
"params": {
"category_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 203539163,
"result": {
"id": "1",
"name": "Super category",
"project_id": "1"
}
}
getAllCategories
- Purpose: Get all available categories
- Parameters:
- project_id (integer, required)
- Result on success: List of categories
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllCategories",
"id": 1261777968,
"params": {
"project_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1261777968,
"result": [
{
"id": "1",
"name": "Super category",
"project_id": "1"
}
]
}
updateCategory
- Purpose: Update a category
- Parameters:
- id (integer, required)
- name (string, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateCategory",
"id": 570195391,
"params": {
"id": 1,
"name": "Renamed category"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 570195391,
"result": true
}
removeCategory
- Purpose: Remove a category
- Parameters:
- category_id (integer)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeCategory",
"id": 88225706,
"params": {
"category_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 88225706,
"result": true
}
createComment
- Purpose: Create a new comment
- Parameters:
- task_id (integer, required)
- user_id (integer, required)
- content Markdown content (string, required)
- Result on success: comment_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createComment",
"id": 1580417921,
"params": {
"task_id": 1,
"user_id": 1,
"content": "Comment #1"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1580417921,
"result": 11
}
getComment
- Purpose: Get comment information
- Parameters:
- comment_id (integer, required)
- Result on success: comment properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getComment",
"id": 867839500,
"params": {
"comment_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 867839500,
"result": {
"id": "1",
"task_id": "1",
"user_id": "1",
"date_creation": "1410881970",
"comment": "Comment #1",
"username": "admin",
"name": null
}
}
getAllComments
- Purpose: Get all available comments
- Parameters:
- task_id (integer, required)
- Result on success: List of comments
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllComments",
"id": 148484683,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 148484683,
"result": [
{
"id": "1",
"date_creation": "1410882272",
"task_id": "1",
"user_id": "1",
"comment": "Comment #1",
"username": "admin",
"name": null
},
...
]
}
updateComment
- Purpose: Update a comment
- Parameters:
- id (integer, required)
- content Markdown content (string, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateComment",
"id": 496470023,
"params": {
"id": 1,
"content": "Comment #1 updated"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1493368950,
"result": true
}
removeComment
- Purpose: Remove a comment
- Parameters:
- comment_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeComment",
"id": 328836871,
"params": {
"comment_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 328836871,
"result": true
}
createSubtask
- Purpose: Create a new subtask
- Parameters:
- task_id (integer, required)
- title (integer, required)
- user_id (int, optional)
- time_estimated (int, optional)
- time_spent (int, optional)
- status (int, optional)
- Result on success: subtask_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createSubtask",
"id": 2041554661,
"params": {
"task_id": 1,
"title": "Subtask #1"
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 2041554661,
"result": 45
}
getSubtask
- Purpose: Get subtask information
- Parameters:
- subtask_id (integer)
- Result on success: subtask properties
- Result on failure: null
Request example:
{
"jsonrpc": "2.0",
"method": "getSubtask",
"id": 133184525,
"params": {
"subtask_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 133184525,
"result": {
"id": "1",
"title": "Subtask #1",
"status": "0",
"time_estimated": "0",
"time_spent": "0",
"task_id": "1",
"user_id": "0"
}
}
getAllSubtasks
- Purpose: Get all available subtasks
- Parameters:
- task_id (integer, required)
- Result on success: List of subtasks
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllSubtasks",
"id": 2087700490,
"params": {
"task_id": 1
}
Response example:
{
"jsonrpc": "2.0",
"id": 2087700490,
"result": [
{
"id": "1",
"title": "Subtask #1",
"status": "0",
"time_estimated": "0",
"time_spent": "0",
"task_id": "1",
"user_id": "0",
"username": null,
"name": null,
"status_name": "Todo"
},
...
]
}
updateSubtask
- Purpose: Update a subtask
- Parameters:
- id (integer, required)
- task_id (integer, required)
- title (integer, optional)
- user_id (integer, optional)
- time_estimated (integer, optional)
- time_spent (integer, optional)
- status (integer, optional)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateSubtask",
"id": 191749979,
"params": {
"id": 1,
"task_id": 1,
"status": 1,
"time_spent": 5,
"user_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 191749979,
"result": true
}
removeSubtask
- Purpose: Remove a subtask
- Parameters:
- subtask_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeSubtask",
"id": 1382487306,
"params": {
"subtask_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1382487306,
"result": true
}
getAllLinks
- Purpose: Get the list of possible relations between tasks
- Parameters: none
- Result on success: List of links
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllLinks",
"id": 113057196
}
Response example:
{
"jsonrpc": "2.0",
"id": 113057196,
"result": [
{
"id": "1",
"label": "relates to",
"opposite_id": "0"
},
{
"id": "2",
"label": "blocks",
"opposite_id": "3"
},
{
"id": "3",
"label": "is blocked by",
"opposite_id": "2"
},
{
"id": "4",
"label": "duplicates",
"opposite_id": "5"
},
{
"id": "5",
"label": "is duplicated by",
"opposite_id": "4"
},
{
"id": "6",
"label": "is a child of",
"opposite_id": "7"
},
{
"id": "7",
"label": "is a parent of",
"opposite_id": "6"
},
{
"id": "8",
"label": "targets milestone",
"opposite_id": "9"
},
{
"id": "9",
"label": "is a milestone of",
"opposite_id": "8"
},
{
"id": "10",
"label": "fixes",
"opposite_id": "11"
},
{
"id": "11",
"label": "is fixed by",
"opposite_id": "10"
}
]
}
getOppositeLinkId
- Purpose: Get the opposite link id of a task link
- Parameters:
- link_id (integer, required)
- Result on success: link_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getOppositeLinkId",
"id": 407062448,
"params": [
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 407062448,
"result": "3"
}
getLinkByLabel
- Purpose: Get a link by label
- Parameters:
- label (integer, required)
- Result on success: link properties
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getLinkByLabel",
"id": 1796123316,
"params": [
"blocks"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1796123316,
"result": {
"id": "2",
"label": "blocks",
"opposite_id": "3"
}
}
getLinkById
- Purpose: Get a link by id
- Parameters:
- link_id (integer, required)
- Result on success: link properties
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getLinkById",
"id": 1190238402,
"params": [
4
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1190238402,
"result": {
"id": "4",
"label": "duplicates",
"opposite_id": "5"
}
}
createLink
- Purpose: Create a new task relation
- Parameters:
- label (integer, required)
- opposite_label (integer, optional)
- Result on success: link_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createLink",
"id": 1040237496,
"params": [
"foo",
"bar"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1040237496,
"result": 13
}
updateLink
- Purpose: Update a link
- Parameters:
- link_id (integer, required)
- opposite_link_id (integer, required)
- label (string, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateLink",
"id": 2110446926,
"params": [
"14",
"12",
"boo"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 2110446926,
"result": true
}
removeLink
- Purpose: Remove a link
- Parameters:
- link_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeLink",
"id": 2136522739,
"params": [
"14"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 2136522739,
"result": true
}
createTaskLink
- Purpose: Create a link between two tasks
- Parameters:
- task_id (integer, required)
- opposite_task_id (integer, required)
- link_id (integer, required)
- Result on success: task_link_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createTaskLink",
"id": 509742912,
"params": [
2,
3,
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 509742912,
"result": 1
}
updateTaskLink
- Purpose: Update task link
- Parameters:
- task_link_id (integer, required)
- task_id (integer, required)
- opposite_task_id (integer, required)
- link_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "updateTaskLink",
"id": 669037109,
"params": [
1,
2,
4,
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 669037109,
"result": true
}
getTaskLinkById
- Purpose: Get a task link
- Parameters:
- task_link_id (integer, required)
- Result on success: task link properties
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getTaskLinkById",
"id": 809885202,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 809885202,
"result": {
"id": "1",
"link_id": "1",
"task_id": "2",
"opposite_task_id": "3"
}
}
getAllTaskLinks
- Purpose: Get all links related to a task
- Parameters:
- task_id (integer, required)
- Result on success: list of task link
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllTaskLinks",
"id": 810848359,
"params": [
2
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 810848359,
"result": [
{
"id": "1",
"task_id": "3",
"label": "relates to",
"title": "B",
"is_active": "1",
"project_id": "1",
"task_time_spent": "0",
"task_time_estimated": "0",
"task_assignee_id": "0",
"task_assignee_username": null,
"task_assignee_name": null,
"column_title": "Backlog"
}
]
}
removeTaskLink
- Purpose: Remove a link between two tasks
- Parameters:
- task_link_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeTaskLink",
"id": 473028226,
"params": [
1
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 473028226,
"result": true
}
createFile
- Purpose: Create and upload a new task attachment
- Parameters:
- project_id (integer, required)
- task_id (integer, required)
- filename (integer, required)
- blob File content encoded in base64 (string, required)
- Result on success: file_id
- Result on failure: false
- Note: The maximum file size depends of your PHP configuration, this method should not be used to upload large files
Request example:
{
"jsonrpc": "2.0",
"method": "createFile",
"id": 94500810,
"params": [
1,
1,
"My file",
"cGxhaW4gdGV4dCBmaWxl"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 94500810,
"result": 1
}
getAllFiles
- Purpose: Get all files attached to task
- Parameters:
- task_id (integer, required)
- Result on success: list of files
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getAllFiles",
"id": 1880662820,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 1880662820,
"result": [
{
"id": "1",
"name": "My file",
"path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
"is_image": "0",
"task_id": "1",
"date": "1432509941",
"user_id": "0",
"size": "15",
"username": null,
"user_name": null
}
]
}
getFile
- Purpose: Get file information
- Parameters:
- file_id (integer, required)
- Result on success: file properties
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getFile",
"id": 318676852,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 318676852,
"result": {
"id": "1",
"name": "My file",
"path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
"is_image": "0",
"task_id": "1",
"date": "1432509941",
"user_id": "0",
"size": "15"
}
}
downloadFile
- Purpose: Download file contents (encoded in base64)
- Parameters:
- file_id (integer, required)
- Result on success: base64 encoded string
- Result on failure: empty string
Request example:
{
"jsonrpc": "2.0",
"method": "downloadFile",
"id": 235943344,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 235943344,
"result": "cGxhaW4gdGV4dCBmaWxl"
}
removeFile
- Purpose: Remove file
- Parameters:
- file_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeFile",
"id": 447036524,
"params": [
"1"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 447036524,
"result": true
}
removeAllFiles
- Purpose: Remove all files associated to a task
- Parameters:
- task_id (integer, required)
- Result on success: true
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "removeAllFiles",
"id": 593312993,
"params": {
"task_id": 1
}
}
Response example:
{
"jsonrpc": "2.0",
"id": 593312993,
"result": true
}
getMe
- Purpose: Get logged user session
- Parameters: None
- Result on success: user session data
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getMe",
"id": 1718627783
}
Response example:
{
"jsonrpc": "2.0",
"id": 1718627783,
"result": {
"id": 2,
"username": "user",
"is_admin": false,
"is_ldap_user": false,
"name": "",
"email": "",
"google_id": null,
"github_id": null,
"notifications_enabled": "0",
"timezone": null,
"language": null,
"disable_login_form": "0",
"twofactor_activated": false,
"twofactor_secret": null,
"token": "",
"notifications_filter": "4"
}
}
getMyDashboard
- Purpose: Get the dashboard of the logged user without pagination
- Parameters: None
- Result on success: Dashboard information
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getMyDashboard",
"id": 447898718
}
Response example:
{
"jsonrpc": "2.0",
"id": 1563664593,
"result": {
"projects": [
{
"id": "2",
"name": "my project",
"is_active": "1",
"token": "",
"last_modified": "1438205337",
"is_public": "0",
"is_private": "1",
"is_everybody_allowed": "0",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1",
"description": null,
"identifier": "",
"columns": [
{
"id": "5",
"title": "Backlog",
"position": "1",
"project_id": "2",
"task_limit": "0",
"description": "",
"nb_tasks": 0
},
{
"id": "6",
"title": "Ready",
"position": "2",
"project_id": "2",
"task_limit": "0",
"description": "",
"nb_tasks": 0
},
{
"id": "7",
"title": "Work in progress",
"position": "3",
"project_id": "2",
"task_limit": "0",
"description": "",
"nb_tasks": 0
},
{
"id": "8",
"title": "Done",
"position": "4",
"project_id": "2",
"task_limit": "0",
"description": "",
"nb_tasks": 0
}
],
"url": {
"board": "http:\/\/127.0.0.1:8000\/?controller=board&action=show&project_id=2",
"calendar": "http:\/\/127.0.0.1:8000\/?controller=calendar&action=show&project_id=2",
"list": "http:\/\/127.0.0.1:8000\/?controller=listing&action=show&project_id=2"
}
}
],
"tasks": [
{
"id": "1",
"title": "new title",
"date_due": "0",
"date_creation": "1438205336",
"project_id": "2",
"color_id": "yellow",
"time_spent": "0",
"time_estimated": "0",
"project_name": "my project",
"url": "http:\/\/127.0.0.1:8000\/?controller=task&action=show&task_id=1&project_id=2"
}
],
"subtasks": []
}
}
getMyActivityStream
- Purpose: Get the last 100 events for the logged user
- Parameters: None
- Result on success: List of events
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getMyActivityStream",
"id": 1132562181
}
Response example:
{
"jsonrpc": "2.0",
"id": 1132562181,
"result": [
{
"id": "1",
"date_creation": "1438205054",
"event_name": "task.create",
"creator_id": "2",
"project_id": "2",
"task_id": "1",
"author_username": "user",
"author_name": "",
"email": "",
"task": {
"id": "1",
"reference": "",
"title": "my user title",
"description": "",
"date_creation": "1438205054",
"date_completed": null,
"date_modification": "1438205054",
"date_due": "0",
"date_started": null,
"time_estimated": "0",
"time_spent": "0",
"color_id": "yellow",
"project_id": "2",
"column_id": "5",
"owner_id": "0",
"creator_id": "2",
"position": "1",
"is_active": "1",
"score": "0",
"category_id": "0",
"swimlane_id": "0",
"date_moved": "1438205054",
"recurrence_status": "0",
"recurrence_trigger": "0",
"recurrence_factor": "0",
"recurrence_timeframe": "0",
"recurrence_basedate": "0",
"recurrence_parent": null,
"recurrence_child": null,
"category_name": null,
"swimlane_name": null,
"project_name": "my project",
"default_swimlane": "Default swimlane",
"column_title": "Backlog",
"assignee_username": null,
"assignee_name": null,
"creator_username": "user",
"creator_name": ""
},
"changes": [],
"author": "user",
"event_title": "user created the task #1",
"event_content": "\n<p class=\"activity-title\">\n user created the task <a href=\"\/?controller=task&action=show&task_id=1&project_id=2\" class=\"\" title=\"\" >#1<\/a><\/p>\n<p class=\"activity-description\">\n <em>my user title<\/em>\n<\/p>"
}
]
}
createMyPrivateProject
- Purpose: Create a private project for the logged user
- Parameters:
- name (string, required)
- description (string, optional)
- Result on success: project_id
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "createMyPrivateProject",
"id": 1271580569,
"params": [
"my project"
]
}
Response example:
{
"jsonrpc": "2.0",
"id": 1271580569,
"result": 2
}
getMyProjectsList
- Purpose: Get projects of the connected user
- Parameters: None
- Result on success: dictionary of project_id => project_name
- Result on failure: false
Request example:
{
"jsonrpc": "2.0",
"method": "getMyProjectsList",
"id": 987834805
}
Response example:
{
"jsonrpc": "2.0",
"id": 987834805,
"result": {
"2": "my project"
}
}