Getting Started
If you have used Confluence Server REST APIs before then you are well on your way to using the Flow Board REST APIs. For those who have not used Confluence REST APIs, or for those who want a refresher, these resources will get you started:
Confluence REST API Documentation
Confluence Server REST API Examples
We like to use curl to exercise REST APIs from the command line. There are also many REST client GUI tools that may be easier than the command line for some scenarios. Insomnia is an example of one that we like.
When you think you are ready to try a Flow Board REST API invocation you can start with a simple Confluence REST API invocation to verify the plumbing is hooked up correctly. This will invoke a GET request to browse the content of your site:
curl --user <my username>:<my password> <http://<my> Base URL>/rest/api/content
base URL is something like: localhost:1990/confluence
username is something like: admin
When you start testing you usage of the Flow Board REST APIs and you are viewing the board in a browser to verify results remember to refresh the page after you operate on an object using the API from curl or your REST client tool. The refresh could be necessary to reload the JSON for the object you have modified.
Flow Board REST APIs
There is no REST API to create a Board.
Security
The REST APIs verify access is permitted to the resources being operated upon by the caller. Some APIs are admin-only and those are identified as such.
Version
Notice that there is an API version in the REST resource URLs. This is the version of the REST API, not the version of the Flow Board application. The REST API will work with any Flow Board version after 2.3.1, the version at the time this API document was created (Flow Board REST API version 1.0).
It is planned that the REST API will always be backwards compatible so that your custom solutions which use the REST API will continue to work for future versions of the API.
Board APIs
get Board
GET flowboard/1.0/boards/{boardId}
query parameters:
expand - string - comma delimited list of properties to expand
archived - boolean - default=false
download - boolean - default=false
format - string - default=json (other format support in the future like xml, xls, csv)
example:
curl --user <username>:<password> <http://<base URL>/rest/flowboard/1.0/boards/1
example output:
{"id":1,"name":"FB1","title":"Flow Board 1","description":"here is a description", "pageId":917508,"created":1578614191438,"updated":1586193242938, "lists":[{"id":5,"title":"My List 1","position":0,"created":1586193350939,"updated":1586193350939,"isArchived":false,"autoDueDateClear":false,"autoDueDateOffset":0,"autoDueDateOffsetUnits":null,"autoDueDateCompletion":"none","autoUnassign":null,"autoAssign":null, "cards":[{"id":9,"title":"card 1:1","hasDescription":true,"position":0,"due":0,"completed":false,"created":1586193355063,"updated":1586193380581,"isArchived":false,"commentsCount":1, "assignees":[{"id":"ff808081660a117f01660a129c2c0000","name":"admin","fullName":"admin","avatarUrl":"/images/icons/profilepics/default.svg"}]}]}], "activities":[]}
get Boards
GET <base URL>/rest/flowboard/1.0/boards
query parameters:
in - string - required: a comma delimited list of board IDs
expand - string - comma delimited list of properties to expand
archived - boolean - default=false
example:
curl --user <username>:<password> http://<base URL/rest/flowboard/1.0/boards?in=1,2
export Boards (admin)
GET <base URL>/rest/flowboard/1.0/admin/boards
Requires user to be admin.
query parameters:
download - boolean - default=true
format - string - default=json (other format support in the future like xml, xls, csv)
update Board (admin)
POST <base URL>/rest/flowboard/1.0/admin/boards/{boardId}
Requires user to be admin.
Limited functionality: can only update PROPERTIES of the board (name, title, pageId, description). See APIs for lists and cards to update content of a Board
example:
curl --user <username>:<password> -X POST -H "Content-Type: application/json" -d"{"pageId":123456}" <http://<base URL>/rest/flowboard/1.0/admin/boards/1
delete Board (admin)
DELETE <base URL>/rest/flowboard/1.0/admin/boards/{boardId}
Requires user to be admin.
List APIs
get List
GET <base URL>/rest/flowboard/1.0/lists/{listId}
create List
POST <base URL>/rest/flowboard/1.0/lists
update List
PUT <base URL>/rest/flowboard/1.0/lists/{listId}
order Lists
PUT <base URL>/rest/flowboard/1.0/lists/order
archive List
DELETE <base URL>/rest/flowboard/1.0/lists/{listId}
get archived Lists
GET<base URL>/rest/flowboard/1.0/boards/{boardId}/archived-lists
query parameters:
offset - int - default=0 pagination starting index
limit - int - default=10
unarchive List
POST <base URL>/rest/flowboard/1.0/boards/{boardId}/archived-lists/{listId}
delete archived List
DELETE <base URL>/rest/flowboard/1.0/boards/{boardId}/archived-lists/{listId}
Card APIs
get Card
GET <base URL>/rest/flowboard/1.0/cards/{cardId}
create Card
POST <base URL>/rest/flowboard/1.0/cards
update Card
PUT <base URL>/rest/flowboard/1.0/cards/{cardId}
archive Card
DELETE <base URL>/rest/flowboard/1.0/cards/{cardId}
order Cards
PUT <base URL>/rest/flowboard/1.0/cards/order
get archived Cards
GET <base URL>/rest/flowboard/1.0/boards/{boardId}/archived-cards
query parameters:
offset - int - default=0
limit - int - default=10
unarchive Card
POST <base URL>/rest/flowboard/1.0/boards/{boardId}/archived-cards/{cardId}
delete archived Card
DELETE <base URL>/rest/flowboard/1.0/boards/{boardId}/archived-cards/{cardId}
get Card Comments
use the get Card API
create Card Comment
POST <base URL>/rest/flowboard/1.0/cards/comments
The body of the post contains the card ID and the comment content.
The comment content can be a plain string (legacy style) or a serialized document (type=quill or type=string). Quill is the type of comment content that is created when user enters a comment using the UI
Examples:
content as a serialized quill document, like a comment created by the UI:
{"content":"{\"type\":\"quill\",\"content\":{\"ops\":[{\"insert\":\"test\\n\"}]}}", "cardId":3646}
content as a serialized plain text document:
{"content":"{\"type\":\"string\",\"content\":\"test\"}", "cardId":3646}
content as string (legacy for support of Flow Board app version 1):
{"content":"test","cardId":3646}
update Card Comment
PUT <base URL>/rest/flowboard/1.0/cards/comments
See the API for create Card Comment for syntax of the body
delete Card Comment
DELETE <base URL>/rest/flowboard/1.0/cards/comments/{commentId}
Get the comment ID with the get Card API