Rewrite of the authentication and authorization system
This commit is contained in:
245
doc/api-action-procedures.markdown
Normal file
245
doc/api-action-procedures.markdown
Normal file
@@ -0,0 +1,245 @@
|
||||
API Automatic Actions Procedures
|
||||
================================
|
||||
|
||||
### getAvailableActions
|
||||
|
||||
- Purpose: **Get list of available automatic actions**
|
||||
- Parameters: none
|
||||
- Result on success: **list of actions**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAvailableActions",
|
||||
"id": 1217735483
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAvailableActionEvents",
|
||||
"id": 2116665643
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getCompatibleActionEvents",
|
||||
"id": 899370297,
|
||||
"params": [
|
||||
"TaskClose"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getActions",
|
||||
"id": 1433237746,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeAction",
|
||||
"id": 1510741671,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1510741671,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
231
doc/api-application-procedures.markdown
Normal file
231
doc/api-application-procedures.markdown
Normal file
@@ -0,0 +1,231 @@
|
||||
API Application Procedures
|
||||
==========================
|
||||
|
||||
### getVersion
|
||||
|
||||
- Purpose: **Get the application version**
|
||||
- Parameters: none
|
||||
- Result: **version** (Example: 1.0.12, master)
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getVersion",
|
||||
"id": 1661138292
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getTimezone",
|
||||
"id": 1661138292
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1661138292,
|
||||
"result": "Europe\/Paris"
|
||||
}
|
||||
```
|
||||
|
||||
### getDefaultTaskColors
|
||||
|
||||
- Purpose: **Get all default task colors**
|
||||
- Parameters: None
|
||||
- Result on success: **Color properties**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getDefaultTaskColors",
|
||||
"id": 2108929212
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getDefaultTaskColor",
|
||||
"id": 1144775215
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getColorList",
|
||||
"id": 1677051386
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
```
|
||||
66
doc/api-authentication.markdown
Normal file
66
doc/api-authentication.markdown
Normal file
@@ -0,0 +1,66 @@
|
||||
API 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](http://www.ietf.org/rfc/rfc2617.txt).
|
||||
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
|
||||
- getMyProjects
|
||||
- getTimezone
|
||||
- getVersion
|
||||
- getDefaultTaskColor
|
||||
- getDefaultTaskColors
|
||||
- getColorList
|
||||
- getProjectById
|
||||
- getTask
|
||||
- getTaskByReference
|
||||
- getAllTasks
|
||||
- openTask
|
||||
- closeTask
|
||||
- moveTaskPosition
|
||||
- createTask
|
||||
- updateTask
|
||||
- getBoard
|
||||
- getProjectActivity
|
||||
- getMyOverdueTasks
|
||||
|
||||
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:
|
||||
|
||||
1. Define your custom header in your `config.php`: `define('API_AUTHENTICATION_HEADER', 'X-API-Auth');`
|
||||
2. Encode the credentials in Base64, example with PHP `base64_encode('jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');`
|
||||
3. Test with curl:
|
||||
|
||||
```bash
|
||||
curl \
|
||||
-H 'X-API-Auth: anNvbnJwYzoxOWZmZDk3MDlkMDNjZTUwNjc1YzNhNDNkMWM0OWMxYWMyMDdmNGJjNDVmMDZjNWIyNzAxZmJkZjg5Mjk=' \
|
||||
-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
|
||||
http://localhost/kanboard/jsonrpc.php
|
||||
```
|
||||
416
doc/api-board-procedures.markdown
Normal file
416
doc/api-board-procedures.markdown
Normal file
@@ -0,0 +1,416 @@
|
||||
API Board Procedures
|
||||
====================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getBoard",
|
||||
"id": 827046470,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getColumns",
|
||||
"id": 887036325,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getColumn",
|
||||
"id": 1242049935,
|
||||
"params": [
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveColumnUp",
|
||||
"id": 99275573,
|
||||
"params": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveColumnDown",
|
||||
"id": 957090649,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"column_id": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateColumn",
|
||||
"id": 480740641,
|
||||
"params": [
|
||||
2,
|
||||
"Boo",
|
||||
5
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "addColumn",
|
||||
"id": 638544704,
|
||||
"params": [
|
||||
1,
|
||||
"Boo"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeColumn",
|
||||
"id": 1433237746,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1433237746,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
172
doc/api-category-procedures.markdown
Normal file
172
doc/api-category-procedures.markdown
Normal file
@@ -0,0 +1,172 @@
|
||||
API Category Procedures
|
||||
=======================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createCategory",
|
||||
"id": 541909890,
|
||||
"params": {
|
||||
"name": "Super category",
|
||||
"project_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getCategory",
|
||||
"id": 203539163,
|
||||
"params": {
|
||||
"category_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllCategories",
|
||||
"id": 1261777968,
|
||||
"params": {
|
||||
"project_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateCategory",
|
||||
"id": 570195391,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"name": "Renamed category"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeCategory",
|
||||
"id": 88225706,
|
||||
"params": {
|
||||
"category_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 88225706,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
182
doc/api-comment-procedures.markdown
Normal file
182
doc/api-comment-procedures.markdown
Normal file
@@ -0,0 +1,182 @@
|
||||
API Comment Procedures
|
||||
======================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createComment",
|
||||
"id": 1580417921,
|
||||
"params": {
|
||||
"task_id": 1,
|
||||
"user_id": 1,
|
||||
"content": "Comment #1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getComment",
|
||||
"id": 867839500,
|
||||
"params": {
|
||||
"comment_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllComments",
|
||||
"id": 148484683,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateComment",
|
||||
"id": 496470023,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"content": "Comment #1 updated"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeComment",
|
||||
"id": 328836871,
|
||||
"params": {
|
||||
"comment_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 328836871,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
184
doc/api-examples.markdown
Normal file
184
doc/api-examples.markdown
Normal file
@@ -0,0 +1,184 @@
|
||||
API Examples
|
||||
============
|
||||
|
||||
Example with cURL
|
||||
-----------------
|
||||
|
||||
From the command line:
|
||||
|
||||
```bash
|
||||
curl \
|
||||
-u "jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929" \
|
||||
-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
|
||||
http://localhost/kanboard/jsonrpc.php
|
||||
```
|
||||
|
||||
Response from the server:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```python
|
||||
#!/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:
|
||||
|
||||
```bash
|
||||
python jsonrpc.py
|
||||
Task created successfully!
|
||||
```
|
||||
|
||||
Example with a PHP client
|
||||
-------------------------
|
||||
|
||||
I wrote a simple [Json-RPC Client/Server library in PHP](https://github.com/fguillot/JsonRPC), here an example:
|
||||
|
||||
```php
|
||||
<?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:
|
||||
|
||||
```ruby
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
Example with Java
|
||||
-----------------
|
||||
|
||||
This is a basic example using Spring. For proper usage see [this link](http://spring.io/guides/gs/consuming-rest).
|
||||
|
||||
```java
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.Base64;
|
||||
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
public class ProjectService {
|
||||
|
||||
public void getAllProjects() throws UnsupportedEncodingException {
|
||||
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
String url = "http://localhost/kanboard/jsonrpc.php";
|
||||
String requestJson = "{\"jsonrpc\": \"2.0\", \"method\": \"getAllProjects\", \"id\": 1}";
|
||||
String user = "jsonrpc";
|
||||
String apiToken = "19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929";
|
||||
|
||||
// encode api token
|
||||
byte[] xApiAuthTokenBytes = String.join(":", user, apiToken).getBytes("utf-8");
|
||||
String xApiAuthToken = Base64.getEncoder().encodeToString(xApiAuthTokenBytes);
|
||||
|
||||
// consume request
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("X-API-Auth", xApiAuthToken);
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
|
||||
String answer = restTemplate.postForObject(url, entity, String.class);
|
||||
System.out.println(answer);
|
||||
}
|
||||
}
|
||||
```
|
||||
217
doc/api-file-procedures.markdown
Normal file
217
doc/api-file-procedures.markdown
Normal file
@@ -0,0 +1,217 @@
|
||||
API File Procedures
|
||||
===================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createFile",
|
||||
"id": 94500810,
|
||||
"params": [
|
||||
1,
|
||||
1,
|
||||
"My file",
|
||||
"cGxhaW4gdGV4dCBmaWxl"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllFiles",
|
||||
"id": 1880662820,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getFile",
|
||||
"id": 318676852,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "downloadFile",
|
||||
"id": 235943344,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeFile",
|
||||
"id": 447036524,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeAllFiles",
|
||||
"id": 593312993,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 593312993,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
File diff suppressed because it is too large
Load Diff
470
doc/api-link-procedures.markdown
Normal file
470
doc/api-link-procedures.markdown
Normal file
@@ -0,0 +1,470 @@
|
||||
API Link Procedures
|
||||
===================
|
||||
|
||||
### getAllLinks
|
||||
|
||||
- Purpose: **Get the list of possible relations between tasks**
|
||||
- Parameters: none
|
||||
- Result on success: **List of links**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllLinks",
|
||||
"id": 113057196
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getOppositeLinkId",
|
||||
"id": 407062448,
|
||||
"params": [
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getLinkByLabel",
|
||||
"id": 1796123316,
|
||||
"params": [
|
||||
"blocks"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getLinkById",
|
||||
"id": 1190238402,
|
||||
"params": [
|
||||
4
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createLink",
|
||||
"id": 1040237496,
|
||||
"params": [
|
||||
"foo",
|
||||
"bar"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateLink",
|
||||
"id": 2110446926,
|
||||
"params": [
|
||||
"14",
|
||||
"12",
|
||||
"boo"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeLink",
|
||||
"id": 2136522739,
|
||||
"params": [
|
||||
"14"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createTaskLink",
|
||||
"id": 509742912,
|
||||
"params": [
|
||||
2,
|
||||
3,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateTaskLink",
|
||||
"id": 669037109,
|
||||
"params": [
|
||||
1,
|
||||
2,
|
||||
4,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getTaskLinkById",
|
||||
"id": 809885202,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllTaskLinks",
|
||||
"id": 810848359,
|
||||
"params": [
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeTaskLink",
|
||||
"id": 473028226,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 473028226,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
385
doc/api-me-procedures.markdown
Normal file
385
doc/api-me-procedures.markdown
Normal file
@@ -0,0 +1,385 @@
|
||||
User API Specific Procedures
|
||||
============================
|
||||
|
||||
### getMe
|
||||
|
||||
- Purpose: **Get logged user session**
|
||||
- Parameters: None
|
||||
- Result on success: **user session data**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMe",
|
||||
"id": 1718627783
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1718627783,
|
||||
"result": {
|
||||
"id": 2,
|
||||
"username": "user",
|
||||
"role": "app-user",
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMyDashboard",
|
||||
"id": 447898718
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMyActivityStream",
|
||||
"id": 1132562181
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createMyPrivateProject",
|
||||
"id": 1271580569,
|
||||
"params": [
|
||||
"my project"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMyProjectsList",
|
||||
"id": 987834805
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 987834805,
|
||||
"result": {
|
||||
"2": "my project"
|
||||
}
|
||||
}
|
||||
```
|
||||
### getMyOverdueTasks
|
||||
|
||||
- Purpose: **Get my overdue tasks**
|
||||
- Result on success: **List of tasks**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example to fetch all tasks on the board:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMyOverdueTasks",
|
||||
"id": 133280317
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### getMyProjects
|
||||
|
||||
- Purpose: **Get projects of connected user with full details**
|
||||
- Parameters:
|
||||
- **none**
|
||||
- Result on success: **List of projects with details**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getmyProjects",
|
||||
"id": 2134420212
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
512
doc/api-project-procedures.markdown
Normal file
512
doc/api-project-procedures.markdown
Normal file
@@ -0,0 +1,512 @@
|
||||
API Project Procedures
|
||||
======================
|
||||
|
||||
### createProject
|
||||
|
||||
- Purpose: **Create a new project**
|
||||
- Parameters:
|
||||
- **name** (string, required)
|
||||
- **description** (string, optional)
|
||||
- Result on success: **project_id**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createProject",
|
||||
"id": 1797076613,
|
||||
"params": {
|
||||
"name": "PHP client"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getProjectById",
|
||||
"id": 226760253,
|
||||
"params": {
|
||||
"project_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getProjectByName",
|
||||
"id": 1620253806,
|
||||
"params": {
|
||||
"name": "Test"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllProjects",
|
||||
"id": 2134420212
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateProject",
|
||||
"id": 1853996288,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"name": "PHP client update"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeProject",
|
||||
"id": 46285125,
|
||||
"params": {
|
||||
"project_id": "2"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "enableProject",
|
||||
"id": 1775494839,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "disableProject",
|
||||
"id": 1734202312,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "enableProjectPublicAccess",
|
||||
"id": 103792571,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "disableProjectPublicAccess",
|
||||
"id": 942472945,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMembers",
|
||||
"id": 1944388643,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "revokeUser",
|
||||
"id": 251218350,
|
||||
"params": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "allowUser",
|
||||
"id": 2111451404,
|
||||
"params": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 2111451404,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
194
doc/api-subtask-procedures.markdown
Normal file
194
doc/api-subtask-procedures.markdown
Normal file
@@ -0,0 +1,194 @@
|
||||
API Subtask procedures
|
||||
======================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createSubtask",
|
||||
"id": 2041554661,
|
||||
"params": {
|
||||
"task_id": 1,
|
||||
"title": "Subtask #1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getSubtask",
|
||||
"id": 133184525,
|
||||
"params": {
|
||||
"subtask_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllSubtasks",
|
||||
"id": 2087700490,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateSubtask",
|
||||
"id": 191749979,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"task_id": 1,
|
||||
"status": 1,
|
||||
"time_spent": 5,
|
||||
"user_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeSubtask",
|
||||
"id": 1382487306,
|
||||
"params": {
|
||||
"subtask_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1382487306,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
469
doc/api-swimlane-procedures.markdown
Normal file
469
doc/api-swimlane-procedures.markdown
Normal file
@@ -0,0 +1,469 @@
|
||||
API Swimlane Procedures
|
||||
=======================
|
||||
|
||||
### getDefaultSwimlane
|
||||
|
||||
- Purpose: **Get the default swimlane for a project**
|
||||
- Parameters:
|
||||
- **project_id** (integer, required)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getDefaultSwimlane",
|
||||
"id": 898774713,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getActiveSwimlanes",
|
||||
"id": 934789422,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllSwimlanes",
|
||||
"id": 509791576,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getSwimlane",
|
||||
"id": 131071870,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getSwimlaneById",
|
||||
"id": 131071870,
|
||||
"params": [
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getSwimlaneByName",
|
||||
"id": 824623567,
|
||||
"params": [
|
||||
1,
|
||||
"Swimlane 1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveSwimlaneUp",
|
||||
"id": 99275573,
|
||||
"params": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveSwimlaneDown",
|
||||
"id": 957090649,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"swimlane_id": 2
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 957090649,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
### updateSwimlane
|
||||
|
||||
- Purpose: **Update swimlane properties**
|
||||
- Parameters:
|
||||
- **swimlane_id** (integer, required)
|
||||
- **name** (string, required)
|
||||
- **description** (string, optional)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateSwimlane",
|
||||
"id": 87102426,
|
||||
"params": [
|
||||
"1",
|
||||
"Another swimlane"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 87102426,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
### addSwimlane
|
||||
|
||||
- Purpose: **Add a new swimlane**
|
||||
- Parameters:
|
||||
- **project_id** (integer, required)
|
||||
- **name** (string, required)
|
||||
- **description** (string, optional)
|
||||
- Result on success: **swimlane_id**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "addSwimlane",
|
||||
"id": 849940086,
|
||||
"params": [
|
||||
1,
|
||||
"Swimlane 1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeSwimlane",
|
||||
"id": 1433237746,
|
||||
"params": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "disableSwimlane",
|
||||
"id": 1433237746,
|
||||
"params": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "enableSwimlane",
|
||||
"id": 1433237746,
|
||||
"params": [
|
||||
2,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1433237746,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
564
doc/api-task-procedures.markdown
Normal file
564
doc/api-task-procedures.markdown
Normal file
@@ -0,0 +1,564 @@
|
||||
API Task Procedures
|
||||
===================
|
||||
|
||||
### 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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getTask",
|
||||
"id": 700738119,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getTaskByReference",
|
||||
"id": 1992081213,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"reference": "TICKET-1234"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllTasks",
|
||||
"id": 133280317,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"status_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getOverdueTasks",
|
||||
"id": 133280317
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### getOverdueTasksByProject
|
||||
|
||||
- Purpose: **Get all overdue tasks for a special project**
|
||||
- Result on success: **List of tasks**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example to fetch all tasks on the board:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getOverdueTasksByProject",
|
||||
"id": 133280317,
|
||||
"params": {
|
||||
"project_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateTask",
|
||||
"id": 1406803059,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"color_id": "blue"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "openTask",
|
||||
"id": 1888531925,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "closeTask",
|
||||
"id": 1654396960,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeTask",
|
||||
"id": 1423501287,
|
||||
"params": {
|
||||
"task_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "moveTaskPosition",
|
||||
"id": 117211800,
|
||||
"params": {
|
||||
"project_id": 1,
|
||||
"task_id": 1,
|
||||
"column_id": 2,
|
||||
"position": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 117211800,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
222
doc/api-user-procedures.markdown
Normal file
222
doc/api-user-procedures.markdown
Normal file
@@ -0,0 +1,222 @@
|
||||
API User Procedures
|
||||
===================
|
||||
|
||||
### 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)
|
||||
- **role** (string, optional, example: app-admin, app-manager, app-user)
|
||||
- Result on success: **user_id**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createUser",
|
||||
"id": 1518863034,
|
||||
"params": {
|
||||
"username": "biloute",
|
||||
"password": "123456"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1518863034,
|
||||
"result": 22
|
||||
}
|
||||
```
|
||||
|
||||
### createLdapUser
|
||||
|
||||
- Purpose: **Create a new user authentified by LDAP**
|
||||
- Parameters:
|
||||
- **username** (string, required)
|
||||
- Result on success: **user_id**
|
||||
- Result on failure: **false**
|
||||
|
||||
The user will only be created if he is found on the LDAP server.
|
||||
This method works only with LDAP authentication configured in proxy or anonymous mode.
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "createLdapUser",
|
||||
"id": 1518863034,
|
||||
"params": {
|
||||
"username": "my_ldap_user",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getUser",
|
||||
"id": 1769674781,
|
||||
"params": {
|
||||
"user_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1769674781,
|
||||
"result": {
|
||||
"id": "1",
|
||||
"username": "biloute",
|
||||
"password": "$2y$10$dRs6pPoBu935RpmsrhmbjevJH5MgZ7Kr9QrnVINwwyZ3.MOwqg.0m",
|
||||
"role": "app-user",
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getAllUsers",
|
||||
"id": 1438712131
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1438712131,
|
||||
"result": [
|
||||
{
|
||||
"id": "1",
|
||||
"username": "biloute",
|
||||
"name": "",
|
||||
"email": "",
|
||||
"role": "app-user",
|
||||
"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)
|
||||
- **role** (string, optional, example: app-admin, app-manager, app-user)
|
||||
- Result on success: **true**
|
||||
- Result on failure: **false**
|
||||
|
||||
Request example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "updateUser",
|
||||
"id": 322123657,
|
||||
"params": {
|
||||
"id": 1,
|
||||
"role": "app-manager"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeUser",
|
||||
"id": 2094191872,
|
||||
"params": {
|
||||
"user_id": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Response example:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 2094191872,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user