1218 lines
34 KiB
Markdown
1218 lines
34 KiB
Markdown
|
|
The REST API provides access for authenticated users to their data inside the Deck app. To get a better understanding of Decks data models and their relations, please have a look at the [data structure](structure.md) documentation.
|
|
|
|
# Prequisited
|
|
|
|
- All requests require a `OCS-APIRequest` HTTP header to be set to `true` and a `Content-Type` of `application/json`.
|
|
- The API is located at https://nextcloud.local/index.php/apps/deck/api/v1.0
|
|
|
|
## Naming
|
|
|
|
- Board is the the project like grouping of tasks that can be shared to different users and groups
|
|
|
|
- Stack is the grouping of cards which is rendered in vertical columns in the UI
|
|
|
|
- Card is the representation of a single task
|
|
|
|
- Labels are defined on a board level and can be assigned to any number of cards
|
|
|
|
## Global responses
|
|
|
|
### 400 Bad request
|
|
|
|
In case the request is invalid, e.g. because a parameter is missing, a 400 error will be returned:
|
|
|
|
```json
|
|
{
|
|
"status": 400,
|
|
"message": "title must be provided"
|
|
}
|
|
```
|
|
|
|
### 403 Permission denied
|
|
|
|
In any case a user doesn't have access to a requested entity, a 403 error will be returned:
|
|
|
|
```json
|
|
{
|
|
"status": 403,
|
|
"message": "Permission denied"
|
|
}
|
|
```
|
|
|
|
## Headers
|
|
|
|
### If-Modified-Since
|
|
|
|
Some index endpoints support limiting the result set to entries that have been changed since the given time.
|
|
The supported date formats are:
|
|
|
|
* IMF-fixdate: `Sun, 03 Aug 2019 10:34:12 GMT`
|
|
* (obsolete) RFC 850: `Sunday, 03-Aug-19 10:34:12 GMT`
|
|
* (obsolete) ANSI C asctime(): `Sun Aug 3 10:34:12 2019`
|
|
|
|
It is highly recommended to only use the IMF-fixdate format.
|
|
|
|
Example curl request:
|
|
|
|
```bash
|
|
curl -u admin:admin -X GET \
|
|
'http://localhost:8000/index.php/apps/deck/api/v1.0/boards/2/stacks' \
|
|
-H "OCS-APIRequest: true" \
|
|
-H "If-Modified-Since: Mon, 05 Nov 2018 09:28:00 GMT"
|
|
```
|
|
|
|
# Changelog
|
|
|
|
## 1.0.0 (unreleased)
|
|
|
|
- The maximum length of the card title has been extended from 100 to 255 characters
|
|
- The API will now return a 400 Bad request response if the length limitation of a board, stack or card title is exceeded
|
|
|
|
# Endpoints
|
|
|
|
## Boards
|
|
|
|
### GET /boards - Get a list of boards
|
|
|
|
#### Headers
|
|
|
|
The board list endpoint supports setting an `If-Modified-Since` header to limit the results to entities that are changed after the provided time.
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| options | Bool | **Optional** Enhance boards with details about labels, stacks and users |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
Returns an array of board items
|
|
|
|
```json
|
|
[
|
|
{
|
|
"title": "Board title",
|
|
"owner": {
|
|
"primaryKey": "admin",
|
|
"uid": "admin",
|
|
"displayname": "Administrator"
|
|
},
|
|
"color": "ff0000",
|
|
"archived": false,
|
|
"labels": [],
|
|
"acl": [],
|
|
"permissions": {
|
|
"PERMISSION_READ": true,
|
|
"PERMISSION_EDIT": true,
|
|
"PERMISSION_MANAGE": true,
|
|
"PERMISSION_SHARE": true
|
|
},
|
|
"users": [],
|
|
"shared": 0,
|
|
"deletedAt": 0,
|
|
"id": 10,
|
|
"lastModified": 1586269585,
|
|
}
|
|
]
|
|
```
|
|
|
|
### POST /boards - Create a new board
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------ | ---------------------------------------------------- |
|
|
| title | String | The title of the new board, maximum length is limited to 100 characters |
|
|
| color | String | The hexadecimal color of the new board (e.g. FF0000) |
|
|
|
|
```json
|
|
{
|
|
"title": "Board title",
|
|
"color": "ff0000"
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
{
|
|
"title": "Board title",
|
|
"owner": {
|
|
"primaryKey": "admin",
|
|
"uid": "admin",
|
|
"displayname": "Administrator"
|
|
},
|
|
"color": "ff0000",
|
|
"archived": false,
|
|
"labels": [
|
|
{
|
|
"title": "Finished",
|
|
"color": "31CC7C",
|
|
"boardId": 10,
|
|
"cardId": null,
|
|
"id": 37
|
|
},
|
|
{
|
|
"title": "To review",
|
|
"color": "317CCC",
|
|
"boardId": 10,
|
|
"cardId": null,
|
|
"id": 38
|
|
},
|
|
{
|
|
"title": "Action needed",
|
|
"color": "FF7A66",
|
|
"boardId": 10,
|
|
"cardId": null,
|
|
"id": 39
|
|
},
|
|
{
|
|
"title": "Later",
|
|
"color": "F1DB50",
|
|
"boardId": 10,
|
|
"cardId": null,
|
|
"id": 40
|
|
}
|
|
],
|
|
"acl": [],
|
|
"permissions": {
|
|
"PERMISSION_READ": true,
|
|
"PERMISSION_EDIT": true,
|
|
"PERMISSION_MANAGE": true,
|
|
"PERMISSION_SHARE": true
|
|
},
|
|
"users": [],
|
|
"deletedAt": 0,
|
|
"id": 10,
|
|
"lastModified": 1586269585
|
|
}
|
|
```
|
|
|
|
### GET /boards/{boardId} - Get board details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
{
|
|
"title": "Board title",
|
|
"owner": {
|
|
"primaryKey": "admin",
|
|
"uid": "admin",
|
|
"displayname": "Administrator"
|
|
},
|
|
"color": "ff0000",
|
|
"archived": false,
|
|
"labels": [
|
|
{
|
|
"title": "Finished",
|
|
"color": "31CC7C",
|
|
"boardId": "10",
|
|
"cardId": null,
|
|
"id": 37
|
|
},
|
|
{
|
|
"title": "To review",
|
|
"color": "317CCC",
|
|
"boardId": "10",
|
|
"cardId": null,
|
|
"id": 38
|
|
},
|
|
{
|
|
"title": "Action needed",
|
|
"color": "FF7A66",
|
|
"boardId": "10",
|
|
"cardId": null,
|
|
"id": 39
|
|
},
|
|
{
|
|
"title": "Later",
|
|
"color": "F1DB50",
|
|
"boardId": "10",
|
|
"cardId": null,
|
|
"id": 40
|
|
}
|
|
],
|
|
"acl": [],
|
|
"permissions": {
|
|
"PERMISSION_READ": true,
|
|
"PERMISSION_EDIT": true,
|
|
"PERMISSION_MANAGE": true,
|
|
"PERMISSION_SHARE": true
|
|
},
|
|
"users": [
|
|
{
|
|
"primaryKey": "admin",
|
|
"uid": "admin",
|
|
"displayname": "Administrator"
|
|
}
|
|
],
|
|
"deletedAt": 0,
|
|
"id": 10
|
|
}
|
|
```
|
|
|
|
### PUT /boards/{boardId} - Update board details
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------ | ---------------------------------------------------- |
|
|
| title | String | The title of the board, maximum length is limited to 100 characters |
|
|
| color | String | The hexadecimal color of the board (e.g. FF0000) |
|
|
| archived | Bool | The hexadecimal color of the board (e.g. FF0000) |
|
|
|
|
```json
|
|
{
|
|
"title": "Board title",
|
|
"color": "ff0000",
|
|
"archived": false
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId} - Delete a board
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### POST /boards/{boardId}/undo_delete - Restore a deleted board
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### POST /boards/{boardId}/acl - Add new acl rule
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------ | ---------------------------------------------------- |
|
|
| type | Integer | Type of the participant |
|
|
| participant | String | The uid of the participant |
|
|
| permissionEdit | Bool | Setting if the participant has edit permissions |
|
|
| permissionShare | Bool | Setting if the participant has sharing permissions |
|
|
| permissionManage | Bool | Setting if the participant has management permissions |
|
|
|
|
##### Supported participant types:
|
|
- 0 User
|
|
- 1 Group
|
|
- 7 Circle
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
[{
|
|
"participant": {
|
|
"primaryKey": "userid",
|
|
"uid": "userid",
|
|
"displayname": "User Name"
|
|
},
|
|
"type": 0,
|
|
"boardId": 1,
|
|
"permissionEdit": true,
|
|
"permissionShare": false,
|
|
"permissionManage": true,
|
|
"owner": false,
|
|
"id": 1
|
|
}]
|
|
```
|
|
|
|
### PUT /boards/{boardId}/acl/{aclId} - Update an acl rule
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------ | ---------------------------------------------------- |
|
|
| permissionEdit | Bool | Setting if the participant has edit permissions |
|
|
| permissionShare | Bool | Setting if the participant has sharing permissions |
|
|
| permissionManage | Bool | Setting if the participant has management permissions |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId}/acl/{aclId} - Delete an acl rule
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
## Stacks
|
|
|
|
### GET /boards/{boardId}/stacks - Get stacks
|
|
|
|
#### Headers
|
|
|
|
The board list endpoint supports setting an `If-Modified-Since` header to limit the results to entities that are changed after the provided time.
|
|
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
```json
|
|
[
|
|
{
|
|
"title": "ToDo",
|
|
"boardId": 2,
|
|
"deletedAt": 0,
|
|
"lastModified": 1541426139,
|
|
"cards": [...],
|
|
"order": 999,
|
|
"id": 4
|
|
}
|
|
]
|
|
```
|
|
|
|
##### 200 Success
|
|
|
|
### GET /boards/{boardId}/stacks/archived - Get list of archived stacks
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
```json
|
|
[
|
|
{
|
|
"title": "ToDo",
|
|
"boardId": 2,
|
|
"deletedAt": 0,
|
|
"lastModified": 1541426139,
|
|
"cards": [...],
|
|
"order": 999,
|
|
"id": 4
|
|
}
|
|
]
|
|
```
|
|
|
|
##### 200 Success
|
|
|
|
### GET /boards/{boardId}/stacks/{stackId} - Get stack details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the stack belongs to |
|
|
| stackId | Integer | The id of the stack |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### POST /boards/{boardId}/stacks - Create a new stack
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------------------- |
|
|
| title | String | The title of the new stack, maximum length is limited to 100 characters |
|
|
| order | Integer | Order for sorting the stacks |
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------- |
|
|
| boardId | Integer | The id of the board to fetch |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId} - Update stack details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the stack belongs to |
|
|
| stackId | Integer | The id of the stack |
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------------------- |
|
|
| title | String | The title of the stack, maximum length is limited to 100 characters |
|
|
| order | Integer | Order for sorting the stacks |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId}/stacks/{stackId} - Delete a stack
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the stack belongs to |
|
|
| stackId | Integer | The id of the stack |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
## Cards
|
|
|
|
### GET /boards/{boardId}/stacks/{stackId}/cards/{cardId} - Get card details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### POST /boards/{boardId}/stacks/{stackId}/cards - Create a new card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
|
|
#### Request body
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------------------- |
|
|
| title | String | The title of the card, maximum length is limited to 255 characters |
|
|
| type | String | Type of the card (for later use) use 'plain' for now |
|
|
| order | Integer | Order for sorting the stacks |
|
|
| description | String | _(optional)_ The markdown description of the card |
|
|
| duedate | timestamp | _(optional)_ The duedate of the card or null |
|
|
|
|
#### Response
|
|
|
|
```json
|
|
{
|
|
"title":"Test",
|
|
"description":null,
|
|
"stackId":6,
|
|
"type":"plain",
|
|
"lastModified":1541528026,
|
|
"createdAt":1541528026,
|
|
"labels":null,
|
|
"assignedUsers":null,
|
|
"attachments":null,
|
|
"attachmentCount":null,
|
|
"owner":"admin",
|
|
"order":999,
|
|
"archived":false,
|
|
"duedate":null,
|
|
"deletedAt":0,
|
|
"commentsUnread":0,
|
|
"id":10,
|
|
"overdue":0
|
|
}
|
|
```
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId} - Update card details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
|-------------|-----------|------------------------------------------------------|
|
|
| title | String | The title of the card, maximum length is limited to 255 characters |
|
|
| description | String | The markdown description of the card |
|
|
| type | String | Type of the card (for later use) use 'plain' for now |
|
|
| order | Integer | Order for sorting the stacks |
|
|
| duedate | timestamp | The duedate of the card or null |
|
|
|
|
|
|
```
|
|
{
|
|
"title": "Test card",
|
|
"description": "A card description",
|
|
"type": "plain",
|
|
"order": 999,
|
|
"duedate": null,
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId}/stacks/{stackId}/cards/{cardId} - Delete a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/assignLabel - Assign a label to a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| labelId | Integer | The label id to assign to the card |
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/removeLabel - Remove a label to a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| labelId | Integer | The label id to remove to the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/assignUser - Assign a user to a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| userId | String | The user id to assign to the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
{
|
|
"id": 3,
|
|
"participant": {
|
|
"primaryKey": "admin",
|
|
"uid": "admin",
|
|
"displayname": "admin"
|
|
},
|
|
"cardId": 1
|
|
}
|
|
```
|
|
|
|
##### 400 Bad request
|
|
|
|
```json
|
|
{
|
|
"status": 400,
|
|
"message": "The user is already assigned to the card"
|
|
}
|
|
```
|
|
|
|
The request can fail with a bad request response for the following reasons:
|
|
- Missing or wrongly formatted request parameters
|
|
- The user is already assigned to the card
|
|
- The user is not part of the board
|
|
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/unassignUser - Unassign a user from a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| userId | String | The user id to unassign from the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/reorder - Change the sorting order of a card
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ----------------------------------------------------------- |
|
|
| order | Integer | The position in the stack where the card should be moved to |
|
|
| stackId | Integer | The id of the stack where the card should be moved to |
|
|
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
## Labels
|
|
|
|
### GET /boards/{boardId}/labels/{labelId} - Get label details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the label belongs to |
|
|
| labelId | Integer | The id of the label |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
{
|
|
"title": "Abgeschlossen",
|
|
"color": "31CC7C",
|
|
"boardId": "2",
|
|
"cardId": null,
|
|
"id": 5
|
|
}
|
|
```
|
|
|
|
### POST /boards/{boardId}/labels - Create a new label
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the label belongs to |
|
|
|
|
#### Request data
|
|
|
|
```json
|
|
{
|
|
"title": "Finished",
|
|
"color": "31CC7C"
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/labels/{labelId} - Update label details
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the label belongs to |
|
|
| labelId | Integer | The id of the label |
|
|
|
|
|
|
#### Request data
|
|
|
|
```json
|
|
{
|
|
"title": "Finished",
|
|
"color": "31CC7C"
|
|
}
|
|
```
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId}/labels/{labelId} - Delete a label
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | ---------------------------------------- |
|
|
| boardId | Integer | The id of the board the label belongs to |
|
|
| labelId | Integer | The id of the label |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
## Attachments
|
|
|
|
### GET /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments - Get a list of attachments
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| boardId | Integer | The id of the board the card belongs to |
|
|
| stackId | Integer | The id of the stack the card belongs to |
|
|
| cardId | Integer | The id of the card |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
```json
|
|
[
|
|
{
|
|
"cardId": 5,
|
|
"type": "deck_file",
|
|
"data": "6DADC2C69F4.eml",
|
|
"lastModified": 1541529048,
|
|
"createdAt": 1541529048,
|
|
"createdBy": "admin",
|
|
"deletedAt": 0,
|
|
"extendedData": {
|
|
"filesize": 922258,
|
|
"mimetype": "application/octet-stream",
|
|
"info": {
|
|
"dirname": ".",
|
|
"basename": "6DADC2C69F4.eml",
|
|
"extension": "eml",
|
|
"filename": "6DADC2C69F4"
|
|
}
|
|
},
|
|
"id": 6
|
|
}
|
|
]
|
|
|
|
```
|
|
|
|
### GET /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Get the attachment file
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| ------------ | ------- | --------------------------------------------- |
|
|
| boardId | Integer | The id of the board the attachment belongs to |
|
|
| stackId | Integer | The id of the stack the attachment belongs to |
|
|
| cardId | Integer | The id of the card the attachment belongs to |
|
|
| attachmentId | Integer | The id of the attachment |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### POST /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments - Upload an attachment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------------- |
|
|
| boardId | Integer | The id of the board the attachment belongs to |
|
|
| stackId | Integer | The id of the stack the attachment belongs to |
|
|
| cardId | Integer | The id of the card the attachment belongs to |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------------- |
|
|
| type | String | The type of the attachement |
|
|
| file | Binary | File data to add as an attachment |
|
|
|
|
For now only `deck_file` is supported as an attachment type.
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Update an attachment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| ------------ | ------- | --------------------------------------------- |
|
|
| boardId | Integer | The id of the board the attachment belongs to |
|
|
| stackId | Integer | The id of the stack the attachment belongs to |
|
|
| cardId | Integer | The id of the card the attachment belongs to |
|
|
| attachmentId | Integer | The id of the attachment |
|
|
|
|
#### Request data
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------------- |
|
|
| type | String | The type of the attachement |
|
|
| file | Binary | File data to add as an attachment |
|
|
|
|
For now only `deck_file` is supported as an attachment type.
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### DELETE /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Delete an attachment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| ------------ | ------- | --------------------------------------------- |
|
|
| boardId | Integer | The id of the board the attachment belongs to |
|
|
| stackId | Integer | The id of the stack the attachment belongs to |
|
|
| cardId | Integer | The id of the card the attachment belongs to |
|
|
| attachmentId | Integer | The id of the attachment |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
### PUT /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}/restore - Resore a deleted attachment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| ------------ | ------- | --------------------------------------------- |
|
|
| boardId | Integer | The id of the board the attachment belongs to |
|
|
| stackId | Integer | The id of the stack the attachment belongs to |
|
|
| cardId | Integer | The id of the card the attachment belongs to |
|
|
| attachmentId | Integer | The id of the attachment |
|
|
|
|
#### Response
|
|
|
|
##### 200 Success
|
|
|
|
# OCS API
|
|
|
|
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
|
|
This has the benefit that both the web UI as well as external integrations can use the same API.
|
|
|
|
## Comments
|
|
|
|
### GET /cards/{cardId}/comments - List comments
|
|
|
|
#### Request parameters
|
|
|
|
string $cardId, int $limit = 20, int $offset = 0
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| cardId | Integer | The id of the card |
|
|
| limit | Integer | The maximum number of comments that should be returned, defaults to 20 |
|
|
| offset | Integer | The start offset used for pagination, defaults to 0 |
|
|
|
|
```
|
|
curl 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/cards/12/comments' \
|
|
-H 'Accept: application/json' -H 'OCS-APIRequest: true'
|
|
```
|
|
|
|
#### Response
|
|
|
|
A list of comments will be provided under the `ocs.data` key. If no or no more comments are available the list will be empty.
|
|
|
|
##### 200 Success
|
|
|
|
```
|
|
{
|
|
"ocs": {
|
|
"meta": {
|
|
"status": "ok",
|
|
"statuscode": 200,
|
|
"message": "OK"
|
|
},
|
|
"data": [
|
|
{
|
|
"id": 175,
|
|
"objectId": 12,
|
|
"message": "This is a comment with a mention to @alice",
|
|
"actorId": "admin",
|
|
"actorType": "users",
|
|
"actorDisplayName": "Administrator",
|
|
"creationDateTime": "2020-03-10T10:23:07+00:00",
|
|
"mentions": [
|
|
{
|
|
"mentionId": "alice",
|
|
"mentionType": "user",
|
|
"mentionDisplayName": "alice"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
|
|
|
|
```json
|
|
[
|
|
{
|
|
"id": 175,
|
|
"objectId": 12,
|
|
"message": "This is a comment with a mention to @alice",
|
|
"actorId": "admin",
|
|
"actorType": "users",
|
|
"actorDisplayName": "Administrator",
|
|
"creationDateTime": "2020-03-10T10:23:07+00:00",
|
|
"mentions": [
|
|
{
|
|
"mentionId": "alice",
|
|
"mentionType": "user",
|
|
"mentionDisplayName": "alice"
|
|
}
|
|
],
|
|
"replyTo": {
|
|
"id": 175,
|
|
"objectId": 12,
|
|
"message": "This is a comment with a mention to @alice",
|
|
"actorId": "admin",
|
|
"actorType": "users",
|
|
"actorDisplayName": "Administrator",
|
|
"creationDateTime": "2020-03-10T10:23:07+00:00",
|
|
"mentions": [
|
|
{
|
|
"mentionId": "alice",
|
|
"mentionType": "user",
|
|
"mentionDisplayName": "alice"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
```
|
|
|
|
|
|
### POST /cards/{cardId}/comments - Create a new comment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| cardId | Integer | The id of the card |
|
|
| message | String | The message of the comment, maximum length is limited to 1000 characters |
|
|
| parentId | Integer | _(optional)_ The start offset used for pagination, defaults to null |
|
|
|
|
Mentions will be parsed by the server. The server will return a list of mentions in the response to this request as shown below.
|
|
|
|
```
|
|
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/cards/12/comments' \
|
|
-H 'Accept: application/json' -H 'OCS-APIRequest: true'
|
|
-H 'Content-Type: application/json;charset=utf-8'
|
|
--data '{"message":"My message to @bob","parentId":null}'
|
|
```
|
|
|
|
#### Response
|
|
|
|
A list of comments will be provided under the `ocs.data` key. If no or no more comments are available the list will be empty.
|
|
|
|
##### 200 Success
|
|
|
|
```
|
|
{
|
|
"ocs": {
|
|
"meta": {
|
|
"status": "ok",
|
|
"statuscode": 200,
|
|
"message": "OK"
|
|
},
|
|
"data": {
|
|
"id": "177",
|
|
"objectId": "13",
|
|
"message": "My message to @bob",
|
|
"actorId": "admin",
|
|
"actorType": "users",
|
|
"actorDisplayName": "Administrator",
|
|
"creationDateTime": "2020-03-10T10:30:17+00:00",
|
|
"mentions": [
|
|
{
|
|
"mentionId": "bob",
|
|
"mentionType": "user",
|
|
"mentionDisplayName": "bob"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
##### 400 Bad request
|
|
|
|
A bad request response is returned if invalid input values are provided. The response message will contain details about which part was not valid.
|
|
|
|
##### 404 Not found
|
|
|
|
A not found response might be returned if:
|
|
- The card for the given cardId could not be found
|
|
- The parent comment could not be found
|
|
|
|
|
|
### PUT /cards/{cardId}/comments/{commentId} - Update a comment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| cardId | Integer | The id of the card |
|
|
| commentId | Integer | The id of the comment |
|
|
| message | String | The message of the comment, maximum length is limited to 1000 characters |
|
|
|
|
Mentions will be parsed by the server. The server will return a list of mentions in the response to this request as shown below.
|
|
|
|
Updating comments is limited to the current user being the same as the comment author specified in the `actorId` of the comment.
|
|
|
|
```
|
|
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/cards/12/comments' \
|
|
-H 'Accept: application/json' -H 'OCS-APIRequest: true'
|
|
-H 'Content-Type: application/json;charset=utf-8'
|
|
--data '{"message":"My message"}'
|
|
```
|
|
|
|
#### Response
|
|
|
|
A list of comments will be provided under the `ocs.data` key. If no or no more comments are available the list will be empty.
|
|
|
|
##### 200 Success
|
|
|
|
```
|
|
{
|
|
"ocs": {
|
|
"meta": {
|
|
"status": "ok",
|
|
"statuscode": 200,
|
|
"message": "OK"
|
|
},
|
|
"data": {
|
|
"id": "177",
|
|
"objectId": "13",
|
|
"message": "My message",
|
|
"actorId": "admin",
|
|
"actorType": "users",
|
|
"actorDisplayName": "Administrator",
|
|
"creationDateTime": "2020-03-10T10:30:17+00:00",
|
|
"mentions": []
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
##### 400 Bad request
|
|
|
|
A bad request response is returned if invalid input values are provided. The response message will contain details about which part was not valid.
|
|
|
|
##### 404 Not found
|
|
|
|
A not found response might be returned if:
|
|
- The card for the given cardId could not be found
|
|
- The comment could not be found
|
|
|
|
### DELETE /cards/{cardId}/comments/{commentId} - Delete a comment
|
|
|
|
#### Request parameters
|
|
|
|
| Parameter | Type | Description |
|
|
| --------- | ------- | --------------------------------------- |
|
|
| cardId | Integer | The id of the card |
|
|
| commentId | Integer | The id of the comment |
|
|
|
|
Deleting comments is limited to the current user being the same as the comment author specified in the `actorId` of the comment.
|
|
|
|
```
|
|
curl -X DELETE 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/cards/12/comments' \
|
|
-H 'Accept: application/json' -H 'OCS-APIRequest: true'
|
|
-H 'Content-Type: application/json;charset=utf-8'
|
|
```
|
|
|
|
#### Response
|
|
|
|
A list of comments will be provided under the `ocs.data` key. If no or no more comments are available the list will be empty.
|
|
|
|
##### 200 Success
|
|
|
|
```
|
|
{
|
|
"ocs": {
|
|
"meta": {
|
|
"status": "ok",
|
|
"statuscode": 200,
|
|
"message": "OK"
|
|
},
|
|
"data": []
|
|
}
|
|
}
|
|
```
|
|
|
|
##### 400 Bad request
|
|
|
|
A bad request response is returned if invalid input values are provided. The response message will contain details about which part was not valid.
|
|
|
|
##### 404 Not found
|
|
|
|
A not found response might be returned if:
|
|
- The card for the given cardId could not be found
|
|
- The comment could not be found
|