Introduction
Welcome to the Upwave API!
This API will give you the means to integrate Upwave into your projects. Typical use cases would be to list/find resources or create Cards/Comments in Upwave programatically.
If you have any problems or requests please file an issue in the Upwave API GitHub repo.
API Endpoints
Workspaces
https://api.upwave.io/workspaces/
This is the most likely the endpoint you are looking for. It will list all the Workspaces you have access to. Digging deeper into its structure, it will allow listing, modifying and creating entities such as Cards.
Notifications
https://api.upwave.io/notifications/
Personal notifications are listed by this endpoint. It only supports the GET method.
Auth
https://api.upwave.io/auth/
The auth endpoint can be used to check your authentication. It only support the GET method, and will return your account data.
Authentication
# Authenticate to any API ENDPOINT by adding the Authorization header
curl "https://api.upwave.io/auth/"
-H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
Make sure to replace the API Token with your own.
For clients to authenticate, the token key should be included in the Authorization HTTP header. The key should be prefixed by the string literal “Token”, with whitespace separating the two strings. For example:
Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
The token can be obtained by visiting your account settings. Click your profile image, select “Settings” and find your API-Key in the “Account” tab.
Restrictions
If a Workspace is linked to a social account (e.g. Google Workspace, Microsoft 365), your API requests may be rejected if you have not proven that you have successfully authenticated using that social provider.
Pagination
GET requests that return multiple items always comes paginated. The max pagination size is 100. Follow the “next” and “previous” URLs to turn the pages. The actual list of items are kept within the results block.
For most of the requests, a page_size
parameter can be issued to control the size.
Throttling
All API requests are throttled. This means you will receive a status code of 429 “Too Many Requests” if you exceed our limits. We have two quotas to control this; one per hour (for bursts) and one per day.
Access and permissions
Most entities in this API comes with an access property that describes the permissions you have on the specific object. The permissions are determined by what role you have in your membership.
The access property can have up to 5 permissions:
- can_admin
- can_modify
- can_comment
- can_invite
- can_invite_existing
Permission can_admin
The can_admin permission determines if you have the privileges of editing/administrating the object.
Permission can_modify
The can_modify permission tells if you have the privileges to create sub objects on the object. For example if the object is a Board entity you will be able to create Cards or change the Board structure objects like Colors, Columns or Rows.
Permission can_comment
The can_comment permission is only present at certain objects where commenting is available and tells whether or not the user is allowed to create comments.
Permission can_invite
The can_invite permission decides if the user is allowed to invite new users to the object. New users will become member of the object and any parent object.
Permission can_invite_existing
The can_invite_existing permission tells if the user is allowed to invite existing Workspace members to the object.
Workspaces
A Workspace is the highest entity in Upwave. All data that is not directly tied to a users personal account is stored here.
View a Workspace
GET https://api.upwave.io/workspaces/1337/
curl "https://api.upwave.io/workspaces/1337/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"id": 1,
"title": "Acme Corporation",
"logo": "https://path/to/image",
"access":{
"can_admin": true,
"can_modify": true,
"can_invite": true,
"can_invite_existing": true
},
"logo": "https://path/to/image",
"features": {
...
}
}
List Workspaces
GET https://api.upwave.io/workspaces/
curl "https://api.upwave.io/workspaces/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": None,
"previous": None,
"results": [
{
"id": 1337,
"title": "Acme Corporation",
"access":{
"can_admin": true,
"can_modify": true,
"can_invite": true,
"can_invite_existing": true
},
"logo": "https://path/to/image",
"features": {
...
}
}
]
}
Teams
A Team in Upwave is a container for Boards.
View a Team
GET https://api.upwave.io/workspaces/1337/teams/482/
curl "https://api.upwave.io/workspaces/1337/teams/482/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"id": 482,
"title": "R & D",
"hex_color": "#00796b",
"hex_text_color": "#ffffff",
"access":{
"can_admin": true,
"can_modify": true,
"can_invite": true,
"can_invite_existing": true
}
}
List Teams
GET https://api.upwave.io/workspaces/1337/teams/
curl "https://api.upwave.io/workspaces/1337/teams/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 482,
"title": "R & D",
"access":{
"can_admin": true,
"can_modify": true,
"can_invite": true,
"can_invite_existing": true
}
}
]
}
Boards
A Board is a container for Cards and will hold some type of structure where the Cards can be positioned. The structure-types includes; columns, rows, colors and boxes
View a Board
GET https://api.upwave.io/workspaces/1337/boards/65323/
curl "https://api.upwave.io/workspaces/1337/boards/65323/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"id": 65323,
"title": "Rocket driven hoverboard",
"purpose": "Development of the new rocket driven hoverboard",
"background_image_url": "https://path/to/image",
"background_image_thumb_url": "https://path/to/image",
"created_dt": "2019-04-13T10:33:20.581Z",
"rows_enabled": false,
"plugin_type": "classic",
"team": {
"id": 482,
"title": "R & D",
"hex_color": "#00796b",
"hex_text_color": "#ffffff"
},
"created_by_user": {
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
},
"columns": [
{
"id": 52431,
"name": "Todo",
"state": 1
},
{
"id": 52432,
"name": "In progress",
"state": 2
},
{
"id": 52433,
"name": "Completed",
"state": 3
},
],
"rows": [
{
"id": 23534,
"name": "Row-1"
}
],
"colors": [
{
"id": 34511,
"name": "High risk"
},
{
"id": 34512,
"name": "Low risk"
}
]
}
List Boards
GET https://api.upwave.io/workspaces/1337/boards/
curl "https://api.upwave.io/workspaces/1337/boards/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 65323,
"title": "Rocket driven hoverboard",
"purpose": "Development of the new rocket driven rollerblades",
"background_image_url": "https://path/to/image",
"background_image_thumb_url": "https://path/to/image",
"created_dt": "2019-04-13T10:33:20.581Z",
"rows_enabled": false,
"plugin_type": "classic",
"team": {
"id": 482,
"title": "Development",
"hex_color": "#00796b",
"hex_text_color": "#ffffff"
},
"created_by_user": {
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
}
}
]
}
This endpoint retrieves all the Boards you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Board listed first.
Filters
Parameter | Format | Description |
---|---|---|
q | string |
Search for Board title matching string |
ordering | field |
Order result-set by field (default “title”) |
page_size | integer |
Size of result-set per page |
Members
Workspace, Team and Board objects, the hierarchical access levels, can have members. A membership describes a users relation to an object using the role property. The role property in turn, gives a set of permissions to a user on an object.
List Members
GET https://api.upwave.io/workspaces/1337/members/
curl "https://api.upwave.io/workspaces/1337/members/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 263345,
"email": "coyote@example.com",
"role": "admin",
"is_disabled": false,
"is_active": true,
"lastname": "Coyote",
"firstname": "Wile E.",
"fullname": "Wile E. Coyote",
"avatar": "https://path/to/image",
"last_seen": "2019-05-21T11:37:41.870358Z",
"created_dt": "2019-01-5T18:09:12.332Z"
}
]
}
Listing members is always related to an object of type Workspace, Team or Board.
Listing Team members
Listing members on team with id 482:
GET https://api.upwave.io/workspaces/1337/teams/482/members/
Listing Board members
Listing members on board with id 65323:
GET https://api.upwave.io/workspaces/1337/boards/65323/members/
Filters
Parameter | Format | Description |
---|---|---|
disabled | boolean |
Include or exclude disabled members (only for Workspace members) |
role | string |
Show only members with this role |
q | string |
Search for member (email/name) matching string |
page_size | integer |
Size of result-set per page |
Cards
Upwave Cards are information carriers that can hold a description, comments, files and more.
View a Card
GET https://api.upwave.io/workspaces/1337/cards/611785/
This endpoint retrieves a specific Card.
# View card with id 611785
curl "https://api.upwave.io/workspaces/1337/cards/611785/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The cardlocation
block will differ depending on what kind of Board we are dealing with (plugin_type classic
vs. plugin_type canvas
).
For “classic” boards, the cardlocation will hold column/row information. For “canvas” boards, the cardlocation will hold container information and offset values.
The above command returns JSON structured like this:
{
"id": 611785,
"title": "Designing the engine",
"description": "<h1>Designing the engine</h1><p>Since the engine will run on Thorium, we need to ...</p>",
"cover_image_url": "https://path/to/image",
"state": 1,
"created_by_user": 263345,
"created_dt": "2019-03-18T14:13:44.921Z",
"finished_by_user": 263345,
"finished_dt": "2019-05-04T08:53:24.921Z",
"due_dt": "2019-05-05T12:00:00.921Z",
"archived_dt": null,
"watched": true,
"num_comments": 2,
"num_attachments": 1,
"board": {
"id": 65323,
"title": "Rocket driven hoverboard"
}
"progress": {
"completed": 0,
"total": 0
},
"color": {
"id": 52778,
"name": "High risk",
"hex_color": "#f080a2"
},
"assigned": [
{
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
}
],
"cardlocation": {
"column": {
"id": 52433,
"name": "Completed"
},
"row": {
"id": 23534,
"name": "Row-1"
}
}
}
List Cards
GET https://api.upwave.io/workspaces/1337/cards/
curl "https://api.upwave.io/workspaces/1337/cards/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 611785,
"title": "Designing the engine",
"description": "<h1>Designing the engine</h1><p>Since the engine will run on Thorium, we need to ...</p>",
"cover_image_url": "https://path/to/image",
"state": 3,
"created_by_user": 263345,
"created_dt": "2019-03-18T14:13:44.921Z",
"finished_by_user": 263345,
"finished_dt": "2019-05-04T08:53:24.921Z",
"due_dt": "2019-05-05T12:00:00.921Z",
"archived_dt": null,
"watched": true,
"num_comments": 2,
"num_attachments": 1,
"board": {
"id": 65323,
"title": "Rocket driven hoverboard"
}
"progress": {
"completed": 0,
"total": 0
},
"color": {
"id": 52778,
"name": "High risk",
"hex_color": "#f080a2"
},
"access":{
"can_admin": true,
"can_modify": true,
"can_invite": true,
"can_invite_existing": true
}
"assigned": [
{
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
}
]
}
]
}
This endpoint retrieves all the Cards you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Card listed first.
Filters
Parameter | Format | Description |
---|---|---|
created_by_user | integer |
Filter Cards on what user created them |
created_start | YYYY-MM-DD |
Filter Cards that were created on or after this date |
created_end | YYYY-MM-DD |
Filter Cards that were created on or before this date |
due_start | YYYY-MM-DD |
Filter Cards that have due_dt on or after this date |
due_end | YYYY-MM-DD |
Filter Cards that have due_dt on or before this date |
finished_start | YYYY-MM-DD |
Filter Cards that were completed on or after this date |
finished_end | YYYY-MM-DD |
Filter Cards that were completed on or before this date |
finished | boolean |
Filter Cards on whether they are completed or not |
state | integer |
Filter Cards based on their column state |
board | integer |
Filter Cards based on their parent Board |
assigned | 1,2,3 |
Filter Cards based on who are assigned |
q | string |
Search for string in Card title and description |
ordering | field |
Order result-set by field (default “-created”) |
page_size | integer |
Size of result-set per page |
The assigned
parameter supports comma separated list which will be OR'ed.
For example, to filter Cards that are assigned to either of user-account 1 or 2 you can pass in:
?assigned=1,2
The ordering parameter will order the result-set on the field given. Acceptable fields are:
“created”, “finished”, “due”. To specify a descending ordering direction set a minus in front e.g. ?ordering=-created
When filters are combined they will be AND'ed together. For example to list all Cards that were
completed in month May 2019, combine filters like so: ?finished_start=2019-05-1&finished_end=2019-05-31
Updating a Card
PATCH https://api.upwave.io/workspaces/1337/cards/611785/
# Updates Card 611785
curl https://api.upwave.io/workspaces/1337/cards/611785/
-H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
-H "Content-Type: application/json"
-X PATCH
-d '{"finished": null}'
The above command will uncomplete card 611785
Field | Format | Description |
---|---|---|
description | string |
Plain-text or HTML allowed |
due_dt | YYYY-MM-DD |
Updates the cards due_dt. Pass null to remove due_dt |
color | color-id |
Updates the color for this Card. Pass null to remove color |
archive | boolean |
If true the Card will be moved to the archive |
finished | boolean |
Toggle the completed state of a Card |
assigned | id-list |
Will assign this Card to those user accounts |
sort_before | integer |
Sorts this Card before given Card id (0 will sort last) |
watch | boolean |
Watch/Unwatch youself for commment notifications on this Card |
To update a Card you patch in a JSON object with the fields you’d like to update. For date fields, use UTC.
Watching a Card
When watching a Card a User will be subscribed to notifications for that Card. There are multiple ways to subscribe:
- click the “Watch card” function in the UI
- update the Card via API with {“watch”: true}
- create a Card and you are automatically subscribed
- create a Comment and you are automatically subscribed
- edit a Comment and you are automatically subscribed
- mentioning someone in a Comment will subscribe them
- assigning someone to a Card will subscribe them
- assigning someone to a TaskListItem will subscribe them
The only way to unwatch a Card is to update the Card with {“watch”: false} or use the UI function"Unwatch card".
Creating a new Card
POST https://api.upwave.io/workspaces/1337/cards/
# Creates a new Card on Board 65323
curl https://api.upwave.io/workspaces/1337/cards/
-H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
-H "Content-Type: application/json"
-X POST
-d '{"description": "<h1>Order titanium rims</h1>", "board": 65323}'
The new Card will be inserted last in the first column with state 1 (use update to change it). If no column with state 1 is found, it will be inserted in the first column.
Field | Format | Description |
---|---|---|
description* | string |
The content of the Card. May be HTML formatted |
board* | integer |
The id of the parent Board |
color | integer |
The id of the Color |
due_dt | YYYY-MM-DD |
Will set the due_dt of this card |
column | integer |
Will position the card in this Column (defaults to left-most Column with state 1 if exists else left-most Column) |
row | integer |
Will position the card in this Row (defaults to first Row) |
* required field
Deleting a Card
DELETE https://api.upwave.io/workspaces/1337/cards/611798/
# Deletes Card with id 611798
curl "https://api.upwave.io/workspaces/1337/cards/611798/"
-X DELETE
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
TaskListItems
TaskListItems is Upwaves way of handling sub-tasks.
List TaskListItems
GET https://api.upwave.io/workspaces/1337/tasklistitems/
# List TaskListItems on card 417445
curl "https://api.upwave.io/workspaces/1337/tasklistitems/?card=417445"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 3654331,
"description": "Book demo meeting",
"finished_dt": null,
"due_dt": null,
"sort_index": 0,
"card": {
"id": 611785,
"title": "Designing the engine"
},
"assigned": {
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
}
},
{
"id": 3654332,
"description": "Make purchasing order",
"finished_dt": "2019-05-18T11:53:41.402858Z",
"due_dt": "2020-09-17T06:41:57Z",
"sort_index": 1,
"card": {
"id": 611785,
"title": "Designing the engine"
},
"assigned": null
}
]
}
This endpoint lists the TaskListItems belonging to the Workspace 1337.
Filters
Parameter | Format | Description |
---|---|---|
finished | boolean |
Filter TaskListItems on whether they are completed or not |
card | integer |
Filter TaskListItems based on their parent Card |
board | integer |
Filter TaskListItems based on their parent Board |
assigned | integer |
Filter TaskListItems on assigned user being yourself |
due_start | YYYY-MM-DD |
Filter TaskListItems that have due_dt on or after this date |
due_end | YYYY-MM-DD |
Filter TaskListItems that have due_dt on or before this date |
Creating a new TaskListItem
POST https://api.upwave.io/workspaces/1337/tasklistitems/
# Creates a new TaskListItem on Card 417445
curl https://api.upwave.io/workspaces/1337/tasklistitems/
-H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
-H "Content-Type: application/json"
-X POST
-d '{"description": "Send item to assembler", "card": 417445}'
The new TaskListItem will be sorted last automatically (use update to change it).
Field | Format | Description |
---|---|---|
description* | string |
The description |
card* | integer |
Id of the parent Card |
assigned | integer |
Id of User to assign this TaskListItem |
finished | boolean |
Toggle the completed state |
due_dt | YYYY-MM-DD |
Sets the due_dt |
* required field
Updating a TaskListItem
PATCH https://api.upwave.io/workspaces/1337/tasklistitems/553113/
# Updates TaskListItem 553113
curl https://api.upwave.io/workspaces/1337/tasklistitems/553113/
-H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b'
-H "Content-Type: application/json"
-X PATCH
-d '{"finished": true}'
The above command will update the TaskListItem 553113, marking it as completed
Field | Type | Description |
---|---|---|
description | string |
Plain-text description |
assigned | integer |
Id of User to assign this TaskListItem. Pass null to remove |
finished | boolean |
Toggle the completed state of a TaskListItem |
due_dt | YYYY-MM-DD |
Updates the due_dt. Pass null to remove |
sort_before | integer |
Sorts this TaskListItem before given TaskListItem id. (0 will sort last) |
Deleting a TaskListItem
DELETE https://api.upwave.io/workspaces/1337/tasklistitems/553113/
# Deletes TaskListItem with id 553113
curl "https://api.upwave.io/workspaces/1337/tasklistitems/553113/"
-X DELETE
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
Comments
Comments are posted onto Cards by users. A Comment holds a text message and optionally a list of Attachments.
Mentioning
The content of a Comment may include mentions. If a user is mentioned in a Comment, that user will receive a notification and will also be added to the watch list for the Card.
Mention type | Format | Description |
---|---|---|
User | @{263346} | Mentions the user with id 263346 |
Group | @{board} | Will notify all members on the parent Board |
View a Comment
GET https://api.upwave.io/workspaces/1337/comments/687137/
# View comment with id 687137
curl "https://api.upwave.io/workspaces/1337/comments/687137/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"id": 687137,
"card": 611785,
"text": "Hi @{263346}, do you need any help on this task?",
"last_edited_dt": null,
"last_edited_by_user": null,
"created_dt": "2019-05-18T11:37:55.938664Z",
"created_by_user": {
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
},
"attachments": [
{
"id": 2529,
"comment": 687137,
"card": 611785,
"name": "Thorim Engine Specs",
"source": "link",
"url": "https://path/to/resource",
"preview_url": null,
"cover_url": null,
"file_size": 0,
}
],
"mentions": [
{
"id": 263346,
"email": "rascal@example.com",
"fullname": "Rascal",
"firstname": "Coyote",
"avatar": "https://path/to/image"
}
]
}
List Comments
GET https://api.upwave.io/workspaces/1337/comments/?card=611785
# List Comments on card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/?card=611785"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 687137,
"card": 611785,
"text": "Hi @{263346}, do you need any help on this task?",
"last_edited_dt": null,
"last_edited_by_user": null,
"created_dt": "2019-05-18T11:37:55.938664Z",
"created_by_user": {
"id": 263345,
"email": "coyote@example.com",
"fullname": "Wile E.",
"firstname": "Coyote",
"avatar": "https://path/to/image",
},
"attachments": [
{
"id": 2529,
"comment": 687137,
"card": 611785,
"name": "Thorim Engine Specs",
"source": "link",
"url": "https://path/to/resource",
"preview_url": null,
"cover_url": null,
"file_size": 0,
}
],
"mentions": [
{
"id": 263346,
"email": "rascal@example.com",
"fullname": "Rascal",
"firstname": "Coyote",
"avatar": "https://path/to/image"
}
]
}
]
}
Lists Comments you can access in a paginated fashion. They are ordered by creation date (created_dt) with the newest Comment listed first.
Filters
Parameter | Format | Description |
---|---|---|
created_by_user | integer |
Filter Comments on what user created them |
card | integer |
Filter Comments based on their parent Card |
board | integer |
Filter Comments based on their parent Board |
q | string |
Search for string in Comment text |
When filters are combined they will be AND'ed together.
For example to list all Comments created by user 263345 and which contains the word “specs”,
simply combine the filters like so: ?created_by_user=263345&q=specs
Updating a Comment
PATCH https://api.upwave.io/workspaces/1337/comments/687137/
# Update Comment with id 687137
curl "https://api.upwave.io/workspaces/1337/comments/687137/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
-X PATCH
-d '{"text": "..."}'
You are allowed to edit the text in a Comment. Doing so will also update the “last_edited_dt” and “last_edited_by_user”.
Field | format | Description |
---|---|---|
text | string |
The content of the Comment in plain text format |
Creating a new Comment
POST https://api.upwave.io/workspaces/1337/comments/
Create new Comments by passing in a text and which Card it should be attached to. A Comment may also carry Attachments.
# Creates a new Comment on Card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
-H "Content-Type: application/json"
-X POST
-d '{
"text": "Well done!",
"card": 611785
}'
# Creates a new Comment with both text and Attachment on Card with id 611785
curl "https://api.upwave.io/workspaces/1337/comments/"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
-H "Content-Type: application/json"
-X POST
-d '{
"text": "See attached url",
"attachments": [
{
"url": "https://example.com",
"name": "Example"
}
]
"card": 611785
}'
Currently the public API only support adding URL-Attachments to a Comment. To make the URL appear as a clickable image, you may set the “preview_url” attribute pointing to an image of your choice. The image URL needs to be behind HTTPS protocol and the image should be 200x200 pixels in size.
Argument | Description |
---|---|
card* | The parent Card |
text | The content of the Comment in plain text format |
attachments | A list of Attachments |
* required field
Deleting a Comment
DELETE https://api.upwave.io/workspaces/1337/comments/446119/
# Deletes Comment with id 10
curl "https://api.upwave.io/workspaces/1337/comments/446119/"
-X DELETE
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
Attachments
Attachments may accompany a Comment. An attachment can be either an uploaded file, a web page resource or a cloud hosted file.
Source | Description |
---|---|
uploadedfile | Indicates that the file was uploaded |
link | Indicates that the attachment is a web page or web resource |
gdrive | Indicates that the file is a Google Drive file |
dropbox | Indicates that the file is a Dropbox file |
onedrive | Indicates that the file is a Microsoft OneDrive file |
List Attachments
GET https://api.upwave.io/workspaces/1337/attachments/?card=611785
curl "https://api.upwave.io/workspaces/1337/attachments/?card=611785"
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 265422,
"comment": 446119,
"card": 611785,
"name": "Example",
"source": "link",
"url": "https://example.com",
"preview_url": null,
"cover_url": null,
"file_size": 0,
},
]
}
Filtering options:
Parameter | Format | Description |
---|---|---|
source | string |
Filter Attachments on source (see table above) |
*comment | integer |
Filter Attachments on their parent Comment |
*card | integer |
Filter Attachment based on their parent Card |
*board | integer |
Filter Attachment based on their parent Board |
* You must provide either a comment, card or board to filter on
File sizes will only be listed for files that are either uploaded directly (source is “uploadedfile”) or for Google Drive files that has a file size.
Deleting an Attachment
DELETE https://api.upwave.io/workspaces/1337/attachments/265422/
# Deletes attachment with id 265422
curl "https://api.upwave.io/workspaces/1337/attachments/3/"
-X DELETE
-H "Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
Although you will have to create Attachments using the Comment API, deletion of attachments is done using the Attachment API. When deleting an Attachment, the comment will be set as edited by you.
Errors
The Upwave API uses the following error codes:
Error Code | Meaning |
---|---|
401 | Unauthorized – Your API key is wrong or you are restricted due to social linking |
404 | Not Found – The specified resource could not be found |
429 | Too Many Requests – You’re asking for too much, Slow down! |
500 | Internal Server Error – We had a problem with our server. Try again later. |
503 | Service Unavailable – We’re temporarily offline for maintenance. Please try again later. |